![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем привет
![]() Есть графический компонент, изображающий круглую кнопку. Нужно добиться того, чтобы он реагировал на такие события, как: 1) нажатие левой кнопки мыши, 2) отпускание той же кнопки, 3) наведение и 4) снятие указателя. Код:
procedure DoMouseOver(var Msg: TWMMouse); message WM_MOUSEMOVE; procedure DoMouseLeft(var Msg: TWMMouse); message WM_MOUSELEAVE; procedure DoMouseDown(var Msg: TWMMouse); message WM_LBUTTONDOWN; procedure DoMouseUp(var Msg: TWMMouse); message WM_LBUTTONUP; В процедуре DoMouseLeft проверяется, находится ли указатель мыши в пределах окружности - контура кнопки: Код:
if ((sqrt(sqr(Width div 2 - Msg.XPos) + sqr(Height div 2 - Msg.YPos))) <= Width div 2) then {... указатель находится в пределах контура} else {... "притворяемся", что указатель не наведён на кнопку} При тестировании программы обнаружил, что кнопка вообще не реагирует на сообщение WM_MOUSELEAVE, ЗАТО прекрасно слушается сообщения WM_MOUSEMOVE, когда указатель мыши выходит за пределы круга, обозначающего кнопку. В чём может быть дело? Подскажите, пожалуйста, в чём моя ошибка. Заранее благодарен за Ваше внимание ![]() |