delphi - 在 VisualCLX 表单中过滤(禁用)鼠标滚轮消息

标签 delphi delphi-7 clx

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

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

备注

我需要禁用鼠标滚轮事件,因为它会不断更改事件页面(TPageControl),这在带有跨平台组件库(CLX)的 Delphi 中非常烦人,因此欢迎任何其他解决问题的解决方法......

最佳答案

在 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;

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

关于delphi - 在 VisualCLX 表单中过滤(禁用)鼠标滚轮消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334629/

相关文章:

delphi - 不兼容的类型 : 'Integer' and 'procedure, untyped pointer or untyped parameter'

delphi - 特定表单(ClassName)的所有实例的 PostMessage :

multithreading - 空的新 VCL 表单应用程序下正在运行哪 4 个线程?

delphi - TComponent 中的 Observers 属性

delphi - 单击按钮上的进度条

delphi - 子控件在 TCustomControl 后代的大小调整期间闪烁

delphi - 在 CLX TEdit 的 KeyPress 事件中拦截 TAB 键

lisp - 如何使用 clx 设置 linux 壁纸

delphi - 重用资源图像位图,而不是在xfm文件中重复它们

delphi - 使用 Google 代替现有客户端服务器应用程序的 Web 界面