TrreView [Résolu]

Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
- - Dernière réponse : pierrotk10d
Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
- 7 avril 2013 à 16:03
Bonjour
Soit un TreeView avec plusieurs noeuds dans la racine. Chaque noeud pouvant avoir ou pas des enfants. Suivant croquis ci dessous
| Parent_0 (sans enfant)
| Parent_1 (avec 2 enfants) 
          | Enfant_0 de parent_1
          | Enfant_1 de parent_1
| Parent_2 (sans enfant)
| Parent_3 (avec 1 enfant)
          | Enfant_0 du parent_3

Comment peut on récupérer le nom du noued parent d'un enfant lors d'un clic sur le nom de l'enfant.
Exemples
[list]
Clic sur Enfant_1 de parent_1 doit renvoyer Parent_1
Clic sur Parent_2 doit renvoyer Parent_2
Clic sur Enfant_0 de parent_3 doit renvoyer Parent_3
/list

En vous remerciant par avance de votre aide

pierrot
Afficher la suite 
A voir également:

3 réponses

Meilleure réponse
Messages postés
248
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2016
5
3
Merci
Salut
function TreeNodeParent(aTree: TTreeNode): string;
begin
    if aTree.Parent.Index = -1 then
        Result := aTree.Text
    else
        Result := aTree.Parent.Text;
end;

Exemple d'utilisation
Edit1.Text := TreeNodeParent(TreeView1.Selected);

@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_yanb
Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
2
0
Merci
Bonjour,
Merci de ton aide.
C'est la 1ère fois que j'utilise le TTreeView et dans tous ces noeuds je m'en suis fait des sacs ......de noeuds
Dans mon TTreeView j'ai des parents qui ont des enfants , des petits enfants et des petits petits enfants. Il fallait donc remonter à la racine sans en oublier.
Voici la fonction que j'ai tiré de ton exemple.


Function GetRacine(aTV: TTreeView): string;
Var NoeudSelected, NoeudParent: TTreeNode;
n: Integer;
cRacine: String;
Begin
cRacine := '';
NoeudSelected := aTV.Selected;
n := NoeudSelected.Level;
if n = 0 then
Result := NoeudSelected.Text
else begin
cRacine := NoeudSelected.Text;
Repeat
NoeudParent := NoeudSelected.Parent;
cRacine := NoeudParent.Text + '\' + cRacine;
NoeudSelected := NoeudParent;
Dec(n);
until n = 0;
Result := cRacine;
end;
end;


Appelée par


procedure TForm1.TVClick(Sender: TObject);
begin
Edit1.Text := GetRacine(TV);
end;


Merci encore

pierrot
Commenter la réponse de pierrotk10d
Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
2
0
Merci
Bonjour,
J'étais trop heureux du résultat. Après réflexion j'ai optimisé cette fonction .


Function GetRacine(aTV: TTreeView): string;
Var NoeudSelected, NoeudParent: TTreeNode;
    n: Integer;
    cRacine: String;
Begin
   NoeudSelected := aTV.Selected;
   n := NoeudSelected.Level;
   cRacine := NoeudSelected.Text;
   While n <> 0 do begin
      NoeudParent := NoeudSelected.Parent;
      cRacine := NoeudParent.Text + '\' + cRacine;
      NoeudSelected := NoeudParent;
      Dec(n);
   end;
   Result := cRacine;
end;



pierrot
Commenter la réponse de pierrotk10d