![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Hint'ы
Eug201 © (2003-08-09 00:13:00)Подскажите, как сделать чтоб отображались хинты. Нужен какой-то модуль/компонент? На форме свойство ShowHint в True не встает.
Gandalf (2003-08-23 15:25:00) [1]Для того что MHToolTip заработали надо (Надо хоть комментарии в Demo читать):
1) Добавлять KOLMHToolTip нельзя, поскольку используется пристыковка
модуля KOLMHToolTip (потому модуль выглядит так странно, местами просто несвязанные куски кода)
в текст модуля KOL.pas посредством прямого
включения {$I} и условной компиляцией. Потому необходимо указать в опциях проекта, в
кондикцияхConditionals=KOL_MCK; USE_MHTOOLTIPзамечу, что в Деме это уже сделано.
2) Далее необходимо, чтобы код прикомпилировался, для этого надо Rebuild All Projects, а потом
Recompile All Projects. Все теперь у нас "новый" KOL с поддержкой Hint'ов.
3) Далее можно работать как прежде и наслаждаться Hint'ами.
Если всеже не пашет.
Попробуй сам KOL.pas открыть и
вставить в начало {$DEFINE USE_MHTOOLTIP}, потом сохрани, закрой, и
перекомпилируй (например пересобрав MCK из пакета), железный метод, но
не очень изящный (надо KOL.pas править)!
Не забываем пути прописывать.
SPeller (2003-08-11 08:22:00) [2]Создавай тултип вручную через апи и делай с ним всё что захочешь.
JanvVlad (2003-08-10 19:17:00) [3]Аналогичная проблема с MHToolTip под Delphi 6.
Кстати, никто не знает, как переместить Tooltip, ну, скажем, в верхний левый угол и показать его?
Eug201 (2003-08-10 08:48:00) [4]Помогите, please, с MHToolTip. Не могу скомпилировать. Требует MCKMHToolTip.pas (в архиве нет). А насчет KOLMHToolTip.pas говорит "Unit expected, but end of file found". Может архив поврежден? Хотя распаковался без ошибок.
Dimaxx (2003-08-10 00:07:00) [5]2 Eug201: Попробуй еще вместо HInstance поставить ноль.
Dimaxx (2003-08-10 00:03:00) [6]У меня дельфи 5 + ХР и в любом месте комбика хинт нормально отображается. И не отображается несколько раз, а только один. Для того, чтобы он снова появился, нужно убрать мышь с компонента, а потом снова вернуть. Тогда появится.
Eug201 (2003-08-09 16:19:00) [7]Насчет компонента пока разбираюсь - проблема с установкой (Delphi7).
А вот насчет кода от Dimaxx. Все работает, thanks!! Но, не работает TKOLComboBox. Точнее хинт появляется только тогда, когда мышь над стрелочкой выбора, а когда над полем ввода - тишина :( В чем может быть причина? Delphi 7/XP. И еще, я сколько не читал MSDN - какой-то он с Delphi дет куцый - не смог представить картины в целом. Меня просто интересует метод Add. Проблема в том: если мышью под]ехать к компоненnу и подождать, хинт висит, прячется, и снова появляется несколько раз. Видимо столько, сколько раз отработало сообщение TTM_ADDTOOL. Это ведь немножко неправильно?
SPeller (2003-08-09 08:16:00) [8]Есть компонент MHToolTip, на этом сайте лежит.
Dimaxx (2003-08-09 00:24:00) [9]Да, забыл!
1) Массив делаем размером по количеству контролов с хинтами.
2) На событие OnMouseMove записать код один раз и повестить его на все контролы сразу.
Dimaxx (2003-08-09 00:21:00) [10]Самый простой способ без компонентов:
1) Задаем переменные
var
HintWND: HWND;
TI: TToolInfo;
Tips: array[0..3] of PChar = (
'Hint1',
'Hint2',
'Hint3',
'Hint4');
2) В свойство TAG компонентов, у которых нужен хинт вписываем порядковые номера (им соответствуют номера в массиве Tips)
3) При создании формы пишем:
HintWnd:=CreateWindowEx(0,TOOLTIPS_CLASS,nil,0,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,Applet.GetWindowHandle,0,HInstance,nil);
4) На OnMouseMove компонента вешаем:
with TI do
begin
cbSize:=sizeof(TI);
uFlags:=TTF_SUBCLASS;
hWnd:=Sender.GetWindowHandle;
uID:=0;
Rect.Left:=Sender.ClientRect.Left;
Rect.Top:=Sender.ClientRect.Top;
Rect.Right:=Sender.ClientRect.Right;
Rect.Bottom:=Sender.ClientRect.Bottom;
hInst:=HInstance;
lpszText:=Tips[Sender.Tag];
end;
SendMessage(HintWnd,TTM_ADDTOOL,0,DWORD(@TI));
5) На событие формы OnDestroy льем:
DestroyWindow(HintWnd);
Все! Компилим, запускаем и пользуемся!