Главная страница
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.023 c
14-1581
Ketmar
2003-08-13 21:04
2003.09.01
гениальное послание Варраксу. я чуть пивом не поперхнулся...


6-1529
Benedict
2003-06-22 17:56
2003.09.01
Перехват клика по ссылке в браузере?


14-1655
Knight
2003-08-12 10:02
2003.09.01
Все упали ниц.... перед супер-пупер програмером... :))))))


1-1412
gsus
2003-08-13 20:22
2003.09.01
QuickReport


14-1570
Дремучий
2003-08-11 15:29
2003.09.01
Нужны учебники в електронном виде!