Cómo localizar el nodo TreeView por texto

Mientras desarrolla aplicaciones de Delphi utilizando el componente TreeView, puede encontrarse con una situación en la que necesita buscar un nodo de árbol dado solo por el texto del nodo.

En este artículo le presentaremos una función rápida y fácil para obtener el nodo TreeView por texto.

Un ejemplo de Delphi

Primero, crearemos un formulario Delphi simple que contenga un TreeView, un Button, un CheckBox y un componente Edit; deje todos los nombres de componentes predeterminados.

Como puede imaginar, el código funcionará de la siguiente manera: si GetNodeByText proporcionado por Edit1.Text devuelve un nodo y MakeVisible (CheckBox1) es verdadero, seleccione el nodo.

La parte más importante es la función GetNodeByText.

Esta función simplemente itera a través de todos los nodos dentro del ATree TreeView comenzando desde el primer nodo (ATree.Items [0]). La iteración utiliza el método GetNext de la clase TTreeView para buscar el siguiente nodo en el ATree (busca dentro de todos los nodos de todos los nodos secundarios). Si se encuentra el Nodo con texto (etiqueta) dado por AValue (sin distinción entre mayúsculas y minúsculas), la función devuelve el nodo. La variable booleana AVisible se usa para hacer que el nodo sea visible (si está oculto).

función GetNodeByText
(ATree: TTreeView; AValue:Cuerda;
AVisible: Boolean): TTreeNode;
var
Nodo: TTreeNode;
empezar
Resultado: = nulo;
Si ATree.Items.Count = 0 luego Salida;
Nodo: = ATree.Items [0];
mientras Nodo nulo dobeginif UpperCase (Node.Text) = UpperCase (AValue) entonces comenzar
Resultado: = Nodo;
Si Visible luego
Result.MakeVisible;
Descanso;
final;
Nodo: = Nodo.GetNext;
final;
final;

Este es el código que ejecuta el evento OnClick del botón 'Buscar nodo':

procedimiento TForm1.Button1Click (Remitente: TObject);
var
tn: TTreeNode;
empezar
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
Si tn = nulo luego
ShowMessage ('¡No encontrado!')
elsebegin
TreeView1.SetFocus;
tn.Seleccionado: = Verdadero;
final;
final;

Nota: Si el nodo está ubicado, el código lo selecciona, si no se muestra un mensaje.

Eso es. Tan simple como solo Delphi puede ser. Sin embargo, si mira dos veces, verá que falta algo: el código encontrará el PRIMER nodo proporcionado por AText.