我正在使用 Delphi 7。我想对 PageControl 空白区域的 click(left) 做出反应——在显示的最后一个选项卡右侧的区域。我怎样才能做到这一点?
问问题
1082 次
1 回答
6
您可以在 PageControl 的父控件上处理单击。如果将 PageControl 放置在表单上,则将为该指定区域调用表单的“MouseDown”事件。原因是 PageControl 返回HTTRANSPARENT
该区域的命中测试消息,因此鼠标消息被定向到它下面的控件。
如果这不行,您可以更改WM_NCHITTEST
处理方式,例如通过子类化控件或在派生控件中:
type
TMyPageControl = class(TPageControl)
protected
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TMyPageControl.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
if Message.Result = HTTRANSPARENT then
Message.Result := HTCLIENT;
end;
然后,控件的OnMouseDown
事件将被触发。当然你可以在修改消息的返回值之前测试区域,这个例子只是为了展示它是如何工作的。
于 2013-01-11T17:32:52.823 回答