![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetTextExtentPoint [D5, WinXP]
GanibalLector © (2004-11-26 02:23:00)Разбираюсь с ф-цией GetTextExtentPoint.Так вот,предположим мне нужно вычислить высоту\ширину некоторого текста.
Делаю так :
var I: Integer;Buffer: array[0..51] of Char;QQ:TSize;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Form1.Canvas.Handle, Buffer, 52, QQ);
Memo1.Lines.Add(inttostr(QQ.cx));
Memo1.Lines.Add(inttostr(QQ.cy));
Тут все понятно.Дальше...предположим мне необходимо вычислить высоту\ширину некоторого текста на TPanel,которая имеет Font отличный от TForm.И что же делать???Ведь TPanel канваса не имеет !!! Насколько я понимаю,необходимо TForm присвоить Font моей TPanel,потом вызвать GetTextExtentPoint,а затем обратно форме присвоить свой Font. Прав ли я? ИМХО,довольно муторно...
GanibalLector (2004-11-26 02:50:00) [1]Спасибо.
GuAV (2004-11-26 02:47:00) [2]GanibalLector © (26.11.04 2:44) [3]
Не понял...Что я должен передать первым параметром???
Куда ??
type
TCustomControlFriend = class(TCustomControl);
procedure TForm1.FormCreate(Sender: TObject);
begin
with TCustomControlFriend(Panel1).Canvas.TextExtent('Blah') do
ShowMessageFmt('%dx%d',[cx, cy]);
end;
GanibalLector (2004-11-26 02:44:00) [3]2 GuAV
Не понял...Что я должен передать первым параметром???
> Canvas.TextExtent
Даже если так,то каким,собственно,образом выйти на канвас панели,если она в protected?
GuAV (2004-11-26 02:40:00) [4]GanibalLector © (26.11.04 2:23)
Ведь TPanel канваса не имеет !!!
Имеет. только в protected унаследованный от TCustomControl.
type
TCustomControlFriend = class(TCustomControl)
PS: Canvas.TextExtent;
GanibalLector (2004-11-26 02:26:00) [5]И еще
GetTextExtentPoint is provided for compatibility with 16-bit versions of Windows. Win32-based applications should call the GetTextExtentPoint32function, which provides more accurate results.
Но ведь и GetTextExtentPoint чудесно работает в Win32.Как так?Где правда?