编辑1:我正在使用Delphi 2010。
好的,我将尝试提供更多关于我的要求的细节。数据大小可能变化很大,从1个到数千个项目不等。每个项目可以包含多个字符串、整数值。我需要随机访问,我的数据在应用程序生命周期内可能会多次更改。良好的性能非常可取。我还需要数据保存和重新加载。
编辑2:已经收到1个答案,所以我会尝试评论我的观点。感谢Dorin的回答,但我认为你的结构不是很方便。 1)它没有处理层次结构。 2)为每个节点分别使用TStringList或TList不是非常有效的方法。通过这种实现,我只能查找当前节点的数据,但不能在整个树中进行有效的搜索。
我认为这种数据结构必须像一棵树。它必须有具有添加子项功能的节点。然后我只需在OnInitNode事件中获取节点数据,检查我的节点是否有子项,如果有,则设置ivsHasChildren标志,然后在OnInitChildren事件中设置正确的子项计数。稍后在OnGetText事件中,我只需从我的节点结构中获取所需的数据,并根据列索引将其设置为CellText。我的想法是拥有一个单独的数据结构,并在不需要使用VirtualStringTree的情况下执行所有必要的操作。希望有人理解我的观点 :)
编辑3:我发现了一个非常有趣的JclTrees单元,乍一看似乎可以用来实现我正在寻找的内容。它属于JCL库。缺乏体面的文档使得快速调查其功能变得困难。可能在我有更多时间时会深入研究它。