Come individuare il nodo TreeView per testo

Durante lo sviluppo di applicazioni Delphi utilizzando il componente TreeView, è possibile imbattersi in una situazione in cui è necessario cercare un nodo dell'albero fornito solo dal testo del nodo.

In questo articolo ti presenteremo una funzione semplice e veloce per ottenere il nodo TreeView tramite testo.

Un esempio di Delfi

Innanzitutto, creeremo un semplice modulo Delphi contenente TreeView, Button, CheckBox e un componente Edit, lasciando tutti i nomi dei componenti predefiniti.

Come puoi immaginare, il codice funzionerà in modo simile: se GetNodeByText dato da Edit1.Text restituisce un nodo e MakeVisible (CheckBox1) è true, quindi seleziona nodo.

La parte più importante è la funzione GetNodeByText.

Questa funzione scorre semplicemente attraverso tutti i nodi all'interno di TreeView di ATree a partire dal primo nodo (ATree.Items [0]). L'iterazione utilizza il metodo GetNext della classe TTreeView per cercare il nodo successivo nell'ATree (cerca 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).

funzione GetNodeByText
(ATree: TTreeView; AValue:Corda;
AVisible: Boolean): TTreeNode;
var
Nodo: TTreeNode;
inizio
Risultato: = zero;
Se ATree.Items.Count = 0 poi Uscita;
Nodo: = ATree.Items [0];
mentre Nodo zero dobeginif UpperCase (Node.Text) = UpperCase (AValue) thenbegin
Risultato: = nodo;
Se AVisible poi
Result.MakeVisible;
Rompere;
fine;
Nodo: = Node.GetNext;
fine;
fine;

Questo è il codice che esegue il pulsante "Trova nodo" nell'evento OnClick:

procedura TForm1.Button1Click (Mittente: TObject);
var
tn: TTreeNode;
inizio
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
Se tn = zero poi
ShowMessage ('Not found!')
elsebegin
TreeView1.SetFocus;
tn.Selezionato: = True;
fine;
fine;

Nota: se il nodo si trova, il codice seleziona il nodo, altrimenti non 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 fornito da AText.