TreeView中获得一个节点路径

前几天有网友问我如何获得TreeView中一个节点的完整路径,比如
1-
  |
  --3
    |
    ——4
这个时候节点4的路径应该是 1-3-4。虽然很容易实现,不过还是经常在网上看到有人问,
所以我把给他的两个方法(一个是递归,一个非递归)在这里贴出来。

递归函数
function TForm1.GetPath(Node: TTreeNode):string;
begin
  if Node.Parent <> nil then Result := GetPath(Node.Parent)+'-';
  Result := Result+Node.Text;
end;

非递归的示例代码
procedure TForm1.TreeView1Click(Sender: TObject);
var
  s:string;
  Node: TTreeNode;
begin
  Node := TreeView1.Selected;
  s:= '';
  while Node<> nil do
  begin
    s := Node.Text+'-'+s;
    Node := Node.Parent;
  end;
  Caption := s;
end;
不过第二段代码会在最后一个节点的前面多出一个分隔符(“-”号)。所以把他修改一下。
procedure TForm1.TreeView1Click(Sender: TObject);
var
  s:string;
  Node: TTreeNode;
begin
  Node := TreeView1.Selected;
  s:= Node.Text;
  Node := Node.Patent;
  while Node<> nil do
  begin
    s := Node.Text+'-'+s;
    Node := Node.Parent;
  end;
  Caption := s;
end;

posted @ 2005-05-19 19:29  monkeyking  阅读(1659)  评论(0编辑  收藏  举报