我遇到了树视图中节点索引的差异。该树只有2级层次结构,多个根节点和每个节点下的多个节点。当我读TTreeView.Selected.Index
时,我只得到根节点的索引,但是当我读TTreeView.Items[TTreeView.Selected.Index]
(在循环中迭代)时,我得到一个完全不同的树节点。
更具体的例子,假设我有这些数据:
现在假设我选择“Root 3”并阅读TTreeView.Selected.Index
,它将返回2
。但是,当我阅读TTreeView.Items[2]
时,它返回“项目1.2”,因为它确实是列表中的第三项。我选择的“Root 3”实际上是索引号8。
读取当前所选根节点的索引的正确方法是什么,所以我得到8
而不是2
?
答案 0 :(得分:8)
TTreeNode.Index
与TTreeNode.Parent
相关。 TTreeView.Items[]
使用绝对索引,因此请改用TTreeNode.AbsoluteIndex
。但是,Items[Selected.AbsoluteIndex]
是多余且低效的,因为它返回TTreeNode
返回的Selected
。