如何隐藏TVirtualStringTree节点?

时间:2011-08-23 17:55:36

标签: delphi virtualtreeview tvirtualstringtree

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

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

我树的结构:

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

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

那我是怎么做到的?

2 个答案:

答案 0 :(得分:22)

  

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

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

vtree.IsVisible[Node] := boolean;

启用/禁用节点使用

vtree.IsDisabled[Node] := boolean;

您还可以在树的OnInitNode事件中将节点初始化为禁用状态,并将ivsDisabled添加到InitialStates参数。

答案 1 :(得分:1)

除了答案之外,要递归树,您可以使用以下功能:

递归所有节点

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

仅递归VISIBLE节点:

Tree.GetFirstVisible();
Tree.GetNextVisible();
Tree.GetPreviousVisible();