Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 通过树视图中的节点递归迭代?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个树视图,已经填充了另一个过程中的文件/文件夹.我想逐个遍历树视图中的项目,按照从上到下的确切顺序进行迭代.但是,与普通列表不同,我不能只使用一个简单的for语句.我必须进入每个节点等

我该怎么做呢?我希望有一种方法可以在不运行递归程序的情况下完成.当我遍历这些项目时,我不一定关心当前聚焦的父节点或子节点.我只需要能够在传递它们时读取每个节点的Data属性,并在我浏览时突出显示树视图中的当前节点.对于此树视图中的每个项目,我将执行一些工作,并希望在此过程中直观地向用户显示当前选择的项目.

解决方法

实际上你可以使用for循环.
var
  Node: TTreeNode;
....
for Node in TreeView.Items do
  DoSomething(NodE);

这是语法糖:

for i := 0 to TreeView.Items.Count-1 do
  DoSomething(TreeView.Items[i]);

在可读性方面,我建议使用for / in循环.

在不支持节点迭代器的较旧的Delphi版本中,您可能更喜欢使用while循环.

Node := TreeView.Items.GetFirstNode;
while Assigned(NodE) do
begin
  DoSomething(NodE);
  Node := Node.GetNext;
end;

我希望还有其他方法可以做到这一点.这是我所知道的唯一!

LU RD对documentation的有趣观察结果表明:

这是真的.对于随机访问,代码必须从根开始遍历树,直到找到第i个节点.

但是,对顺序访问进行了优化. Delphi树视图包装器会记住索引所在的最后一个节点的索引.下次请求索引与缓存节点的索引不超过一个的节点时,可以快速返回所需的节点.这是在TTreeNodes.GetNodeFromIndex中实现的.

大佬总结

以上是大佬教程为你收集整理的delphi – 通过树视图中的节点递归迭代?全部内容,希望文章能够帮你解决delphi – 通过树视图中的节点递归迭代?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。