【发布时间】:2012-12-12 06:54:09
【问题描述】:
我有一个树视图,其中已经填充了来自另一个过程的文件/文件夹。我想逐一迭代树视图中的项目,从上到下按照确切的顺序进行。但是,与普通列表不同,我不能只使用一个简单的for 语句。我必须进入每个节点等。
我该怎么做?我希望有一种方法可以在不运行递归过程的情况下做到这一点。当我遍历这些项目时,我不一定关心当前关注的项目的父节点或子节点。我只需要能够在传递每个节点时读取它们的Data 属性,并在我通过它时突出显示树视图中的当前节点。对于此树视图中的每个项目,我将执行一些工作,并希望向用户直观地显示在此过程中当前选择了哪个项目。
【问题讨论】:
-
“我不能只使用一个简单的 for 语句” for 循环的递归函数/过程,在 for 循环 之后您对 Node.Data 属性进行操作,调用者将继续下一个节点等等...
-
我说过我不能为此使用简单的 for 语句,因为树视图中没有项目索引或总节点数之类的东西。
-
看来大卫找到了你的解决方案,而且还很干净......
-
@LURD VCL 已经过优化,因此通过索引的顺序访问是高效的。随机访问不是。
-
@LURD 我最近才意识到这一切。我一直使用GetNext。文档薄弱。
标签: delphi recursion treeview iteration