用递归啊, procedure getSub(TmpNode:TTreeNode); begin if TmpNode.count>0 then 实是懒得写 先判断是否有子树,子树若又有子树,则再调用GetSub(子树) end;
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; 我还是不会啊!帮帮我!
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;
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;
要从指定节点开始遍历所有子节点,只能用递归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;
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 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
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;
procedure getSub(TmpNode:TTreeNode);
begin
if TmpNode.count>0 then
实是懒得写
先判断是否有子树,子树若又有子树,则再调用GetSub(子树)
end;
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;
我还是不会啊!帮帮我!
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;
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;
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;
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;
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
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;