在 Google Chrome 中,当您单击鼠标滚轮按钮时,您会看到以下光标:
然后,当您用鼠标四处移动时,您可以滚动到所有可能的方向......
IE 也有这个,但只是上下移动:
Delphi 有没有可以做到这一点的组件?(以 TScrollBox 为例)
在 Google Chrome 中,当您单击鼠标滚轮按钮时,您会看到以下光标:
然后,当您用鼠标四处移动时,您可以滚动到所有可能的方向......
IE 也有这个,但只是上下移动:
Delphi 有没有可以做到这一点的组件?(以 TScrollBox 为例)
似乎此功能在 RAD studio 2009 中可用(但在 D7 中不可用)。您需要使用Imouse
(imouse.pas 单元) 并且该控件必须具有 csPannaable 的 ControlStyle。
引用:
Imouse(imouse.pas 单元)是使用中键滚动(也称为“鼠标平移”)的标准实现。它也用于 RAD Studio。Imouse 功能依赖于标准窗口滚动条,并将 WM_HSCROLL/WM_VSCROLL 发送到窗口以使其滚动。它适用于每个具有滚动条的窗口(例如,如果 AutoScroll 为 True 并且至少一个滚动条可见,则 TListView、TTreeView、甚至 TForm/TFrame)。
哦,我忘记了一件事。控件必须在 ControlStyle 中具有 csPannaable,但 RichView 默认没有。所以,添加代码后:RichViewEdit1.ControlStyle := RichViewEdit1.ControlStyle + [csPanniable];
虽然我没有测试它。剩下的就是查看源代码(当我可以拿到 D2009 的副本时),也许用 D7 来暗示这个......
例如,TMemo 可以为您做到这一点,只要您将其 ScrollBars 属性设置为 ssNone 以外的其他值。它甚至会根据启用的滚动条进行调整。TScrollBar 组件的问题在于它本身没有任何可聚焦的部分并且不会接收 OnMouseWheel(/Up/Down) 事件,但它包含的窗口控件可能会。不过,您可以为主要表单事件编写一个解决方法。在http://www.delphipages.com/forum/showthread.php?t=197309查看解决方案
编辑: OnMouseWheel(/Up/Down) 应该是 OnMouse(/Up/Down),感谢@Sertac Akyuz 指出这一点;)