Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Подскажите по использованию DrawText   Найти похожие ветки 

 
Dan   (2003-07-03 16:36) [0]

Использую DrawText для определения высоты выводимого текста так, как, например, сделано в Dialogs.
SetRect(R, 0, 0, SomeWidth, 0);
DrawText(Canvas.Handle, PChar(val), Length(val), R,
( при реальном рисовании) Использую DrawText для определения высоты выводимого текста так, как, например, сделано в Dialogs.
SetRect(R, 0, 0, SomeWidth, 0);
DrawText(Canvas.Handle, PChar(val), Length(val), R,
DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK);

В некоторых случаях, несмотря на то, что строка не влезает в указанную ширину, высота текста остается высотой одной строки. Хотя потом (при реальном рисовании) тот же DrawText выводит эту же строку в две строки.
С чем это может быть связано?


 
AlexRush ©   (2003-07-03 16:55) [1]

Приведи код


 
Dan   (2003-07-03 17:07) [2]

Код определения высоты см. в вопросе.
Код собственно рисования
SetRect(R, ALeft, ATop, ARight, ABottom);
( Canvas.Handle, PChar(s) Код определения высоты см. в вопросе.
Код собственно рисования
SetRect(R, ALeft, ATop, ARight, ABottom);
DrawText(Canvas.Handle, PChar(s), Length(s), R, DT_WORDBREAK);


 
AlexRush ©   (2003-07-03 17:33) [3]

Да все нормально, все работает:
// Рисование прямоугольников сделано для наглядности

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
textRect :TRECT;
strVal :string;
public

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SetRect(textRECT, 10, 10, 30, 10);
DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT,
( textRect)
Да все нормально, все работает:
// Рисование прямоугольников сделано для наглядности

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
textRect :TRECT;
strVal :string;
public

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SetRect(textRECT, 10, 10, 30, 10);
DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT,
DT_EXPANDTABS or DT_CALCRECT or DT_WORDBREAK);

Canvas.Brush.Color:=clWhite;
Canvas.Pen.Color:=clBlue;
Canvas.Rectangle(textRect);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Canvas.Brush.Color:=clWhite;
Canvas.Pen.Color:=clRed;
Canvas.Rectangle(textRect);

DrawText(Canvas.Handle, PChar(strVal), Length(strVal), textRECT, DT_WORDBREAK);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
strVal:="this is a toooooo (very very) large string to draw it in this rect!";
end;

end.


 
AlexRush ©   (2003-07-03 17:35) [4]

Тестирование: сначала жмешь на батон1, потом - на батон2


 
Dan   (2003-07-03 18:09) [5]

Ничего не понимаю!
Этот пример делает принципиально все то же самое, что и у меня.
Я таким образом пытаюсь подгонять высоту строк StringGrid для вывода текста без обрезания.

НАШЕЛ!
Если тупить, то по-крупному.
При рассчете ширины шрифт в StringGrid нормальный. А при выводе - жирный. Вот он и не влезает!!!


 
AlexRush ©   (2003-07-03 18:21) [6]

А... :)



Страницы: 1 вся ветка

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
1-1447
kuchumovkv
2003-08-18 19:18
2003.09.01
Поле memo


14-1558
sniknik
2003-08-11 22:59
2003.09.01
Linux C/C++ with IDE (???)


1-1427
BOA_KAA
2003-08-19 12:38
2003.09.01
Размер класса


3-1321
ED
2003-08-08 11:47
2003.09.01
Как вывести только повторяющиеся записи в Firebird???


1-1381
Dimon
2003-08-16 19:27
2003.09.01
Синтаксис С++:(seen_eap |= PW_MESSAGE); Как это выгл. в Delphi??