我继承了一个 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/