Delphi 在设计时间内捕获鼠标进入/离开

Delphi 在设计时间内捕获鼠标进入/离开,delphi,Delphi,我在设计时为TCustomPanel组件捕获鼠标事件时遇到了一些困难。我已经试过了 CMDesignHitTest返回消息。结果:=1。当鼠标进入组件时,它工作正常,但无法感知鼠标何时离开。我也尝试过处理组件样式,但这根本不起作用。我了解(从我在Web上收集的信息)在CMDesignHitTest事件上返回Message.Result:=1后,组件会捕获所有鼠标事件,但它似乎不适用于标准的OnMouseCenter/OnMouseLeave事件。我想知道是否有人能给我一个关于这个问题的工作样本。

我在设计时为TCustomPanel组件捕获鼠标事件时遇到了一些困难。我已经试过了
CMDesignHitTest
返回
消息。结果:=1
。当鼠标进入组件时,它工作正常,但无法感知鼠标何时离开。我也尝试过处理组件样式,但这根本不起作用。我了解(从我在Web上收集的信息)在
CMDesignHitTest
事件上返回
Message.Result:=1
后,组件会捕获所有鼠标事件,但它似乎不适用于标准的
OnMouseCenter
/
OnMouseLeave
事件。我想知道是否有人能给我一个关于这个问题的工作样本。我提前非常感谢。

作为一种测试,尝试为
WM\u NCHITTEST
消息添加一个处理程序,并确保其
消息。当
ComponentState
属性中启用了
csDesigning
标志时,Result
被设置为
HTCLIENT
。我在网上看到一些文章,建议需要
HTCLIENT
才能让
CM\u designhitest
正常工作。

作为组件开发人员,无论如何都不应该使用标准的OnMouseEnter和onmouseeve事件。这些是为组件用户准备的,在设计时,它们将连接到IDE组成的特殊占位符,以引用用户代码中的函数。所以,忘掉事件吧:在设计时,您试图在组件中检测到哪些特定消息?您并没有说您正在使用哪个版本的Delphi。在旧版本中,
CM_MOUSELEAVE
已损坏,即使
CM_MOUSEENTER
工作正常,也无法始终发布。在更高版本中,VCL调用
TrackMouseEvent()
接收
WM\u MOUSELEAVE
消息以帮助触发
CM\u MOUSELEAVE
消息,从而解决了这一问题。