Wie kann man in einem TreeView einen bestimmten Knoten suchen?
Tip von Robert Roßmair: Aufgrund der Datenstruktur eines TreeViews bieten sich bei der Arbeit mit TreeNodes grundsätzlich rekursive Routinen an. Diese Routine durchsucht alle Kinder eines vorgegebenen Knotens "Root" rekursiv nach einem Knoten mit dem gesuchten Text "Name":
function FindNode(Root: TTreeNode; Name: string): TTreeNode; var Temp: TTreeNode; begin Result := Root.GetFirstChild; while Result<>nil do begin if Result.Text=Name then Exit; Temp := Find(Result, Name); if Temp<>nil then begin Result := Temp; Exit; end; Result := Root.GetNextChild(Result); end; end;
Alternativ kann man auch ungenutze Datenfelder einerTreeNode zur Markierung verwenden, nützlich, wenn mehrere Knoten denselben Namen tragen. Meist bietet sich hier z.B. TreeView.StateImage an. Außerdem kann man dadurch die String-Vergleiche durch schnellere Integer-Vergleiche ersetzen.
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch: