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

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

Не пропадает Hint [D7, XP]


Alex_C ©   (2008-12-17 13:04:00) 

Проблема: нужно показать хинт, когда мышь находится на определенной области формы, и убрать его, когда она с этой области уходит. Вроде все просто: на MouseMove анализируем положение мыши и показываем или убираем хинт через создание или удаление THintWindow. Однако если эта обасть формы оказывается на границе формы, при выведеннии мыши за границы формы хинт не пропадает до тех пор, пока снова мышкой не наведешь на форму. Как от этого избавиться?


Alex_C   (2008-12-17 15:08:00) [1]

В общем не знаю на сколько это верно, но решилось все таймером:

procedure TMainForm.HintCloseTimerTimer(Sender: TObject);
var
 WinControl: TWinControl;
 WinHWND: HWND;
 Pnt: TPoint;
begin
 GetCursorPos(Pnt);
 WinHWND := WindowFromPoint(Pnt);
 WinControl := FindControl(WinHWND);
 if (WinControl = nil) or (GetHintOwnerHandle <> WinControl.Handle) then
   CloseHintHx;
end;

Где - GetHintOwnerHandle - возвращает Handle окна, которое вызывало хинт.


Alex_C   (2008-12-17 14:17:00) [2]

У меня несколько таких форм...
А каких то других идей нет?


{RASkov}   (2008-12-17 13:14:00) [3]

> [0] Alex_C   (17.12.08 13:04)

Можно в таймере проверять положение мыши, и если "не в форме", то убирать хинт....
Можно реагировать на CM_MOUSEENTER и CM_MOUSELEAVE, но они "глючат"...


Наверх

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