我目前使用的是TVirtualStringTree,树的结构不是一列,而是多列。我现在遇到的问题是:一条记录和他子树的列的个数和标题不同,不能通过增加子节点的办法(那样的话列相同)。就是想通过这个树来表示一个复杂的层次关系。我想到的方法是给父节点增加一个子节点,它的高度可调节,各字段显示为空,新建一个TVirtualStringTree1,子树建在他上面,然后将TVirtualStringTree1显示到子节点的区域,也就是占着位子,好像是直接展开的一样。但是子节点不是WinCtrol类型,不能这样写:TVirtualStringTree1.parent:= subNode;也不知道如何获得子节点的那个区域,把TVirtualStringTree1放上去。请问各位有什么好思路或者解决方案,感激不尽。

解决方案 »

  1.   

    如果子节点和上级节点的列不同。先检查是否可能只是列出共现的列。在看是否可以将列设置成两个列的集合。
    就象资源管理器在 详细信息 显示的时候,在标题栏上右键,会列出所有的属性,如果某行没有这这属性就显示为空。象你那种方法,做出来效果不会好的。不如用两个TVirtualStringTree1,一个在左边只显示树层次,另一个
    在右边,显示选中节点的子节点列表。象资源管理器一样。根据子节点的列动态改变右边列表的列。