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:


Delphi FAQ