Lors du développement d'applications Delphi à l'aide du composant TreeView, vous pouvez tomber sur une situation où vous devez rechercher un nœud d'arbre donné uniquement par le texte du nœud.
Dans cet article, nous vous présenterons une fonction simple et rapide pour obtenir le nœud TreeView par texte.
Tout d'abord, nous allons construire un simple formulaire Delphi contenant un TreeView, un Button, un CheckBox et un composant Edit-laisser tous les noms de composants par défaut.
Comme vous pouvez l'imaginer, le code fonctionnera quelque chose comme: si GetNodeByText donné par Edit1.Text renvoie un nœud et MakeVisible (CheckBox1) est vrai alors sélectionnez le nœud.
La partie la plus importante est la fonction GetNodeByText.
Cette fonction parcourt simplement tous les nœuds à l'intérieur de ATree TreeView à partir du premier nœud (ATree.Items [0]). L'itération utilise la méthode GetNext de la classe TTreeView pour rechercher le nœud suivant dans ATree (recherche à l'intérieur de tous les nœuds de tous les nœuds enfants). Si le nœud avec du texte (étiquette) donné par AValue est trouvé (insensible à la casse), la fonction renvoie le nœud. La variable booléenne AVisible est utilisée pour rendre le nœud visible (s'il est masqué).
une fonction GetNodeByText
(ATree: TTreeView; AValue:Chaîne;
AVisible: Boolean): TTreeNode;
var
Node: TTreeNode;
commencer
Résultat: = néant;
si ATree.Items.Count = 0 ensuite Sortie;
Node: = ATree.Items [0];
tandis que Nœud néant dobeginif UpperCase (Node.Text) = UpperCase (AValue) puis commencer
Résultat: = Noeud;
si AVisible ensuite
Result.MakeVisible;
Pause;
fin;
Node: = Node.GetNext;
fin;
fin;
Voici le code qui exécute l'événement OnClick du bouton «Rechercher un nœud»:
procédure TForm1.Button1Click (expéditeur: TObject);
var
tn: TTreeNode;
commencer
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
si tn = néant ensuite
ShowMessage ('Introuvable!')
elsebegin
TreeView1.SetFocus;
tn.Selected: = True;
fin;
fin;
Remarque: Si le nœud est localisé, le code sélectionne le nœud, sinon un message s'affiche.
C'est ça. Aussi simple que puisse l'être Delphi. Cependant, si vous regardez deux fois, vous verrez que quelque chose manque: le code trouvera le PREMIER nœud donné par AText.