Accéder aux noeuds enfants [Résolu]

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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 6 nov. 2005 à 23:16
0
Merci
Node.Nodes(index)

::|The S@ib|::
MVP C#.NET
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 6 nov. 2005 à 23:52
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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 7 nov. 2005 à 02:11
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
monsieurlemouche 102 Messages postés lundi 29 décembre 2003Date d'inscription 28 juin 2007 Dernière intervention - 7 nov. 2005 à 13:10
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
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 7 nov. 2005 à 14:24
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
FNIAMKE 83 Messages postés vendredi 17 juillet 2009Date d'inscription 27 juin 2016 Dernière intervention - 29 avril 2010 à 12:42
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.