Как автоматически развернуть все узлы TTreeView? - PullRequest
6 голосов
/ 10 апреля 2011

Я хочу развернуть дерево в главной форме при запуске приложения. Как я могу это сделать? Я не могу найти соответствующую недвижимость. C ++ builder 2009.

Ответы [ 3 ]

27 голосов
/ 10 апреля 2011

Вам просто нужно позвонить FullExpand() в виде дерева.

1 голос
/ 10 апреля 2011

При добавлении treenode установите его расширенное свойство в true

вы найдете свойство для объекта treeNode, установите его в true перед добавлением в список узлов.

, а также вы можете найти метод для TreeView с именем ExpandAll

С уважением


попробуйте этот код

//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

С уважением

0 голосов
/ 13 июня 2012

Есть несколько способов сделать это. Самый простой будет

TreeView1.FullExpand;

как в принятом ответе - в качестве альтернативы

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

или

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

Метод Expand на TTreeNode полезен, если вы хотите полностью развернуть конкретный узел, который не является корневым.

...