2010-08-21 42 views
1

我想了解Delphi 2007中的ControlStyle属性,但我无法掌握csClickEventscsCaptureMouse属性。究竟是什么csClickEvents和csCaptureMouse?

根据规范,csCaptureMouse在单击时控制捕捉鼠标事件,而csClickEvents使控件能够接收和回应鼠标点击。它也明确提到TButton不会继承这个属性(我已经检查了源代码:事实的确如此)。

csCaptureMousecsClickEvents究竟做了什么,有什么区别?谢谢你的回答。

回答

4

csCaptureMouse表示例如,即使鼠标被释放到组件边界外,组件也会接收到MouseUp事件(点击组件后);

csClickEvents表示该组件生成OnClick事件。这些选项有所不同。


关于为什么TButton的不包括csClickEvents - 答案是:

因为通过它 所获得的点击为一个TButton的机制是 不同 - 它从一个BN_CLICKED窗口产生点击事件 消息, 这是窗口方式处理 按钮,而不是通过 WML_BUTTONDOWN,这是一个TControl的默认 。可能现在你已经在 中包含了csClickEvents那 你会得到两个点击为每个鼠标 点击,或者一个会丢掉 ,但是你可能仍然会得到 奇怪的行为。我还没有深入探索 深入知道 转弯csClickEvents的陷阱,但我 不会承担它将是普通的 航行。

我发现在New Zealand DUG archive

+0

感谢这个答案。但是,如果TButton没有csClickEvents属性,它为什么会有一个工作的OnClick事件? – Martijn 2010-08-21 09:05:39

+0

伟大的答案,这使得一切都清楚。谢谢! – Martijn 2010-08-21 11:20:36