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

Вниз

Как   Найти похожие ветки 

 
mike.dld ©   (2002-12-31 14:57) [0]

Хочу реализовать поддержку MouseHover и MouseLeave и KOL-компоненте, но ничего не получается. Скажите, пожалуйста, как это сделать.


 
Gandalf   (2002-12-31 16:33) [1]

Уже все реализованно, только они называются MouseEnter и MouseLeave.

С Новым Годом!


 
mike.dld ©   (2002-12-31 16:45) [2]

Спасибо, но я не про то. Я хочу по-разному его отрисовывать в зависимости от того, над ним указатель или нет. Пробовал в MouseInControl, но чего-то не работает.


 
Gandalf   (2002-12-31 21:15) [3]

Сделай флаг Hover, и при MouseEnter Hover:=True, MouseLeave Hover:=False; Можешь использовать в самой отрисовке WindowFromPoint(Тут позиция мыши), если Handle совпадет, то значит мышь внутри.


 
mike.dld ©   (2003-01-02 15:42) [4]

А, с этим проблем нет. Как сообщить компоненту, что он должен обновиться?


 
Gandalf   (2003-01-02 16:34) [5]


> А, с этим проблем нет. Как сообщить компоненту, что он должен
> обновиться?


Пошли сообщение WM_PAINT, или там скажем InvalidateRect, UpdateWindow или свое пошли WM_PLEASEREPAINT.


 
mike.dld ©   (2003-01-02 19:15) [6]

Слушайте, я не знаю в чём дело, может надо какие-нибудь особые параметры устанавливать для компонента при создании или ещё что-нибудь, но сколько не пробую, Виндовс совсем не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER, WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE всё в порядке.
Принимаю их в WndProc case"ом:

var d: PMyData;
...
case Msg.message of
...
WM_MOUSEHOVER: begin
d := Pointer(Clt.CustomData);
d.fMouseIn := true;
( WM_PAINT,0,0)
Слушайте, я не знаю в чём дело, может надо какие-нибудь особые параметры устанавливать для компонента при создании или ещё что-нибудь, но сколько не пробую, Виндовс совсем не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER, WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE всё в порядке.
Принимаю их в WndProc case"ом:

var d: PMyData;
...
case Msg.message of
...
WM_MOUSEHOVER: begin
d := Pointer(Clt.CustomData);
d.fMouseIn := true;
Ctl.Perform(WM_PAINT,0,0);
end;
...
end;


 
Gandalf   (2003-01-02 22:54) [7]


> Слушайте, я не знаю в чём дело, может надо какие-нибудь
> особые параметры устанавливать для компонента при создании
> или ещё что-нибудь, но сколько не пробую, Виндовс совсем
> не хочет передавать моему контролу сообщения типа WM_MOUSEHOVER,
> WM_MOUSELEAVE, WM_LBUTTONDOWN и WM_LBUTTONUP, хотя с WM_MOUSEMOVE
> всё в порядке.


Насчет WM_LBUTTONDOWN и WM_LBUTTONUP - незнаю, по твоему коду не понять. А вот насчет Ховера - ты прав, особые, но параметры - а реализация, не хочу вдаваться в детали - к KOL это отношения не имеет, да поздно уже. Посмотри WndProcMouseEnterLeave, почитай TrackMouseEvent и можешь обратиться в WinAPI - без обид!
ЗЫ: В итоге тебе надо TrackMouseEvent вызывать при движении мыши - а она, если так случилось, сгенерит сообщения (Hower, Leave) - по ситуации с момента прошлого вызова функции TrackMouseEvent. Просто так тебе эти сообщения никто не пошлет (разве, что ты сам).



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
1-24500
pshik
2003-08-27 12:29
2003.09.08
как в Excel-е (ясно что через Delphi) объеденять ячейки????!!!


7-24722
Dmitriy M. Volkov
2003-06-24 13:51
2003.09.08
Замена стандартного taskmgr в WinXP


4-24743
VD601
2003-07-07 16:34
2003.09.08
Кто ловит WM_QUIT?


7-24727
укы
2003-06-25 08:17
2003.09.08
Как отключить защиту файлов Windows?


1-24507
Zheks
2003-08-27 10:25
2003.09.08
Рисование на Image