Всем привет
Есть графический компонент, изображающий круглую кнопку. Нужно добиться того, чтобы он реагировал на такие события, как: 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, когда указатель мыши выходит за пределы круга, обозначающего кнопку.
В чём может быть дело? Подскажите, пожалуйста, в чём моя ошибка. Заранее благодарен за Ваше внимание
