6

我正在使用 Delphi 7。我想对 PageControl 空白区域的 click(left) 做出反应——在显示的最后一个选项卡右侧的区域。我怎样才能做到这一点?带有页面控件的表单

4

1 回答 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 回答