我继承了一个Delphi 7(VisualCLX)应用程序来维护,我希望在应用程序的主窗体(WM_MOUSEWHEEL
)上过滤一些窗口消息,如鼠标滚轮(TForm
),它可能在Visual CLX上?怎么样?
我知道这可以在VCL上实现,但我正在寻找旧跨平台(CLX)上的一些解决方案......
注意
我需要禁用mousewheel事件,因为它不断更改活动页面(TPageControl
),这在Delphi中使用跨库存组件库(CLX)非常烦人,因此解决问题的任何其他解决方法欢迎...
答案 0 :(得分: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;
如果您在不同的表单上有许多页面控件,那么您应该在一个可以由应用程序中的所有表单共享的单元中声明插入器。或者甚至可能派生出适当的成年子班。