OVH Cloud OVH Cloud

A nouveau ZOURY

10 réponses
Avatar
JCM
Salut Zoury

je reviens vers toi car je mouline dans la choucroute

Tu m'as indiqu=E9 comment coch=E9 les noeuds sous-type si on=20
coche le type, =E0 contrario comment d=E9coch=E9 le type si on=20
d=E9coche un seul sous-type.

quand les noeuds sont coch=E9s je veux remplir un listview=20
avec uniquement les d=E9penses correspondantes aux checkBox=20
coch=E9es du treeView. j'ai cr=E9=E9 une proc=E9dure :

Private Sub TransfertLV(ByRef sIDdepense As String)
Dim I As Integer
Dim laligne As ListItem
chemin =3D CheminDepenses
ADOcnx.Close
'LVdepense.ListItems.Clear
Call MyFonctions.InitConnection
Call MyFonctions.ExecSQL("Select * from depenseACFCI2002=20
where IDdepense=3D'" & leproduit & "'", ADOrst, ADOcnx)
While Not ADOrst.EOF
Set laligne =3D LVdepense.ListItems.Add(, , CStr(ADOrst!
libelle))
I =3D I + 1
laligne.Tag =3D "ListItem " & I
laligne.SubItems(1) =3D (ADOrst!montant)
If right$(ADOrst("IDdepense"), 2) =3D "00" Then
laligne.ForeColor =3D RGB(255, 0, 0)
End If
ADOrst.MoveNext
Wend
End Sub

cela marche =E0 partir d'un cmdAffiche, je voudrais=20
supprimer ce bouton mais je ne vois pas o=F9 integrer le :

Call TransfertLV(Node.Tag)


Dans mon Listview je veux afficher les lignes types en=20
rouge, avec le code ci-dessus seule la la premi=E8re colonne=20
s'affiche en rouge, je voudrais que ce soit en rouge et=20
gras

D=E9sol=E9 de te harceller mais je suis dans une vrai gal=E8re

Merci pour tes r=E9ponses
cordialement
Jean claude

10 réponses

Avatar
Zoury
> Tu m'as indiqué comment coché les noeuds sous-type si on
coche le type, à contrario comment décoché le type si on
décoche un seul sous-type.



Tu veux dire que si on décoche le dernier sous-types cochés, le type devrait
aussi se décocher ?


***quand les noeuds sont cochés*** je veux remplir un listview
avec uniquement les dépenses correspondantes aux checkBox
cochées du treeView


<snip>
cela marche à partir d'un cmdAffiche, je voudrais
supprimer ce bouton mais je ne vois pas où integrer le



Note les étoiles dans le texte.. ça répond à la question.. ;O)
Appelle ta fonction dans l'événement NodeCheck()


Dans mon Listview je veux afficher les lignes types en
rouge, avec le code ci-dessus seule la la première colonne
s'affiche en rouge, je voudrais que ce soit en rouge et
gras



voici un exemple :
http://groups.google.com/groups?threadm=uslvAprnBHA.1608%40tkmsftngp04


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
JCM
Salut Zoury

Tu veux dire que si on décoche le dernier sous-types
cochés, le type devrait aussi se décocher ?



je veux dire si on decoche un ou plusieurs sous-type le
type devrait se decocher

Cordialement
Jean Claude

-----Message d'origine-----
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Zoury
> je veux dire si on decoche un ou plusieurs sous-type le
type devrait se decocher



