Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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);

Все! Компилим, запускаем и пользуемся!


Наверх

Титульная страница Поиск, карта сайта Написать письмо