我用了一个treeview1控件,里面有两层结点,我想如何在点第一层结点时就能够获取所点结点下所有子结点的StateIndex,该如何实现,麻烦大哥们帮帮忙,谢谢!!!

解决方案 »

  1.   

    遍历整个treeview,获得所有父结点为你所选择结点的子结点的StateIndex不行?
      

  2.   

    to shuihan20e 
    我的treeview1就两层,我只想当点一个父结点的时候就获取所点父结点下的所有子结点的StateIndex,能不能给个完整的例子呢?我现在就是不懂该如何用循环来获取当前父结点下的所有子结点的StateIndex!
      

  3.   


    用GetNext访问下一个,知道和所选节点同级,表示子节点循环完毕
      

  4.   

    var
      Node ,SubNode : TTreeNode ;
      i : integer;Node := TreeView.selected ; if Node.hasChildren then begin
      for i := 0 to Node.item.count -1 do begin    // 遍曆下所有的
      end;
    end;//手工寫的,可能有筆誤
      

  5.   

    to starluck
    此行报错,麻烦帮看看,谢谢!
    Node.item.count -1
      

  6.   

    没有item.Count属性,自己就从当前节点遍历就行了
      

  7.   


    var
      tnTemp: TTreeNode;
    begin
      tnTemp := tvObject.Selected.getFirstChild;
      while (tnTemp <> nil) do
      begin
        tnTemp.StateIndex;  
        tnTemp := tvObject.Selected.GetNextChild(tnTemp);  //获取下一个子节点
      end;
    end;
      

  8.   

    Node := TreeView.selected ; if Node.hasChildren then begin 
      for i := 0 to Node.count -1 do begin 
        Node.item[i].stateindex就是。。
      end; 
    end; 
      

  9.   

    转自万一:
    with StringGrid1 do begin    {清除第二列的数据}
        StringGrid1.Cols[1].Clear;    {当前选择}
        Cells[1,0] := Node.Text;    {序号; AbsoluteIndex 是绝对序号}
        Cells[1,1] := IntToStr(Node.AbsoluteIndex);    {所在级别}
        Cells[1,2] := IntToStr(Node.Level);    {在兄弟中排行}
        Cells[1,3] := IntToStr(Node.Index);    {下级总数}
        Cells[1,4] := IntToStr(Node.Count);    {上级元素}
        if Boolean(Node.Parent) then Cells[1,5] := Node.Parent.Text;    {上一个}
        if Boolean(Node.GetPrev) then Cells[1,6] := Node.GetPrev.Text;    {下一个}
        if Boolean(Node.GetNext) then Cells[1,7] := Node.GetNext.Text;    {上一个兄弟}
        if Boolean(Node.getPrevSibling) then Cells[1,8] := Node.getPrevSibling.Text;    {下一个兄弟}
        if Boolean(Node.getNextSibling) then Cells[1,9] := Node.getNextSibling.Text;    {上一个可见}
        if Boolean(Node.GetPrevVisible) then Cells[1,10] := Node.GetPrevVisible.Text;    {下一个可见}
        if Boolean(Node.GetNextVisible) then Cells[1,11] := Node.GetNextVisible.Text;    {第一个下级}
        if Node.HasChildren then Cells[1,12] := Node.getFirstChild.Text;    {最后一个下级}
        if Node.HasChildren then Cells[1,13] := Node.GetLastChild.Text;    {总数}
        Cells[1,14] := IntToStr(Node.Owner.Count);
      end;