如何获得Treeview中某一被选中的节点所在的层中共有多少个节点??A
   1
   2
   3
     31
     32
   4〈----
B
   1
   2
   3
假如我选中的是A中的4。那么4所在的子节点集和中应该是共有4个节点的!!
或者有没有类似的方法,判断我选中的节点是不是所在子集中的最后一个!!
TV1.Selected.Parent.GetLastChild.Index;但考虑到当我选中的是B这种情况就不好办了!!因为B时没有父节点的。
所以,挠头!!!!!唉,高手救救我吧!

解决方案 »

  1.   

    a和b都用addchild(nil,'text'),然后就可以了吧
      

  2.   

    TO bluebilly(蓝色天使)但是当我选中的b时,它是没有父节点的!!
    -------------------------------------
    TO nickey_zhang()有一些细节我没有说清楚,其实这一切都是因为一个要求:
    在选中的节点下边添加一个节点。也就是说:假如我选中的是A,那么就要在A的后边、B的前边添加一个节点。但是Treeview中好像没有说在后边追加方法。
      

  3.   

    一般来说,用treeview1.selected.parent.count;就能得到当前选中节点所在的结合中有多少个节点。但是当treeview1.parent.level=0时就不能用了。
    所以才来麻烦大家了。:)
      

  4.   

    更正:
    但是当treeview1.selected.level=0时就不能用了。
    笔误:)嘿嘿~~~~~~
      

  5.   

    //try
    procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    var
      vTreeNode: TTreeNode;
      I: Integer;
    begin
      I := 1; //加自己
      ///////Begin 加上铺的兄弟
      vTreeNode := Node.getPrevSibling;
      while Assigned(vTreeNode) do begin
        vTreeNode := vTreeNode.getPrevSibling;
        Inc(I);
      end;
      ///////End 加上铺的兄弟
      ///////Begin 加下铺的兄弟
      vTreeNode := Node.getNextSibling;
      while Assigned(vTreeNode) do begin
        vTreeNode := vTreeNode.getNextSibling;
        Inc(I);
      end;
      ///////End 加下铺的兄弟
      Caption := IntToStr(I); //输出
    end;
      

  6.   

    对于第level=0的情况的处理n:=0;
    if treeview1.items.count>0 then
    begin
      node:=treeview1.items[0];
      while node<>nil do begin
        inc(n);
        node:=node.getNextSibling;
      end;
    end;n既为你所求的
    对于其余的情况可以用count求出,也可以
    将第一个节点赋予node算出。
      

  7.   

    node.getnextsibling;是获得同子集的下一个节点么??
      

  8.   

    var
      TreeNode, TempNode: TTreeNode;
      i, j: Integer;
    begin
      TreeNode := TreeView1.Selected;
      if TreeNode = Nil then exit;
      TempNode := TreeNode.Parent;
      if TempNode = nil then
        begin
          i := 0;
          TreeNode := TreeView1.Items[0];
          While TreeNode <> nil do
            begin
              Inc(i);
              TreeNode := TreeNode.getNextSibling;
            end;
          ShowMessage(IntToStr(i));
        end
      else
        ShowMessage(IntToStr(TempNode.Count));
    end;
      

  9.   

    是的,getnextsibling可以得到同子集的下一个节点
      

  10.   

    结贴了!!!
    谢谢大家的指导与关照,非常感谢!!问题圆满解决了!!
    不知道谁有关于Treeview的什么资料,技巧集之类的。贴出来大家研究一下吧。
    不要忘了发一份给我哦!![email protected]
    再次感谢大家!:)