tu peux ajouter ces lignes dans l'événement NodeCheck(), note que je n'ai
pas testé le code mais la logique y est.. :
'***
' s'assure que le noeud (dé)coché soit bien au 2ieme niveau (sous-type)
If (Node.Parent Is Node.Root) Then
' vérifie si on vient de décoché le sous-type
' ET si son Parent est coché
If (Not Node.Checked And Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
JCM
Salut Zoury

je ne vois pas ou placer ces codes :
pour le transfert des données dans le listview
Call TransfertLV(Node.Tag)

et pour décocher les sous-types

' s'assure que le noeud (dé)coché soit bien au 2ieme niveau (sous-type)
If (Node.Parent Is Node.Root) Then
' vérifie si on vient de décoché le sous-type
' ET si son Parent est coché
If (Not Node.Checked And Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If



dans

Private Sub CheckNode(ByRef Node As MSComctlLib.Node, ByRef bChecked As
Boolean, Optional ByRef bRecursive As Boolean)
Dim nd As MSComctlLib.Node
' on coche le noeud courant
Node.Checked = bChecked
' on vérifie s'il a des p'tits et si on doit s'en préoccuper
If (bRecursive And Node.Children > 0) Then
' il a des p'tits, on rappelle la fonction sur chacun d'eux
Set nd = Node.Child ' renvoit le premier noeud du sous-niveau
Do Until nd Is Nothing
Call CheckNode(nd, bChecked, bRecursive)
Set nd = nd.Next ' renvoit le prochain noeud du meme niveau
Loop
End If
End Sub

J'ai essayé plusieurs solutions et rien ne se passe

Cordialement
Jean Claude




"Zoury" a écrit dans le message de
news:
> je veux dire si on decoche un ou plusieurs sous-type le
> type devrait se decocher

tu peux ajouter ces lignes dans l'événement NodeCheck(), note que je n'ai
pas testé le code mais la logique y est.. :
'***
' s'assure que le noeud (dé)coché soit bien au 2ieme niveau


(sous-type)
If (Node.Parent Is Node.Root) Then
' vérifie si on vient de décoché le sous-type
' ET si son Parent est coché
If (Not Node.Checked And Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/




Avatar
Zoury
Dans ton code tu as la méthode CheckNode() que tu as codé et il y a
l'événement CheckNode() que le TreeView déclenche lorsque l'utilisateur
coche ou décoche un noeud. Ce sont 2 méthodes très différentes.

Nous allons maitenant essayer de bien implémenter ta fonction.

Voici une liste des tâches à effectuer lorsque l'utilisateur coche un noeud
(corrige au besoin, je fais ça de mémoire selon tes derniers posts ;O) ) :
- Coché les sous-noeuds du noeud coché
- Mettre à jour le ListView

Voici maitenant les tâches à effectuer lorsque l'utilisateur décoche un
noeud :
- Décoché le parent si le noeud décoché est un sous-type (niveau 2 dans
l'arbre)

Maitenant toutes ces actions se passe lorsque l'utilisateur coche et décoche
des noeuds, nous devons donc implémenter l'événement NodeCheck() du TreeView
pour accomplir ces tâches en temps opportuns.
'***
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
' on met à jour le ListView
Call TransfertLV(Node.Tag)
Else
' on vérifie si le noeud est un sous-type
If (Node.Parent Is Node.Root) Then
' vérifie si son Parent est coché
If (Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If
End If
End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

"JCM" a écrit dans le message de
news:%
Salut Zoury

je ne vois pas ou placer ces codes :
pour le transfert des données dans le listview
Call TransfertLV(Node.Tag)

et pour décocher les sous-types

' s'assure que le noeud (dé)coché soit bien au 2ieme niveau (sous-type)
> If (Node.Parent Is Node.Root) Then
> ' vérifie si on vient de décoché le sous-type
> ' ET si son Parent est coché
> If (Not Node.Checked And Node.Parent.Checked) Then
> Node.Parent.Checked = False
> End If
> End If

dans

Private Sub CheckNode(ByRef Node As MSComctlLib.Node, ByRef bChecked As
Boolean, Optional ByRef bRecursive As Boolean)
Dim nd As MSComctlLib.Node
' on coche le noeud courant
Node.Checked = bChecked
' on vérifie s'il a des p'tits et si on doit s'en préoccuper
If (bRecursive And Node.Children > 0) Then
' il a des p'tits, on rappelle la fonction sur chacun d'eux
Set nd = Node.Child ' renvoit le premier noeud du sous-niveau
Do Until nd Is Nothing
Call CheckNode(nd, bChecked, bRecursive)
Set nd = nd.Next ' renvoit le prochain noeud du meme niveau
Loop
End If
End Sub

J'ai essayé plusieurs solutions et rien ne se passe

Cordialement
Jean Claude




"Zoury" a écrit dans le message de
news:
> > je veux dire si on decoche un ou plusieurs sous-type le
> > type devrait se decocher
>
> tu peux ajouter ces lignes dans l'événement NodeCheck(), note que je


n'ai
> pas testé le code mais la logique y est.. :
> '***
> ' s'assure que le noeud (dé)coché soit bien au 2ieme niveau
(sous-type)
> If (Node.Parent Is Node.Root) Then
> ' vérifie si on vient de décoché le sous-type
> ' ET si son Parent est coché
> If (Not Node.Checked And Node.Parent.Checked) Then
> Node.Parent.Checked = False
> End If
> End If
> '***
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
>




Avatar
JCM
Salut Zoury


Merci pour cette réponse, néanmoins :

Je n'arrive pas à décocher le sous-type si on décoche un sou-sous-type

Et pour l'affichage dans le listview, je pense qu'il est préférable de faire
un boucle sur les chekbox cochées du treeview, car on si décoche une
checkbox cela ne supprime pas l'information dans le listview

Cordialement
Jean Claude
"Zoury" a écrit dans le message de
news:
Dans ton code tu as la méthode CheckNode() que tu as codé et il y a
l'événement CheckNode() que le TreeView déclenche lorsque l'utilisateur
coche ou décoche un noeud. Ce sont 2 méthodes très différentes.

Nous allons maitenant essayer de bien implémenter ta fonction.

Voici une liste des tâches à effectuer lorsque l'utilisateur coche un


noeud
(corrige au besoin, je fais ça de mémoire selon tes derniers posts ;O) ) :
- Coché les sous-noeuds du noeud coché
- Mettre à jour le ListView

Voici maitenant les tâches à effectuer lorsque l'utilisateur décoche un
noeud :
- Décoché le parent si le noeud décoché est un sous-type (niveau 2 dans
l'arbre)

Maitenant toutes ces actions se passe lorsque l'utilisateur coche et


décoche
des noeuds, nous devons donc implémenter l'événement NodeCheck() du


TreeView
pour accomplir ces tâches en temps opportuns.
'***
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
' on met à jour le ListView
Call TransfertLV(Node.Tag)
Else
' on vérifie si le noeud est un sous-type
If (Node.Parent Is Node.Root) Then
' vérifie si son Parent est coché
If (Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If
End If
End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

"JCM" a écrit dans le message de
news:%
> Salut Zoury
>
> je ne vois pas ou placer ces codes :
> pour le transfert des données dans le listview
> Call TransfertLV(Node.Tag)
>
> et pour décocher les sous-types
>
> ' s'assure que le noeud (dé)coché soit bien au 2ieme niveau (sous-type)
> > If (Node.Parent Is Node.Root) Then
> > ' vérifie si on vient de décoché le sous-type
> > ' ET si son Parent est coché
> > If (Not Node.Checked And Node.Parent.Checked) Then
> > Node.Parent.Checked = False
> > End If
> > End If
>
> dans
>
> Private Sub CheckNode(ByRef Node As MSComctlLib.Node, ByRef bChecked As
> Boolean, Optional ByRef bRecursive As Boolean)
> Dim nd As MSComctlLib.Node
> ' on coche le noeud courant
> Node.Checked = bChecked
> ' on vérifie s'il a des p'tits et si on doit s'en préoccuper
> If (bRecursive And Node.Children > 0) Then
> ' il a des p'tits, on rappelle la fonction sur chacun d'eux
> Set nd = Node.Child ' renvoit le premier noeud du sous-niveau
> Do Until nd Is Nothing
> Call CheckNode(nd, bChecked, bRecursive)
> Set nd = nd.Next ' renvoit le prochain noeud du meme niveau
> Loop
> End If
> End Sub
>
> J'ai essayé plusieurs solutions et rien ne se passe
>
> Cordialement
> Jean Claude
>
>
>
>
> "Zoury" a écrit dans le message de
> news:
> > > je veux dire si on decoche un ou plusieurs sous-type le
> > > type devrait se decocher
> >
> > tu peux ajouter ces lignes dans l'événement NodeCheck(), note que je
n'ai
> > pas testé le code mais la logique y est.. :
> > '***
> > ' s'assure que le noeud (dé)coché soit bien au 2ieme niveau
> (sous-type)
> > If (Node.Parent Is Node.Root) Then
> > ' vérifie si on vient de décoché le sous-type
> > ' ET si son Parent est coché
> > If (Not Node.Checked And Node.Parent.Checked) Then
> > Node.Parent.Checked = False
> > End If
> > End If
> > '***
> >
> > --
> > Cordialement
> > Yanick Lefebvre - MVP pour Visual Basic
> > http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> > http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
> >
> >
>
>




Avatar
JCM
Salut Zoury


Merci pour cette réponse, néanmoins :

Je n'arrive pas à décocher le sous-type si on décoche un
sou-sous-type

Et pour l'affichage dans le listview, je pense qu'il est
préférable de faire
un boucle sur les chekbox cochées du treeview, car on si
décoche une
checkbox cela ne supprime pas l'information dans le
listview

Cordialement
Jean Claude

-----Message d'origine-----
Dans ton code tu as la méthode CheckNode() que tu as codé


et il y a
l'événement CheckNode() que le TreeView déclenche lorsque


l'utilisateur
coche ou décoche un noeud. Ce sont 2 méthodes très


différentes.

Nous allons maitenant essayer de bien implémenter ta


fonction.

Voici une liste des tâches à effectuer lorsque


l'utilisateur coche un noeud
(corrige au besoin, je fais ça de mémoire selon tes


derniers posts ;O) ) :
- Coché les sous-noeuds du noeud coché
- Mettre à jour le ListView

Voici maitenant les tâches à effectuer lorsque


l'utilisateur décoche un
noeud :
- Décoché le parent si le noeud décoché est un sous-type


(niveau 2 dans
l'arbre)

Maitenant toutes ces actions se passe lorsque


l'utilisateur coche et décoche
des noeuds, nous devons donc implémenter l'événement


NodeCheck() du TreeView
pour accomplir ces tâches en temps opportuns.
'***
Private Sub TreeView1_NodeCheck(ByVal Node As


MSComctlLib.Node)
' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
' on met à jour le ListView
Call TransfertLV(Node.Tag)
Else
' on vérifie si le noeud est un sous-type
If (Node.Parent Is Node.Root) Then
' vérifie si son Parent est coché
If (Node.Parent.Checked) Then
Node.Parent.Checked = False
End If
End If
End If
End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/

"JCM" a écrit dans le


message de
news:%
Salut Zoury

je ne vois pas ou placer ces codes :
pour le transfert des données dans le listview
Call TransfertLV(Node.Tag)

et pour décocher les sous-types

' s'assure que le noeud (dé)coché soit bien au 2ieme




niveau (sous-type)
> If (Node.Parent Is Node.Root) Then
> ' vérifie si on vient de décoché le sous-type
> ' ET si son Parent est coché
> If (Not Node.Checked And Node.Parent.Checked)




Then
> Node.Parent.Checked = False
> End If
> End If

dans

Private Sub CheckNode(ByRef Node As MSComctlLib.Node,




ByRef bChecked As
Boolean, Optional ByRef bRecursive As Boolean)
Dim nd As MSComctlLib.Node
' on coche le noeud courant
Node.Checked = bChecked
' on vérifie s'il a des p'tits et si on doit s'en




préoccuper
If (bRecursive And Node.Children > 0) Then
' il a des p'tits, on rappelle la fonction sur




chacun d'eux
Set nd = Node.Child ' renvoit le premier noeud




du sous-niveau
Do Until nd Is Nothing
Call CheckNode(nd, bChecked, bRecursive)
Set nd = nd.Next ' renvoit le prochain




noeud du meme niveau
Loop
End If
End Sub

J'ai essayé plusieurs solutions et rien ne se passe

Cordialement
Jean Claude




"Zoury" a écrit dans le




message de
news:
> > je veux dire si on decoche un ou plusieurs sous-




type le
> > type devrait se decocher
>
> tu peux ajouter ces lignes dans l'événement NodeCheck




(), note que je
n'ai
> pas testé le code mais la logique y est.. :
> '***
> ' s'assure que le noeud (dé)coché soit bien au




2ieme niveau
(sous-type)
> If (Node.Parent Is Node.Root) Then
> ' vérifie si on vient de décoché le sous-type
> ' ET si son Parent est coché
> If (Not Node.Checked And Node.Parent.Checked)




Then
> Node.Parent.Checked = False
> End If
> End If
> '***
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 -




http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml -




http://www.mztools.com/
>
>






.



Avatar
Zoury
Hello! :O)

Je n'arrive pas à décocher le sous-type si on décoche un
sou-sous-type



tu peux modifier le code de TreeView1_NodeCheck.. au lieu de :
'***
If (Node.Parent Is Node.Root) Then
'***
essai :
'***
If (Not Node Is Node.Root) Then
'***
ce qui signifie que le noeud parent d'un noeud sera toujours décoché en même
temps.. (sauf pour le premier niveau)

Et pour l'affichage dans le listview, je pense qu'il est
préférable de faire
un boucle sur les chekbox cochées du treeview, car on si
décoche une
checkbox cela ne supprime pas l'information dans le
listview



Tu ne peux pas enlèver l'information du noeud ayant été décoché ?
'***
Call ListView1.ListItem.Remove(Node.Key)
'***
Je ne sais pas comment tu rempli le listview, mais si tu veux garder une
relation entre un ListItem et un Node, tu n'as qu'utiliser la même clé lors
de l'ajout.
Quelque chose comme :
'***
Call ListView1.ListItems.Add(, Node.Key, Node.Text)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
JCM
Salut Zoury

j'ai fait le code suivant, cela décoche le type mais pas
le sous-type

Private Sub TVdepense_NodeCheck(ByVal Node As
MSComctlLib.Node)
' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
'définition du produit (type)
leproduit = Node.Tag
' on met à jour le ListView
Call TransfertLV(Node.Tag)
Else
' on vérifie si le noeud est un sous-type (quand
on décoche le type)
'If (Node Is Node.Root) Then
If (Node.Parent Is Node.Root) Then
' vérifie si son Parent est coché
If (Node.Parent.Checked) Then
Node.Parent.Checked = False
' on vérifie si le noeud est un sous-sous-
type (quand on décoche le sous-type)
If (Node.Child Is Node.Root) Then
'vérifie si son Parent est coché
If (Node.Child.Checked) Then
Node.Child.Checked = False
End If
End If
End If
End If
End If
End Sub

Cordialement
Jean Claude
-----Message d'origine-----
Hello! :O)

Je n'arrive pas à décocher le sous-type si on décoche un
sou-sous-type



tu peux modifier le code de TreeView1_NodeCheck.. au lieu


de :
'***
If (Node.Parent Is Node.Root) Then
'***
essai :
'***
If (Not Node Is Node.Root) Then
'***
ce qui signifie que le noeud parent d'un noeud sera


toujours décoché en même
temps.. (sauf pour le premier niveau)

Et pour l'affichage dans le listview, je pense qu'il est
préférable de faire
un boucle sur les chekbox cochées du treeview, car on si
décoche une
checkbox cela ne supprime pas l'information dans le
listview



Tu ne peux pas enlèver l'information du noeud ayant été


décoché ?
'***
Call ListView1.ListItem.Remove(Node.Key)
'***
Je ne sais pas comment tu rempli le listview, mais si tu


veux garder une
relation entre un ListItem et un Node, tu n'as


qu'utiliser la même clé lors
de l'ajout.
Quelque chose comme :
'***
Call ListView1.ListItems.Add(, Node.Key, Node.Text)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Zoury
essai comme ceci :

' coche/décoche les noeuds récursivement
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)

Dim nd As MSComctlLib.Node

' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
Else
' on vérifie si le noeud n'est pas à la racine
If (Not Node Is Node.Root) Then

' décoche tous les ancêtres du noeud
Set nd = Node.Parent
Do Until nd Is Nothing
nd.Checked = False
Set nd = nd.Parent
Loop

'' décoche son parent seulement
'Node.Parent.Checked = False

End If
End If
End Sub

Avec ce code, si tu décoches un enfant, les ancêtres seront tous décochés..
si tu mets la boucle en commentaire et décommente le code en dessous, seul
le parent immédiat du noeud sera décoché..
Remarque que je ne sais plus trop ce que tu souhaites faire.. si je n'ai
t'ai pas répondu correctement, reexplique le problème actuel. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
"JCM" a écrit dans le message de
news:795e01c476d7$1ed92510$
Salut Zoury

j'ai fait le code suivant, cela décoche le type mais pas
le sous-type

Private Sub TVdepense_NodeCheck(ByVal Node As
MSComctlLib.Node)
' on vérifie si le noeud vient d'être coché
If (Node.Checked) Then
' on coche les sous-noeuds résursivement
Call CheckNode(Node, True, True)
'définition du produit (type)
leproduit = Node.Tag
' on met à jour le ListView
Call TransfertLV(Node.Tag)
Else
' on vérifie si le noeud est un sous-type (quand
on décoche le type)
'If (Node Is Node.Root) Then
If (Node.Parent Is Node.Root) Then
' vérifie si son Parent est coché
If (Node.Parent.Checked) Then
Node.Parent.Checked = False
' on vérifie si le noeud est un sous-sous-
type (quand on décoche le sous-type)
If (Node.Child Is Node.Root) Then
'vérifie si son Parent est coché
If (Node.Child.Checked) Then
Node.Child.Checked = False
End If
End If
End If
End If
End If
End Sub

Cordialement
Jean Claude
-----Message d'origine-----
Hello! :O)

Je n'arrive pas à décocher le sous-type si on décoche un
sou-sous-type



tu peux modifier le code de TreeView1_NodeCheck.. au lieu


de :
'***
If (Node.Parent Is Node.Root) Then
'***
essai :
'***
If (Not Node Is Node.Root) Then
'***
ce qui signifie que le noeud parent d'un noeud sera


toujours décoché en même
temps.. (sauf pour le premier niveau)

Et pour l'affichage dans le listview, je pense qu'il est
préférable de faire
un boucle sur les chekbox cochées du treeview, car on si
décoche une
checkbox cela ne supprime pas l'information dans le
listview



Tu ne peux pas enlèver l'information du noeud ayant été


décoché ?
'***
Call ListView1.ListItem.Remove(Node.Key)
'***
Je ne sais pas comment tu rempli le listview, mais si tu


veux garder une
relation entre un ListItem et un Node, tu n'as


qu'utiliser la même clé lors
de l'ajout.
Quelque chose comme :
'***
Call ListView1.ListItems.Add(, Node.Key, Node.Text)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 -


http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.