Вниз
Скачать: CL | DM;

Не пропадает Hint   Найти похожие ветки 

← →
Alex_C   (2008-12-17 13:04) [0]

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


← →
{RASkov} ©   (2008-12-17 13:14) [1]

> [0] Alex_C   (17.12.08 13:04)

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


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

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


← →
Alex_C   (2008-12-17 15:08) [3]

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

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 окна, которое вызывало хинт.



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.008 c
2-1229694301
Дмитрий
2008-12-19 16:45
2009.02.01
Передать события в качестве параметров


15-1228660225
Клаус
2008-12-07 17:30
2009.02.01
Объединение таблиц.


3-1213956787
keymaster
2008-06-20 14:13
2009.02.01
Проблема с ODAC при работе с Oracle Instant Client


1-1206708636
Jolik
2008-03-28 15:50
2009.02.01
какие накладные расходы у try except end?


3-1214304824
umbra
2008-06-24 14:53
2009.02.01
как правильно перенести базу?




   Наверх