4

ツリービューのノードのインデックスとの不一致に遭遇しました。このツリーには、2つのレベルの階層、つまりいくつかのルートノードと、それぞれの下にあるいくつかのノードがあります。を読み取るTTreeView.Selected.Indexと、ルートノードのインデックスのみが取得されますが、読み取りTTreeView.Items[TTreeView.Selected.Index](ループを繰り返す)すると、まったく異なるツリーノードが取得されます。

より具体的な例として、次のデータがあるとします。

  • ルート1
    • アイテム1.1
    • アイテム1.2
    • アイテム1.3
  • ルート2
    • 項目2.1
    • 項目2.2
    • アイテム2.3
  • ルート3
    • アイテム3.1
    • アイテム3.2
    • アイテム3.3

ここで、「ルート3」を選択して読み取るTTreeView.Selected.Indexと、が返され2ます。ただし、実際にリストの3番目のアイテムであるため、読んだときにTTreeView.Items[2]「アイテム1.2」が返されます。私が「ルート3」を選択したのは、実際にはインデックス番号8です。

現在選択されているルートノードのインデックスを読み取る正しい方法は何でしょうか。8代わりに取得し2ますか?

4

1 に答える 1

9

TTreeNode.Indexに相対的TTreeNode.Parentです。TTreeView.Items[]絶対インデックスを使用するため、TTreeNode.AbsoluteIndex代わりに使用してください。ただし、Items[Selected.AbsoluteIndex]返されるのと同じTTreeNodeものが返されるため、冗長で非効率的Selectedです。

于 2013-01-05T20:43:19.807 に答える