我有一个可以有很多节点的TTreeView,当很多节点被扩展时,树会占用大量的屏幕空间 .
现在假设我想将TreeView底部附近的节点拖到顶部,我无法在物理上看到TreeView的顶部,因为我选择的节点位于底部 . 当将节点拖动到TreeView的顶部时,我希望TreeView在拖动时自动滚动,默认情况下这似乎不会发生 .
在Windows资源管理器中可以看到此行为的完美示例 . 如果您尝试拖动文件或文件夹,当您将拖动的项目(节点)悬停时,它会根据光标位置自动向上或向下滚动 .
希望有道理 .
PS,我已经知道如何拖动节点了,如果在TreeView的顶部或底部附近徘徊,我希望TreeView在拖动时与我一起滚动 .
谢谢 .
2 回答
这是我使用的代码 . 它适用于任何
TWinControl
后代:列表框,树视图,列表视图等 .然后使用它为控件添加
OnStartDrag
事件处理程序并按如下方式实现:这是一个替代方案,基于所选节点始终在视图中自动滚动的事实 .
您可能还希望将OnDragOver事件处理程序链接到TreeView的父级,这会导致在鼠标位于TreeView外部时滚动或丢弃 . 如果你想要滚动,但是当鼠标在TreeView之外时不要掉线,那么在OnEndDrag事件处理程序中检查
if Target = Sender
.