【问题标题】:Multiple Expanding Nodes in Virtual TreeView possible?虚拟树视图中的多个扩展节点可能吗?
【发布时间】:2010-01-19 11:42:24
【问题描述】:

我在我的Delphi project 中使用 TVirtualStringTree(Virtual TreeView Component 的一部分),我想创建一个视图,其中 2 列可以有可扩展/可折叠的子级,并带有 [+] 符号。 在下面作为示例的图片中,我希望在服务器列和图像列中都有一个 [+] 符号。这个想法是树有几个服务器节点,每个节点都有许多子进程(主列是图像),并且一些进程有子进程,它们是进程节点的子进程。


(来源:remkoweijnen.nl

这样的布局可能吗?如果不使用默认组件,我将不胜感激有关如何在后代中实现此功能的建议。

/Edit: 以下截图是使用 TOndrej 建议的方法时的截图: alt text http://www.remkoweijnen.nl/temp/TreeView2.png alt text http://www.remkoweijnen.nl/temp/TreeView3.png alt text http://www.remkoweijnen.nl/temp/TreeView4.png

好的,我决定按照 TOndrej 的想法来实现: alt text http://www.remkoweijnen.nl/temp/TreeView5.png

【问题讨论】:

    标签: delphi virtualtreeview


    【解决方案1】:

    你很可能不需要那个。只需明确说明您需要什么分组即可。第一列可以是多用途的——在每个分组级别显示不同的信息——例如级别 0:服务器,级别 1:进程,级别 2 及更高级别:子进程。 在每个级别上,只有与该级别相关的列需要显示任何信息。在上面的示例中,级别 0 只会在第一列中显示服务器名称;其余列将保持为空。

    您可以通过自定义绘图实现任意数量的加号,但这将是很多工作,我真的认为结果是不必要的、不寻常的并且容易让用户感到困惑。

    【讨论】:

    • 我已经考虑过了,但是当我重复服务器名并将其省略时,它看起来有点奇怪(我又添加了 2 个屏幕截图)。
    • Remko,它看起来很奇怪,因为你没有按照 Tondrej 的建议去做。 合并“服务器”和“图像”列合二为一。对于服务器对象,该列的文本将包含服务器名称;对于进程,它将显示文件名。您的第三个版本看起来最接近;无论如何,服务器节点没有使用任何其他列。
    • @TOndrej:好的,我选择了您的解决方案,请参阅最后一个屏幕截图(使用正确的图像,它看起来好多了)。 +1 @Rob Kennedy:感谢您的额外评论,我想我想得太难了。 +1 PS:我必须测试这种方法对树中的排序(显而易见)和搜索意味着什么(我通过输入第一个字母来实现自动搜索)
    【解决方案2】:

    只有一列可以有树,其他列作为列表视图。带有树的列是主列。

    如果两列都有一棵树并且它们可能“冲突”,我不知道您的分组将如何工作。什么是父节点等。GUI 从技术上讲,这可能不是提供这些细节的最佳方式;用户不会期望它以这种方式工作。

    【讨论】:

    • 鉴于我想展示的内容,对您来说什么是合乎逻辑的方式?
    • 我认为您只需要一个树列,在顶层是服务器节点,在这些节点之下是进程节点(在这些节点之下是子进程的递归)。如果您想显示正确的图像,您需要制作指定“种类”的节点,例如服务器种类、进程种类等。有些列仅用于服务器,其他列仅用于进程等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2017-03-14
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多