TrreView

Résolu
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 - 5 avril 2013 à 11:17
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 - 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

3 réponses

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
5 avril 2013 à 12:47
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);

@+
3
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
6 avril 2013 à 16:21
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
0
pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
7 avril 2013 à 16:03
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
0
Rejoignez-nous