加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 什么数据结构最适合VirtualStringTree?

发布时间:2020-12-15 04:19:24 所属栏目:大数据 来源:网络整理
导读:我想每个曾经使用过Delphi的VirtualStringTree的人都会同意它是一个很棒的控件.它是一个“虚拟”控件(您的数据必须保存在其他位置)所以我在想什么数据结构最适合这样的任务? IMO数据结构必须支持层次结构,它必须快速且易于扩展.最简单的实现是使用记录,这就
我想每个曾经使用过Delphi的VirtualStringTree的人都会同意它是一个很棒的控件.它是一个“虚拟”控件(您的数据必须保存在其他位置)所以我在想什么数据结构最适合这样的任务? IMO数据结构必须支持层次结构,它必须快速且易于扩展.最简单的实现是使用记录,这就是可以找到的大多数文档所暗示的内容.但是如果你需要做一些快速查找,计算总数等呢?您与VirtualStringTree一起使用的数据结构是什么?

编辑1:我正在使用Delphi 2010.

好的,我会尝试提供一些有关我的要求的更多细节.
数据大小可以变化很大,从1到数千个项目.每个项目可以包含多个字符串,整数值.我需要随机访问,我的数据可以在应用程序生命周期中多次更改.良好的性能是非常理想的.我还需要数据保存和重新加载.

EDIT2:
得到1个答案,所以我会试着评论我的意见.谢谢,Dorin给你答案但是
我不认为你的结构很方便.
1)它不处理层次结构.
2)为每个节点分别设置TStringList或TList不是非常有效的IMO.通过这种实现,我只能查找当前节点的数据,但不能有效地搜索整个树.

我认为这个数据结构必须像一棵树.它必须具有能够添加子节点的节点.然后我就可以在OnInitNode事件中获取节点的数据,检查我的节点是否有一些子节点,如果是,则设置ivsHasChildren标志,然后在OnInitChildren事件中设置正确的子节点数.稍后在OnGetText事件中,我可以从我的节点结构中获取所需的数据,并根据Column索引将其设置为CellText.我的想法是拥有一个单独的数据结构,并使用它完成所有需要的操作,而无需使用VirtualStringTree.希望有人得到我的观点:).

EDIT3:我发现了非常有趣的JclTrees单元,乍一看可以用来实现我正在寻找的东西.它属于JCL library.缺乏体面的文档使得很难快速调查它的功能.当我有更多时间时,我可能会更深入地研究它.

解决方法

好的,因为给定的答案没有解决我的问题,我编写了自己的树数据结构,模仿TVirtualStringTree并处理我在问题中提到的所有问题.现在我可以选择仅使用我的数据结构,其中的所有更改将自动更新VirtualStringTree.我想我稍后会在某处上传源代码并在此处发布链接.感谢所有的答案.

编辑:我已将源代码上传到Google代码:svTrees.有一个小型演示,展示了它的工作原理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读