Accéder aux noeuds enfants [Résolu]

Messages postés
102
Date d'inscription
lundi 29 décembre 2003
Dernière intervention
28 juin 2007
- - Dernière réponse : FNIAMKE
Messages postés
83
Date d'inscription
vendredi 17 juillet 2009
Dernière intervention
27 juin 2016
- 29 avril 2010 à 12:42
salut,

comment accéder à la liste des noeuds enfants d'un treeview ?
il y a bien une propriété children qui compte le nombre d'enfants mais ne renvoie pas leur index.

pour l'instant, pour extraire l'ensemble des noeuds enfants du noeud x, je fait une boucle sur chaque noeud de la collection nodes et je teste le parent. Si le parent vaut x, le noeud testé convient et je le traite en conséquence.
je trouve cela un peu lourd!

y a-t-il plus direct?

merci de votre aide

monsieurlémouche
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
102
Date d'inscription
lundi 29 décembre 2003
Dernière intervention
28 juin 2007
3
Merci
salut et chapeau pour la rapidité de la réponse...

merci daniel pour ton idée qui ne marche pas (oups) mais qui m'a dépanné


Dim nod1 As node
Dim nod2 As node
Dim i As Integer
Set nod1 = TV.SelectedItem
Debug.Print TV.SelectedItem

Set nod2 = nod1.Child
Debug.Print nod2.Text
For i = 1 To nod1.Children - 1
Set nod2 = nod2.Next
Debug.Print nod2.Text
Next


cela, ça permet de couvrir l'ensemble des enfants d'un noeud

merci

monsieurlemouche

Merci monsieurlemouche 3

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

Codes Sources a aidé 97 internautes ce mois-ci

Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Dernière intervention
26 décembre 2007
0
Merci
Node.Nodes(index)

::|The S@ib|::
MVP C#.NET
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
Dim nod1 As Node

Dim nod2 As Node

Dim i As Integer

Set nod1 = TreeView.SelectedItem



Set nod2 = nod1.Child

MsgBox nod2.Text

For i = 2 To nod1.Children

MsgBox nod2.Next.Text

Next


Daniel
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
Comment elle marche pas, c'est exactement la même !!!



différence:

- MsgBox <--> Debug.Print

simple différence d'affichage

- For i 2 To nod1.Children <--> For i 1 To nod1.Children - 1

exactement le même nombre de fois

- MsgBox nod2.next.Text <--> Set nod2 = nod2.next:: Debug.Print nod2.Text

donne exactement la même chose

enfin chez moi VB6




Daniel
Messages postés
102
Date d'inscription
lundi 29 décembre 2003
Dernière intervention
28 juin 2007
0
Merci
salut,

bon, d'abord j'espère que je ne vous ai pas fâché

ce qui change dans mon listing c'est set nod2=nod2.text

dans le votre, on ne peut pas parcourir plus de deux enfants.

qu'en pensez-vous?

merci, en tout cas, pour votre aide.

monsieurlémouche
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
0
Merci
ok, mea culpa, je reconnais

j'avais testé avec un exemple où il n'y avait que 1 ou 2 fils.

en effet, en rajoutant d'autres enfants, il renvoit toujours le même

le Set est donc nécessaire pour que next renvoit le suivant.



je ne suis pas fâché mais je voulais comprendre pourquoi ça marchait pas.

là ça va j'ai compris.



bonne prog

Daniel
Messages postés
83
Date d'inscription
vendredi 17 juillet 2009
Dernière intervention
27 juin 2016
0
Merci
Salut monsieurlémouche

j'ai essayé ton code qui parcours les enfants d'un treeview.

je constacte que ça ne marche pas bien.

on arrive à parcourir les enfants du noeud sélectionné, mais on arrive pas à parourir les petits enfants des enfants du noeud.
même dans une fonction récurssive, elle ne marchera pas à cause de l'instruction
Set nod1 = TreeView.SelectedItem

ci-joint ton code en question
Dim nod1 As node
Dim nod2 As node
Dim i As Integer
Set nod1 = TV.SelectedItem
Debug.Print TV.SelectedItem
Set nod2 = nod1.Child
Debug.Print nod2.Text
For i = 1 To nod1.Children - 1
Set nod2 = nod2.Next
Debug.Print nod2.Text
Next

Désolé de te ramener en arrières

NIAMKE Francis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.