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;