1

我继承了一个 Delphi 7 (VisualCLX) 应用程序来维护,我想在应用程序WM_MOUSEWHEEL的主窗体 ( TForm) 上过滤一些 Windows 消息,例如鼠标滚轮 (),这可能在 Visual CLX 上吗?如何 ?

我知道这在 VCL 上是可能的,但我正在寻找的跨平台(CLX)上的一些解决方案......

笔记

我需要禁用鼠标滚轮事件,因为它会不断更改活动页面TPageControl

4

1 回答 1

4

在 CLX 中过滤输入消息并不简单。似乎没有像 VCL 的OnMessage.

您可以使用简单的插入器停止 CLX 页面控件处理的鼠标滚轮事件。在声明主窗体类之前,将此代码添加到主窗体中。

type
  TPageControl = class(QComCtrls.TPageControl)
  protected
    function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; 
      const MousePos: TPoint): Boolean; override;
  end;

然后在单元的实现部分,添加:

function TPageControl.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; 
  const MousePos: TPoint): Boolean;
begin
  Result := True;
end;

如果您在不同的表单上有多个页面控件,那么您应该在一个单元中声明插入器,该单元可以由您的应用程序中的所有表单共享。或者甚至可能派生出一个适当的成人子类。

于 2013-01-15T09:38:06.667 回答