node:=treeview1.selected;selectall(node);我想做这个过程把NODE的子结点的TEXT全部放入LISTBOX1里,需要子树的遍历,各位帮忙啊!!!!!!谢谢

解决方案 »

  1.   

    用递归啊,
    procedure getSub(TmpNode:TTreeNode);
    begin
      if TmpNode.count>0 then
         实是懒得写
    先判断是否有子树,子树若又有子树,则再调用GetSub(子树)
    end;
      

  2.   

    procedure TForm1.getsubtree(node: ttreenode);
    begin
         if not node.HasChildren then listbox1.Items.Add(node.Text);
         if node.HasChildren then
            begin  listbox1.Items.Add(node.Text);             getsubtree(node.getFirstChild);
            end;
            node:=node.getNextSibling;
    end;
    我还是不会啊!帮帮我!
      

  3.   

    procedure TForm1.getsubtree(node: ttreenode);
    var
       TNodeLeaf:TTreeNode;
    begin
    //     if not node.HasChildren then listbox1.Items.Add(node.Text);这句不要,纯粹加子节点,在调用过程前就先判断是否有子树
         TNodeLeaf:=Node.getFirstChild
         While TnodeLeaf<>nil do
         begin 
           listbox1.Items.Add(TnodeLeaf.Text);
           TNodeLeaf:=TNodeLeaf.GetnextSibling;
           if if (TNodeLeaf<>nil) and (TNodeLeaf.hasChildren) then GetSubTree(TNodeLeaf);
               end;
    end;
      

  4.   

    var
      i:integer;
    begin
         listbox1.Items.add(node.Text);
          if Node.HasChildren then      for I := 0 to Node.Count-1 do
          begin        getsubtree(node.Item[i]);
            end;
    end;
      

  5.   

    要从指定节点开始遍历所有子节点,只能用递归procedure TForm1.dispchildtreenode(tempnode:TTreeNode);
    var  i : Integer;
    begin
         For i := 0 To tempnode.count-1 do begin
              if tempnode.Item[i].getFirstChild <> nil then
                  dispchildtreenode(tempnode.item[i]);
              showmessage(Tempnode.Item[i].Text);
         end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
         dispchildtreenode(Treeview1.Selected);
    end;
      

  6.   

    procedure TForm1.dispchildtreenode(tempnode:TTreeNode);
    var  i : Integer;
    begin
         For i := 0 To tempnode.count-1 do begin
              if tempnode.Item[i].getFirstChild <> nil then
                  dispchildtreenode(tempnode.item[i]);
              showmessage(Tempnode.Item[i].Text);
         end;
    end;
      

  7.   

    procedure selectall(node: TTreeNode; var lList TListBox);
    var i: integer;
    begin
       for i := 0 to node.count - 1 do 
       begin
          if node.item[i].count >0 then
             selectall(node,lList )
          else lList.Add(Node.Text);
       end;       
    end
      

  8.   

    procedure TForm1.BitBtn2Click(Sender: TObject);
    var
      I:Integer;
      anode:TTreeNode ;
    begin
      For I:=0 to TreeView1.Items.Count-1 do
      begin
        with TreeView1 do
        begin
          anode := Items[I];
          if anode.Parent = nil then begin
            ListBox1.Items.Add(anode.Text);
          end else
           ListBox1.Items.Add(anode.Text);
        end;
      end;
    end;