2010-08-21 47 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