如何查到当前树结点的所有子节点?多谢!(50)

  • 主题发起人 主题发起人 Sdelphi_fu
  • 开始时间 开始时间
S

Sdelphi_fu

Unregistered / Unconfirmed
GUEST, unregistred user!
TTreeNode有GetFirstNode,GetNextSibling,GetPrevSibling方法,用这些方法就可以了
 
能不能给一下例子,多谢!
 
假设TreeView名称为tvTreevarANode:TTreeNode;beginANode:=tvTree.Selected; //当前选中的节点if ANode.HasChildren then //如果有子节点begin ANode:=ANode.GetFirstChild; //得到第一个子节点 while ANode<>nil do ANode:=ANode.getNextSibling; //得到下一个子节点 ShowMessage(ANode.Text); //显示最后一个子节点end;end;
 
你的代码好象只是查到当前结点下一层的子结点,如果是下一层的子节点还有子节点就找不到了.
 
这要用到递归了:procedure FindNode(ANode:TTreeNode);begin while ANode<>nil do begin ShowMessage(ANode.Text); if ANode.HasChildren then begin FindNode(ANode.getFirstChild); end; ANode:=ANode.getNextSibling; end;end;调用:tvTree.FindNode(tvTree.Selected); //将会显示当前选中的节点下的所有子节点
 
遍历所有节点for i:=0 to tree.items.count-1 dobegin tree.items end;
 
to mosac: 你好,tvTree.FindNode(tvTree.Selected);//将会显示当前选中的节点下的所有子节点 好象不是"当前选中的节点下的所有子节点",同时也包含了(从当前点中的同一级的节点).
 
后退
顶部