Durante lo sviluppo di applicazioni Delphi utilizzando il componente TreeView, potresti imbatterti in una situazione in cui devi cercare un nodo ad albero dato solo dal testo del nodo.
In questo articolo ti presenteremo una funzione semplice e veloce per ottenere il nodo TreeView per testo.
Un esempio di Delphi
Per prima cosa, costruiremo un semplice form Delphi contenente un TreeView, un Button, CheckBox e un componente Edit - lasciamo tutti i nomi dei componenti di default.
Come puoi immaginare, il codice funzionerà in questo modo: se GetNodeByText fornito da Edit1.Text restituisce un nodo e MakeVisible (CheckBox1) è true, seleziona node.
La parte più importante è la funzione GetNodeByText.
Questa funzione itera semplicemente attraverso tutti i nodi all'interno di ATree TreeView a partire dal primo nodo (ATree.Items [0]). L'iterazione utilizza il metodo GetNext della classe TTreeView per cercare il nodo successivo in ATree (guarda all'interno di tutti i nodi di tutti i nodi figlio). Se viene trovato il nodo con testo (etichetta) fornito da AValue (senza distinzione tra maiuscole e minuscole) la funzione restituisce il nodo. La variabile booleana AVisible viene utilizzata per rendere visibile il nodo (se nascosto).
function GetNodeByText
(ATree: TTreeView; AValue:Corda;
AVisible: Boolean): TTreeNode;
var
Nodo: TTreeNode;
iniziare
Risultato: = zero;
if ATree.Items.Count = 0 poi Exit;
Nodo: = ATree.Items [0];
while Nodo zero dobeginif UpperCase (Node.Text) = UpperCase (AValue) quindi iniziare
Risultato: = nodo;
if Leggibile AV poi
Result.MakeVisible;
break;
fine;
Nodo: = Node.GetNext;
fine;
fine;
Questo è il codice che esegue l'evento OnClick del pulsante "Trova nodo":
procedura TForm1.Button1Click (Sender: TObject);
var
tn: TTreeNode;
iniziare
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
if tn = zero poi
ShowMessage ("Non trovato!")
elsebegin
TreeView1.SetFocus;
tn.Selected: = True;
fine;
fine;
Nota: se il nodo si trova, il codice seleziona il nodo, in caso contrario viene visualizzato un messaggio.
Questo è tutto. Semplice come solo Delphi può essere. Tuttavia, se guardi due volte, vedrai che manca qualcosa: il codice troverà il PRIMO nodo dato da AText.