Accéder aux noeuds enfants

Résolu
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007 - 6 nov. 2005 à 23:05
FNIAMKE Messages postés 83 Date d'inscription vendredi 17 juillet 2009 Statut Membre 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

7 réponses

monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
7 nov. 2005 à 01:51
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
3
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
6 nov. 2005 à 23:16
Node.Nodes(index)

::|The S@ib|::
MVP C#.NET
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2005 à 23:52
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 nov. 2005 à 02:11
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
monsieurlemouche Messages postés 102 Date d'inscription lundi 29 décembre 2003 Statut Membre Dernière intervention 28 juin 2007
7 nov. 2005 à 13:10
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
7 nov. 2005 à 14:24
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
0
FNIAMKE Messages postés 83 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 27 juin 2016
29 avril 2010 à 12:42
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
0
Rejoignez-nous