【发布时间】:2019-09-25 08:58:32
【问题描述】:
我正在使用 Delphi XE3 和 Virtual TreeView。
我想用Virtual TreeView来实现一棵树,当点击“开始”按钮时,程序会递归搜索一个驱动器下的所有文件和文件夹,然后将它们一一添加到树中,就像Windows资源管理器一样。
仔细阅读帮助文档中的“虚拟范例”后,我知道我不能使用 AddChild 或 InsertNode,因为它们仅用于兼容性目的。应该使用 OnInitNode 和 OnInitChildren 来初始化节点。
但是在我的案例中使用虚拟范式真的很难。目前我可以找出一种算法:
-
定义一个内部数据结构,称为TMyInternalNode,用于存储一个树内部节点的数据,以及内部节点之间的关系,如父、子、兄弟等。
李> 在 OnInitNode 和 OnInitChildren 事件中。尝试通过节点的级别和其他节点之间的关系找到节点的位置。然后为节点找到对应的内部节点(这可能有点困难,有时可能要遍历整个内部节点树才能找到正确的节点。找到正确的节点后,用内部节点数据初始化节点。
这个算法似乎复杂且耗时。有没有更好的方法来实现这种情况?
【问题讨论】: