Cochée programmatiquement le node d'un Treeview

Résolu
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 19 nov. 2008 à 13:52
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 19 nov. 2008 à 21:10
Bonjour à tous,

   Sous Access 2002, j'utilise un contrôle Treeview possédant un certain nombre de noeuds parents constitués eux-mêmes d'enfants.

   Je me suis aperçu que si l'on coche par code le noeud d'un parent, cela n'est pas pris en compte au niveau de l'affichage (je voulais coché tous les enfants d'un coup si on cliquait sur son parent). J'ai fait un bout de code qui marche bien. Mais quid si je veux coché TOUS les noeuds du Treeview d'un coup en cliquant par exemple sur un bouton. Y aurait-il une autre manière que d'ajouter un noeud parent général ?

Merci de votre réponse.

Calade

7 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
19 nov. 2008 à 14:57
Valide en appuyant sur le bouton accepté...
Contente d'avoir pu t'aider

S.L.B.
<hr />
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
19 nov. 2008 à 14:08
Bonjour à tous,


   J'ai oublié de précise que faire un

Call Treeview_Nodecheck(MyNode) ne suffit pas à cocher ce noeud.

Merci de votre réponse.


Calade
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
19 nov. 2008 à 14:08
Bonjour,


Sur l'événement click tu n'as qu'a parcourir ton treeview et cocher les cases qui ne sont pas cochées.
Tu n'as pas besoin d'ajouter un noeud parent...



Dim mNode As Node
Dim Node As Node

PrivateSub Command1_Click()
Dim i AsInteger
' Pour chaque noeud du treeview
ForEach Node In TreeView1.Nodes
    i = i + 1
   ' On verfie que le noeud est coché
    If TreeView1.Nodes.Item(i).Checked = false Then
         TreeView1.Nodes.Item(i).Checked = true
    EndIf



Next





End
Sub




J'ai pas testé...





S.L.B.
<hr />
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
19 nov. 2008 à 14:52
Bonjour Lilith,

   REPONSE ACCEPTEE

   En fait cela marche nien, une erreur de logique de ma part m'avait fait croire le contraire.

Merci pour tout.

Calade
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
19 nov. 2008 à 15:34
ForEach Node In TreeView1.Nodes
i = i + 1
' On verfie que le noeud est coché
If TreeView1.Nodes.Item(i).Checked = false Then
TreeView1.Nodes.Item(i).Checked = true
EndIf

Next

... pourquoi iterer sur chaque Node, plutot que de faire une boucle pour i, allant de 1 à TreeView1.Nodes.Count ?


faire plutôt :

For Each Node In TreeView1.Nodes
' On verfie que le noeud est coché (allez savoir pourquoi !)
If Nodes.Checked = false Then
Node.Checked = true
End If
Next
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
19 nov. 2008 à 15:38
@Renfield :
Car j'aime la complication lol... Oui c'est plus direct en effet. J'ai utilisé i parce que j'ai adapté une exemple de code que j'ai developpé dans lequel j'avais besoin iterer chaque noeud.
Merci Renfield

S.L.B.
<hr />
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
19 nov. 2008 à 21:10
no soucy
0