5

如果我没记错的话,TVirtualStringTree 树视图中不可能有不可见的节点,因为没有启用、可见或其他属性可以这样做。我是对的吗?

如果是,我是如何设法拥有一个不可见的节点的?

我的树的结构:

  • 一个节点
  • 另一个节点
    • 子节点 1
    • 子节点 2
    • ...
    • 子节点 15
    • 子节点 16(不可见!)
  • 又一个节点
    • 来自另一个节点的子节点1
    • 来自另一个节点的子节点2

当我在整个树上执行 FirstNode/GetNextNode 循环并让我打印出第一列的文本时,我可以找到子节点 16。我还可以检查节点并查看他有一个前一个兄弟但没有下一个兄弟,例如节点高度为 18。

那么我是怎么做到的呢?

4

2 回答 2

22

如果我没记错的话,TVirtualStringTree 树视图中不可能有不可见的节点,因为没有启用、可见或其他属性可以这样做。我是对的吗?

你错了,有可能同时有不可见和禁用的节点。要切换节点的可见状态,请使用

vtree.IsVisible[Node] := boolean;

启用/禁用节点使用

vtree.IsDisabled[Node] := boolean;

您还可以通过添加参数在树的事件中将节点初始化为禁用状态OnInitNodeivsDisabledInitialStates

于 2011-08-23T18:39:57.550 回答
1

除了 ains 答案,要递归树,您可以使用以下函数:

递归所有节点

Tree.GetFirst();
Tree.GetNext();
Tree.GetPrevious();

只递归可见节点:

Tree.GetFirstVisible();
Tree.GetNextVisible();
Tree.GetPreviousVisible();
于 2011-08-25T08:28:16.240 回答