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

Jer*_*dge 4 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.

读取当前所选根节点的索引的正确方法82什么,而不是?

Rem*_*eau 8

TTreeNode.Index相对于TTreeNode.Parent.TTreeView.Items[]使用绝对索引,所以请TTreeNode.AbsoluteIndex改用.但是,它Items[Selected.AbsoluteIndex]是冗余且低效的,因为它返回返回的相同TTreeNode内容Selected.