现在 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滚轮支持呢?
是否继续使用我的解决方案还是有更好的方法?