Delphi XE2中鼠标滚轮功能的推荐支持是什么?

3

现在 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滚轮支持呢?

是否继续使用我的解决方案还是有更好的方法?

2个回答

6
在XE2(以及所有最近的版本)中,您不需要做任何事情。标准控件默认支持鼠标滚轮滚动。只需摆脱这些旧代码即可。

1
啊,我明白了。谢谢,我把滚动选择和滚动背景搞混了。我在一个空项目中尝试了TListBox,似乎它不支持鼠标滚轮,但是如果你溢出显示的项目并获得滚动条,我发现它确实支持。 - Brian Frost

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接