2011-05-08 20 views
0

这听起来很简单,但它就像一个洋葱 - 当你剥离大量的图层。我有我自己的对象类的类 - 有点像表单上的组件,因为它们中的任何一个都可以有孩子和父母。顶部有一个根对象。其他代码管理此层次结构,并且可能随时创建,删除或重命名分支机构或叶子。我希望有一个树形视图(某种类型的,可能是虚拟的),以这种方式提供这种视图的视图,使得可以有多个这样的树视图,每个树视图根据需要从对象层次结构中自行绘制。什么是最好的德尔福算法来显示树形视图来显示对象的现有层次结构

我已经有了一个使用Delphi的TTreeView的解决方案,但它依赖于在引发“更改”标志并重建树视图分支时发生更改的迭代。这很慢(我可以有超过1000个对象),我想要一种算法,可以为单个对象插入或删除设置单个树视图更改。这可能吗?

回答

1

当然,您可以检测到一个对象已被插入或删除,并进行必要的更改。

例如,对于删除,找到与删除的对象关联的节点,然后将其删除。对于插入,找到与父项关联的对象,然后在正确的位置插入一个新节点。

如果在寻找与对象关联的节点时存在性能问题,那么您可以使用字典。

对于虚拟树视图来说,它更简单,因为您只需获取树视图以反映对象结构。当更改发生时,您会请求更新,这一切都是自然发生的。

+0

我的问题是关于实现你的建议的算法。在写“找到与被删除对象相关的节点”的地方,我正在思考如何以快速的方式在树视图中完成这个工作,即写一个“对象到节点”的功能,而不必遍历整个树。 – 2011-05-08 21:35:38

+1

@Brian如果你不想出于性能考虑而走树,请使用字典。 – 2011-05-08 21:36:19

相关问题