Hier noch eine Alternative ohne Verwendung einer StringList. Aufruf erfolgt analog, zusätzlich ist das Trennzeichen anzugeben (könnte natürlich auch fest "verdrahtet" werden):
Delphi-Quellcode:
function SelectNode(Path:String;Delimiter:Char;Tree:TTreeView):Boolean;
var p : Integer;
SubStr : String;
aNode,
orgSel : TTreeNode;
begin
orgSel:=Tree.Selected;
aNode :=Tree.TopItem;
repeat
p:=pos(Delimiter,Path);
if p=0 then SubStr:=Path
else begin SubStr:=copy(Path,1,pred(p));
delete(Path,1,p);
end;
while (aNode.Text<>SubStr) and
(aNode.GetNextChild(aNode)<>nil) do aNode:=aNode.getNextChild(aNode);
if aNode<>nil then begin Tree.Selected:=aNode;
aNode:=aNode.getFirstChild;
end;
until (p=0) or (aNode=nil);
Result:=(Tree.Selected.Text=SubStr);
if not(Result) then Tree.Selected:=orgSel
end;