既然 Delphi XE2 可用,我正在尝试整理我的代码 - 我的代码来自 Borland Pascal 7,因此有很多“旧”(但有效!)Win32 技术,自然我也考虑到了平台独立性。对鼠标滚轮的支持之前已经在几个先前的问题 1 2 和 3 中提出过。与其中一些答案一样,我自己的解决方案是使用 TApplicationEvents 组件进行简单的鼠标消息拦截:
procedure TForm6.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure ProcessMouseWheelMessage;
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
If Integer(Msg.wParam) > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
Handled := False;
end;
begin
Case Msg.message of
WM_MOUSEWHEEL :
ProcessMouseWheelMessage;
end;
end;
我今天重新访问了这段代码,因为“Msg.wParam”现在是 NativeInt,除非您使用 Integer(Msg.wParam),否则会破坏上述代码中负 Msg.wParam 值的使用。这让我注意到,我还没有看到任何真正明确的鼠标滚轮在 Delphi 代码中的使用 - 当所有鼠标现在都有轮子并且 Delphi 再次处于“最前沿”时,这真是太糟糕了!我本来期望有一个属性、一个组件或其他一些更“公开”的解决方案,那么 Fire Monkey 轮子支持怎么样?
我应该继续我的解决方案还是有更好的方法?
最佳答案
在 XE2(实际上是所有最近的版本)中,您不需要执行任何操作。标准控件支持开箱即用的鼠标滚轮滚动。只需摆脱这个旧代码即可。
关于delphi - Delphi XE2 中对鼠标滚轮功能的建议支持是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166338/