delphi - Delphi XE2 中对鼠标滚轮功能的建议支持是什么?

标签 delphi mousewheel delphi-xe2

既然 Delphi XE2 可用,我正在尝试整理我的代码 - 我的代码来自 Borland Pascal 7,因此有很多“旧”(但有效!)Win32 技术,自然我也考虑到了平台独立性。对鼠标滚轮的支持之前已经在几个先前的问题 1 23 中提出过。与其中一些答案一样,我自己的解决方案是使用 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/

相关文章:

string - 如何获取 TStringList 中的最后一个字符串

linux - 如何在 Ubuntu 中对鼠标按钮进行编程以更改滚动

delphi - 如何获取从 GUI 应用程序启动的控制台窗口的句柄?

delphi - 当我声明通用 "array of T"时,我应该如何处理内部错误?

c# - 从 C# 调用 Delphi 函数

delphi - 如何更改 Delphi Tchromium 中组合框的值?

delphi - 使用自定义绘图时Delphi ListView 控件是否存在错误?

javascript - 在 Firefox 中禁用鼠标中键单击和拖动功能

excel - 在组合框/列表框中启用鼠标滚轮滚动

Delphi 快速报告 - 总页数