如何求TreeView某一层的总结点数?

解决方案 »

  1.   

    用TreeNode.Count可以求得直接子结点的个数,
    用TreeNode.Parent.Count就可以求得当前结点的所在层的个数。
      

  2.   

    不行的,比如我要求TreeView1的第一层的总结点数
       TreeView1.???????
       再请教!
      

  3.   

    var
      Node, SelectedNode: TTreeNode;
      nCount: Cardinal;
    begin
      SelectedNode := TreeView1.Selected;
      Node := SelectedNode;
      nCount := 0;
      while True do
      begin
        if Node = SelectedNode.getNextSibling then
          Break
        else
        begin
          Node := Node.GetNext;
          Inc(nCount);
        end;//if
      end;//while
    end;这段程序可以求出某一层的总结点数,包括子节点的子节点数。
    TreeNode.Count 只能求出当前结点的下一层的结点数,而不能展开子节点的子节点。
      

  4.   

    第一层的话就用 TreeView1.Items.Count
      

  5.   

    但是如果第一层展开后 TreeView1.Items.Count就包含了子结点数
      并且我是在第二个Form中调用Form1.TreeView1要求求出其第一层的结点总数,没有TotalItems/TotalTreeNode/GetLastNode这样的Function吗?
      

  6.   

    原来理解有误,TreeView1.Items包含所有结点,包括子结点,这样就可以这样:function GetNodesCount(tree: TTreeView; level: Integer): Integer;
    var i: Integer;
    begin
      Result := 0;
      for i := 0 to tree.Items.Count - 1 do
        if tree.Items[i].Level = level then
          Inc(Result);
    end;GetNodesCount(TreeView1, 0);  // 0为第一层,1为第二层,...