Delphi XE2 CMMouseLeave не запускается на TCustomControl

В Delphi 5 это работало. У меня есть компонент, который происходит от TCustomControl, и я реализую сообщение cmmouseleave:

procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

Теперь, если я просто перемещаю мышь над элементом управления, сообщение сработает, но если я перемещаю мышь, удерживая левую кнопку мыши нажатой, то это сообщение не сработает. AFAIK Я не вызывал метод begindrag, а режим перетаскивания установлен на ручной. Любой ключ к тому, что может происходить?

1 ответ

Решение

Мышь захватывается при нажатии левой кнопки. Следовательно, элемент управления будет получать сообщения о перемещении мыши (WM_MOUSEMOVE), даже если мышь находится вне контроля. Когда кнопка отпущена, она получит сообщение о выходе из мыши. Это также должно быть в случае с D5.

Вы можете исключить csCaptureMouse от ControlStyle если вы не хотите, чтобы мышь была захвачена в ответ на WM_LBUTTONDOWN,

Другие вопросы по тегам