So suchen Sie TreeView-Knoten nach Text

Während der Entwicklung von Delphi-Anwendungen mit der TreeView-Komponente kann es vorkommen, dass Sie nach einem Baumknoten suchen müssen, der nur aus dem Text des Knotens besteht.

In diesem Artikel stellen wir Ihnen eine schnelle und einfache Funktion vor, mit der Sie TreeView-Knoten als Text abrufen können.

Ein Delphi-Beispiel

Zunächst erstellen wir ein einfaches Delphi-Formular, das eine TreeView-, eine Button-, eine CheckBox- und eine Edit-Komponente enthält. Belassen Sie dabei alle Standardkomponentennamen.

Wie Sie sich vorstellen können, funktioniert der Code in etwa so: Wenn GetNodeByText von Edit1.Text einen Knoten zurückgibt und MakeVisible (CheckBox1) true ist, wählen Sie node aus.

Der wichtigste Teil ist die GetNodeByText-Funktion.

Diese Funktion durchläuft einfach alle Knoten in ATree TreeView, beginnend mit dem ersten Knoten (ATree.Items [0]). Bei der Iteration wird mit der GetNext-Methode der TTreeView-Klasse nach dem nächsten Knoten im ATree gesucht (es wird nach allen Knoten aller untergeordneten Knoten gesucht). Wenn der von AValue angegebene Knoten mit Text (Bezeichnung) gefunden wird (Groß- / Kleinschreibung wird nicht berücksichtigt), gibt die Funktion den Knoten zurück. Die boolesche Variable AVisible wird verwendet, um den Knoten sichtbar zu machen (falls ausgeblendet)..

Funktion GetNodeByText
(ATree: TTreeView; AValue:String;
AVisible: Boolean): TTreeNode;
var
Knoten: TTreeNode;
Start
Ergebnis: = Null;
wenn ATree.Items.Count = 0 dann Ausgang;
Knoten: = ATree.Items [0];
während Knoten Null Dobeginif UpperCase (Node.Text) = UpperCase (AValue) dann fange an
Ergebnis: = Knoten;
wenn AVisible dann
Result.MakeVisible;
Brechen;
Ende;
Knoten: = Node.GetNext;
Ende;
Ende;

Dies ist der Code, der das OnClick-Ereignis der Schaltfläche "Find Node" ausführt:

Verfahren TForm1.Button1Click (Absender: TObject);
var
tn: TTreeNode;
Start
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
wenn tn = Null dann
ShowMessage ('Nicht gefunden!')
sonst fange an
TreeView1.SetFocus;
tn.Selected: = True;
Ende;
Ende;

Hinweis: Wenn sich der Knoten befindet, wählt der Code den Knoten aus, wenn keine Meldung angezeigt wird.

Das ist es. So einfach kann nur Delphi sein. Wenn Sie jedoch zweimal hinschauen, werden Sie feststellen, dass etwas fehlt: Der Code findet den von AText angegebenen ERSTEN Knoten.