Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Вниз

Подскажите по использованию 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
14-1582
Antik
2003-08-13 11:12
2003.09.01
расширения файлов


14-1626
Layner
2003-08-13 14:11
2003.09.01
Кто защищался от W32.Blaster.Worm, и скачал заплату с сайта


3-1340
Tahion2
2003-08-11 13:01
2003.09.01
Как в ClientDataSet сохранить начальный порядок следования записе


7-1684
Zero Ice
2003-06-15 23:52
2003.09.01
AGP/PCI


3-1319
styopkin
2003-08-08 12:14
2003.09.01
MIDAS, DCOM





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский