如何使用VirtualTreeView组件检查节点是否在屏幕上可见?如下所示:
if not Grid.NodeVisible (Node) then
Grid.ScrollIntoView (Node, True);如果节点不可见,则节点应居中;如果节点可见,则节点应保持在当前位置。
注意,我说的不是节点的可见标志,而是屏幕上的活跃度。在我的例子中,IsVisible属性总是返回True。
发布于 2012-03-20 16:42:53
我认为最接近的是GetDisplayRect()方法:
根据滚动、展开状态等确定给定节点覆盖的客户端坐标。如果找不到给定节点(因为其父节点之一已折叠或不可见),则返回一个空矩形。
不确定在节点“可见但看不见”的情况下它会返回什么--您可能需要编写帮助函数来检查VT的客户端矩形内是否返回了rect……
发布于 2012-04-06 07:30:58
IsVisible属性仅在节点是否如您所发现的那样被隐藏时才返回。发现节点是否在屏幕上的唯一方法是使用ain建议的GetDisplayRect,然后根据树视图的客户端矩形对其进行测试。
但是,如果我理解正确的话,VirtualTreeView的SelectionOption中的toCenterScrollIntoView选项将为您提供所需的行为,而不必测试节点是否在可见区域中。
ie(C++):
TreeView->TreeOptions->SelectionOptions =
TreeView->TreeOptions->SelectionOptions << toCenterScrollIntoView ;
...
ScrollIntoView(Node);https://stackoverflow.com/questions/9783344
复制相似问题