我继承了一个 Delphi 7 (VisualCLX) 应用程序来维护,我想在应用程序WM_MOUSEWHEEL
的主窗体 ( TForm
) 上过滤一些 Windows 消息,例如鼠标滚轮 (),这可能在 Visual CLX 上吗?如何 ?
我知道这在 VCL 上是可能的,但我正在寻找旧的跨平台(CLX)上的一些解决方案......
笔记
我需要禁用鼠标滚轮事件,因为它会不断更改活动页面TPageControl
(
在 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;
如果您在不同的表单上有多个页面控件,那么您应该在一个单元中声明插入器,该单元可以由您的应用程序中的所有表单共享。或者甚至可能派生出一个适当的成人子类。