Conseils

Comment localiser le nœud TreeView par texte

Comment localiser le nœud TreeView par texte


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Lors du développement d'applications Delphi à l'aide du composant TreeView, vous pouvez vous heurter à une situation dans laquelle 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 le texte.

Un exemple Delphi

Premièrement, nous allons construire un simple formulaire Delphi contenant un TreeView, un Button, un CheckBox et un composant Edit, laissant tous les noms de composant par défaut.

Comme vous pouvez l'imaginer, le code fonctionnera à peu près de la manière suivante: si GetNodeByText donné par Edit1.Text renvoie un nœud et que MakeVisible (CheckBox1) est vrai, sélectionnez-le.

La partie la plus importante est la fonction GetNodeByText.

Cette fonction itère simplement à travers tous les nœuds à l'intérieur de ATree TreeView à partir du premier nœud (ATree.Items0). L'itération utilise la méthode GetNext de la classe TTreeView pour rechercher le prochain nœud dans ATree (à l'intérieur de tous les nœuds de tous les nœuds enfants). Si le nœud avec le 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 puis Sortie;
Nœud: = ATree.Items0;
tandis que Nœud néant dobeginif UpperCase (Node.Text) = UpperCase (AValue) alors commencer
Résultat: = Noeud;
si Disponible puis
Result.MakeVisible;
Pause;
fin;
Node: = Node.GetNext;
fin;
fin;

C'est le code qui exécute l'événement OnClick du bouton 'Rechercher un nœud':

procédure TForm1.Button1Click (Sender: TObject);
var
tn: TTreeNode;
commencer
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
si tn = néant puis
ShowMessage ('Introuvable!')
d'autre part
TreeView1.SetFocus;
tn.Selected: = True;
fin;
fin;

Remarque: Si le nœud est localisé, le code le sélectionne. Dans le cas contraire, un message est affiché.

C'est ça. Aussi simple que seul Delphi peut être. Cependant, si vous regardez deux fois, vous constaterez qu'il manque quelque chose: le code trouvera le noeud FIRST donné par AText.



Commentaires:

  1. Feshakar

    la phrase excellente

  2. Cleit

    Tout à fait d'accord avec elle. L'idée d'un bon support.

  3. Tadtasi

    Je pense que vous accepterez l'erreur. Entrez, nous en discuterons. Écrivez-moi en MP, on s'en occupe.

  4. Mimi

    Tu te trompes. Discutons. Écrivez-moi dans PM, nous communiquerons.

  5. Xanthus

    Dans ce quelque chose est aussi pour moi, il me semble que c'est une très bonne idée. Complètement avec vous, je suis d'accord.



Écrire un message