Delphi XE2 CMMouseLeave未在TCustomControl上触发

时间:2013-12-11 17:23:21

标签: delphi delphi-xe2

在Delphi 5中,这曾经起作用。我有一个来自TCustomControl的组件,我实现了cmmouseleave消息:

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

现在,如果我只是将鼠标移到控件上,则会触发消息,但如果我在按住鼠标左键的同时移动鼠标,则不会触发相同的消息。 AFAIK我没有调用begindrag方法,并且dragmode设置为手动。 什么可能发生的任何线索?

1 个答案:

答案 0 :(得分:6)

按左按钮时捕获鼠标。因此,即使鼠标在控件之外,控件也会接收鼠标移动消息(WM_MOUSEMOVE)。释放按钮时,它将收到鼠标离开消息。这也应该是D5的情况。

如果您不希望捕获鼠标以回复csCaptureMouse,则可以从ControlStyle中排除WM_LBUTTONDOWN