如果鼠标不在 VirtualTreeView (TVirtualStringTree) 上,如何禁用 MouseWheel
如果 TVirtualStringTree 获得焦点,则默认情况下它会在鼠标滚轮上滚动,即使鼠标未超出控制范围(除非它位于另一个 TVirtualStringTree 上方)。
有没有一种快速而优雅的方法来禁用这种行为?
我已经使用 OnMouseWheel
事件执行此操作,并使用 PtInRect
检查 Mouse.CursorPos
是否在控件上,但我有一种感觉一个更好的方法来做同样的事情,因为这样我必须为我添加的每个 TreeView 定义一个新事件,并且还要处理何时聚焦/取消聚焦控件,所以我希望必须有更好的方法来禁用它。
因此,需要明确的是,我希望鼠标滚轮功能能够像往常一样工作,但仅当鼠标位于 VirtualTreeView 上时才有效。
TVirtualStringTree behaves by default if it is focused - it will scroll on mouse wheel even if mouse is not over control (except if it is over another TVirtualStringTree).
Is there a quick and elegant way to disable this behaviour?
I already did this with OnMouseWheel
event and checking with PtInRect
if Mouse.CursorPos
if it is over a control but I have a feeling that there is a better way to do the same because this way I'd have to define a new event for each TreeView I add and also handle when to focus/unfocus the control so I hope there must be a better way to disable this.
So to be clear, I want mousewheel function to work as usual, but only when mouse is over VirtualTreeView.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
表单
将 TApplicationEvents 控件下拉到TApplicationEvents onMessage 中的
Drop down a TApplicationEvents control to the form
in TApplicationEvents onMessage
或者您可以尝试稍微修改 VirtualTree。在下面的示例中使用了插入类。如果您将此代码粘贴到您的单元中,那么您的所有 VirtualTree 都将在表单中以这种方式运行。
Or you might try to modify the VirtualTree a bit. In the following example is used the interposed class. If you paste this code into your unit, then all of your VirtualTrees will behave this way in the form.