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

Вниз

Размер окна всплывающей подсказки   Найти похожие ветки 

 
Def   (2004-08-04 22:03) [0]

Можно ли, зная текст, который будет выводится в подсказке, определить ее размеры (особенно хотелось бы высоту)?


 
Def   (2004-08-04 22:32) [1]

Сейчас использую

 Function GetHintRect(HintWindow:hwnd;Text:string):TRect;
 begin
 Result := Types.Rect(0, 0, SendMessage(HintWnd, TTM_GETMAXTIPWIDTH, 0, 0), 0);
 DrawText(GetWindowDC(HintWindow), PChar(Text), -1, Result, DT_CALCRECT or
          DT_LEFT or DT_WORDBREAK or DT_NOPREFIX);
 Inc(Result.Right, 6);
 Inc(Result.Bottom, 2);
 end;


Но для многострочных подсказок размер считается неправильно - чем больше строк, тем неправильнее.


 
Timedrops ©   (2004-08-04 22:50) [2]

Для получения размера текста надо вызвать API GetTextMetrics - она возвращает инфо о шрифте (TTextMetric).
И о его высоте, начертании, и межстрочном интервале кстати тоже.


 
Ricks ©   (2004-08-05 00:10) [3]

Твой вариант будет кушать очень много памяти. Вот так правильнее:

Function GetHintRect(HintWindow:hwnd;Text:string):TRect;
var DC : HDC;
begin
 Result := Types.Rect(0, 0, SendMessage(HintWnd, TTM_GETMAXTIPWIDTH, 0, 0), 0);
DC:=GetWindowDC(HintWindow);
try
 DrawText(DC, PChar(Text), -1, Result, DT_CALCRECT or
           DT_LEFT or DT_WORDBREAK or DT_NOPREFIX);
 Inc(Result.Right, 6);
  Inc(Result.Bottom, 2);
finally
 ReleaseDC(HintWindow, DC);
end;
end;


 
Ajax ©   (2004-08-05 22:59) [4]

>[3] Ricks
Мой код был взят из VCL  с небольшой правкой. Так вот, он работает не вполне верно. Утечка памяти - это конечно плохо, но я о другом спрашиваю. Как избавиться от прибавления по паре пикселей на каждую строчку подсказки?


 
Ajax ©   (2004-08-05 23:00) [5]

Прошу прощения за разные ники - воеменами забываю пароль.



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
1-1093897901
Ермак
2004-08-31 00:31
2004.09.19
Индексация текста


4-1091703726
MakNik
2004-08-05 15:02
2004.09.19
Версия программы


4-1091516920
sohat
2004-08-03 11:08
2004.09.19
Как определить наименование текущего приложения?


1-1094547953
Иван_1
2004-09-07 13:05
2004.09.19
Чтение Word овского файла (версии Word от 97 и выше)


1-1094187578
Anhonio
2004-09-03 08:59
2004.09.19
Delphi & Scaner