如何自动展开所有TreeView节点?

时间:2011-04-10 15:21:14

标签: delphi delphi-2009 c++builder

我想在应用程序启动时在主窗体上展开树。 我怎么能这样做?我找不到相应的财产。 C ++ builder 2009。

3 个答案:

答案 0 :(得分:27)

您只需在树状视图上调用FullExpand()

答案 1 :(得分:1)

添加treenode时,将其展开的属性设为true

你会找到treeNode Object的一个属性,在添加到节点列表之前将它设置为true。

你也可以找到一个名为ExpandAll

的treeView方法

我的问候


试试这段代码

//this will expand all nodes of Level and their parents
procedure ExpandTree(Tree: TTreeView; Level: integer);

  procedure ExpandParents(Node: TTreeNode);
  var
    aNode : TTreeNode;
  begin
    aNode := Node.Parent;
    while aNode <> nil do begin
      if not aNode.Expanded then
        aNode.Expand(false);
      aNode := aNode.Parent;
    end;
  end;

var
  aNode : TTreeNode;
begin
  if Tree.Items.Count > 0 then begin
    aNode := Tree.Items[0];

    while aNode <> nil do begin
      if aNode.Level = Level then begin
        aNode.Expand(false);
        ExpandParents(aNode);
      end;
      aNode := aNode.GetNext;
    end;
  end;
end;

//this will expand the Node and it's parents
procedure ExpandNode(Node: TTreeNode);
var
  aNode : TTreeNode;
begin
  Node.Expand(false);

  aNode := Node.Parent;
  while aNode <> nil do begin
    if not aNode.Expanded then
      aNode.Expand(false);
    aNode := aNode.Parent;
  end;
end;

并查看参考资料 http://www.delphipages.com/forum/showthread.php?t=159148

我的问候

答案 2 :(得分:0)

有很多方法可以做到这一点。最简单的是

TreeView1.FullExpand;

在接受的答案中 - 或者

if TreeView1.items.GetFirstNode <> nil then
  TreeView1.items.GetFirstNode.Expand(True);

if TreeView1.items[0] <> nil then
  TreeView1.items[0].Expand(True);

如果要从非根节点的特定节点完全展开,则TTreeNode上的Expand方法很有用。