4

VirtualTreeViewコンポーネントでノードが(画面上に)表示されているかどうかを確認する方法は? このようなもの:

if not Grid.NodeVisible (Node) then
   Grid.ScrollIntoView (Node, True);

ノードは、表示されていない場合は中央に配置する必要がありますが、表示されている場合はその場所に留まります。

ノードの可視フラグについて話しているのではなく、画面上の可視性について話していることに注意してください。私の場合、IsVisibleプロパティは常に返されます。True

4

2 に答える 2

3

GetDisplayRect()最も近いのはメソッドだと思います:

スクロール、展開状態などに応じて、指定されたノードがカバーするクライアント座標を決定します。指定されたノードが見つからない場合 (その親の 1 つが折りたたまれているか、非表示になっているため)、空の長方形が返されます。

ノードが「表示されているが表示されていない」場合に何が返されるかわからない - VT のクライアント矩形内に返された矩形をチェックするヘルパー関数を作成する必要があるかもしれません...

于 2012-03-20T08:42:53.343 に答える
0

IsVisible プロパティは、ノードが非表示になっているか、見つけたとおりでない場合にのみ返されます。ノードが画面上にあるかどうかを確認する唯一の方法は、提案されているように GetDisplayRect を使用し、ツリー ビューのクライアントの四角形に対してテストすることです。

ただし、何を正しく行おうとしているのかを理解していれば、VirtualTreeView の SelectionOption の toCenterScrollIntoView オプションを使用すると、ノードが可視領域にあるかどうかをテストしなくても、必要な動作が得られます。

つまり(C++):

TreeView->TreeOptions->SelectionOptions =
TreeView->TreeOptions->SelectionOptions << toCenterScrollIntoView ;
...
ScrollIntoView(Node);
于 2012-04-05T23:30:58.340 に答える