有没有办法检测表单是否被点击?

rho*_*ody 2 delphi mouseclick-event onmouseclick delphi-xe

德尔福XE

有没有办法检测表单是否收到鼠标点击?表单中的OnClick事件仅在表单的空白部分触发.任何具有控件的部件都不会响应.

Dav*_*nan 6

您需要过滤排队的消息以检测全局级别的鼠标事件.

  1. 添加处理程序TApplication.OnMessage.
  2. 听取WM_MOUSEDOWNWM_MOUSEUP按照您的意愿,如果目标窗口句柄是表单或子控件,则进行响应.
  3. 确保将消息的Handled参数保留为False,以便将消息传递给其目标.

如果您确实想要检测表单激活,请使用OnActivate.