[Déplacé VB6 --> VBA] parcourir les noeuds enfants d'un noeud d'un treeview sous

FNIAMKE Messages postés 83 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 27 juin 2016 - 29 avril 2010 à 11:00
vampirius666 Messages postés 2 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 2 août 2010 - 21 juil. 2010 à 16:13
Bonjour Mme/Mr!

J'ai un souci avec les treeview sous access 2003.

Je souhaite parcourir les sous noeud d'un noeud d'un treeview.
Quand je click sur le checkbox du noeud du treeview, je veux que tous les sous noeuds(noeuds enfants) de ce noeud soit coché.

je ne sais pas comment parcourir les noeuds enfants du noeud coché.

Merci de m'apporter assistance


NIAMKE Francis

1 réponse

vampirius666 Messages postés 2 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 2 août 2010
21 juil. 2010 à 16:13
Salut ! Je me suis posé exactement la même question que toi il y a environ 1h30. Mais depuis j'ai trouvé une solution à mon ( notre ) problème.

Au début je voulais faire une collection de noeuds pour les enfants qui devaient êtres cochés en même temps que le père. Puis utiliser un For Each pour les sélectionner successivement.

Mais ma collection ne marchait pas .. problème que j'ai pas résolu.

Du coup j'ai trop contourné le problème pour arriver à ce code, basé sur les index des noeuds :

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)

Dim nb_Childs As Integer 
Dim index1 As Integer
 
 nb_Childs = Node.Children ' c'est le nombre d'enfant "contenus" dans le père qui a été coché
 

    If Node.Children > 0 Then
    
 
        index1 = Node.Child.Index ' c'est l'indice du premier enfant du noeud qui a été coché
 

   
            Select Case Node.Checked
                Case Is = True
                    For i = index1 To (index1 + nb_Childs - 1)' du 1er enfant au dernier
                            Me.TreeView1.Nodes(i).Checked = True 
                          
                    Next i
                    
                    
                Case Is = False
                     For i = index1 To (index1 + nb_Childs - 1)

                            Me.TreeView1.Nodes(i).Checked = False 
                          
                    Next i
                  
                   
            End Select
    End If
    
End Sub


En effet dans un treeview, les index des noeuds sont attribués dans l'ordre croissant. Donc une fois que tu connais l'index du premier noeuds "enfant", tu sais que celui d'après a un index +1 etc...

Je sais pas si c'est clair... T'a compris ?

Dis moi si t'as des questions.


++

tom
0
Rejoignez-nous