如何获取特定树节点的根索引?

时间:2013-01-05 20:13:44

标签: delphi treeview delphi-xe2

我遇到了树视图中节点索引的差异。该树只有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项

现在假设我选择“Root 3”并阅读TTreeView.Selected.Index,它将返回2。但是,当我阅读TTreeView.Items[2]时,它返回“项目1.2”,因为它确实是列表中的第三项。我选择的“Root 3”实际上是索引号8。

读取当前所选根节点的索引的正确方法是什么,所以我得到8而不是2

1 个答案:

答案 0 :(得分:8)

TTreeNode.IndexTTreeNode.Parent相关。 TTreeView.Items[]使用绝对索引,因此请改用TTreeNode.AbsoluteIndex。但是,Items[Selected.AbsoluteIndex]是多余且低效的,因为它返回TTreeNode返回的Selected