Delphi XE2中对鼠标滚轮功能的建议支持是什么?
现在Delphi XE2可用了,我正试图整理我的代码——我的代码可以追溯到Borland Pascal 7,所以有很多“旧的”(但仍在工作!)Win32技术,当然我也考虑到了平台独立性。在此之前,我们已经提出了一些关于鼠标滚轮的问题和建议。与其中一些答案一样,我自己的解决方案是使用TApplicationEvents组件进行简单的鼠标消息拦截:Delphi XE2中对鼠标滚轮功能的建议支持是什么?,delphi,mousewheel,delphi-xe2,Delphi,Mousewheel,Delphi Xe2,现在Delphi XE2可用了,我正试图整理我的代码——我的代码可以追溯到Borland Pascal 7,所以有很多“旧的”(但仍在工作!)Win32技术,当然我也考虑到了平台独立性。在此之前,我们已经提出了一些关于鼠标滚轮的问题和建议。与其中一些答案一样,我自己的解决方案是使用TApplicationEvents组件进行简单的鼠标消息拦截: procedure TForm6.ApplicationEvents1Message(var Msg: tagMSG; var Handled:
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,在上面的代码中不使用负的Msg.wParam值,除非您使用整数(Msg.wParam)。这让我注意到,我还没有看到Delphi代码中鼠标滚轮的任何真正明确的用途——当所有的鼠标现在都有滚轮,Delphi再次处于“前沿”时,这太可怕了!我本来希望有一个属性、一个组件或其他更“暴露”的解决方案,那么Fire猴轮支架呢
我是继续使用我的解决方案还是有更好的方法?在XE2(以及所有最新版本)中,您不需要做任何事情。标准控件支持鼠标滚轮滚动出框。只要去掉这个旧代码。具有Windows句柄的Delphi组件(TWinControl的后代)具有
OnMouseWheel
、OnMouseWheelUp
和OnMouseWheelDown
事件
如果要将鼠标滚轮事件添加到不从TWinControl下降的控件,请参阅本文:Ah我明白了。谢谢,我把滚动选择和滚动背景混淆了。我在一个空白项目中尝试了TListBox,它似乎不支持鼠标滚轮,但如果您溢出显示的项目并获得一个滚动条,我会看到它支持鼠标滚轮。