Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "KOL";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-24354
Александр365
2003-08-15 22:58
2003.09.08
Сообщение об ошибке


1-24437
grusty
2003-08-25 17:56
2003.09.08
Вставка текста в определенное место RichEdit


3-24381
Alexei Sviridov
2003-08-15 02:31
2003.09.08
DBGrid


4-24751
Nikkk
2003-07-07 12:22
2003.09.08
IsWindowVisible


4-24735
МитяЙ2
2003-07-07 04:31
2003.09.08
Манипулирование с заголовком формы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский