j'utilise un treeview avec la propriété checkboxes à vrai.
Mon problème est le suivant : je veux, pour certains noeuds , empécher de
cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un
tableau si le noeud considéré peut être coché : si non je voudrai empêcher
le "cochage" de ce noeud.
Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être
non coché : du style node.checked = false
or le noeud se coche malgré tout car sans doute cette procédure s'effectue
AVANT que le noeud soit réellement coché.
Comment empecher ce noeud d'être coché..?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques93
Bonjour Driss HANIB, Driss HANIB a écrit :
Bonjour à tous
j'utilise un treeview avec la propriété checkboxes à vrai. Mon problème est le suivant : je veux, pour certains noeuds , empécher de cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un tableau si le noeud considéré peut être coché : si non je voudrai empêcher le "cochage" de ce noeud. Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être non coché : du style node.checked = false or le noeud se coche malgré tout car sans doute cette procédure s'effectue AVANT que le noeud soit réellement coché. Comment empecher ce noeud d'être coché..?
Tu peux utiliser la propriété 'Tag' du nœud, avant l'événement 'Click', par exemple :
tvw.nodes("x").tag = "NOCHECK"
et sur l'événement 'Click' tu rétablis la situation, en fonction de cette propriété.
Un exemple (dont le but est différent) avec des CheckBox à trois états :
j'utilise un treeview avec la propriété checkboxes à vrai.
Mon problème est le suivant : je veux, pour certains noeuds , empécher de
cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un
tableau si le noeud considéré peut être coché : si non je voudrai empêcher
le "cochage" de ce noeud.
Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être
non coché : du style node.checked = false
or le noeud se coche malgré tout car sans doute cette procédure s'effectue
AVANT que le noeud soit réellement coché.
Comment empecher ce noeud d'être coché..?
Tu peux utiliser la propriété 'Tag' du nœud, avant l'événement 'Click',
par exemple :
tvw.nodes("x").tag = "NOCHECK"
et sur l'événement 'Click' tu rétablis la situation, en fonction de
cette propriété.
Un exemple (dont le but est différent) avec des CheckBox à trois états :
j'utilise un treeview avec la propriété checkboxes à vrai. Mon problème est le suivant : je veux, pour certains noeuds , empécher de cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un tableau si le noeud considéré peut être coché : si non je voudrai empêcher le "cochage" de ce noeud. Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être non coché : du style node.checked = false or le noeud se coche malgré tout car sans doute cette procédure s'effectue AVANT que le noeud soit réellement coché. Comment empecher ce noeud d'être coché..?
Tu peux utiliser la propriété 'Tag' du nœud, avant l'événement 'Click', par exemple :
tvw.nodes("x").tag = "NOCHECK"
et sur l'événement 'Click' tu rétablis la situation, en fonction de cette propriété.
Un exemple (dont le but est différent) avec des CheckBox à trois états :
j'utilise un treeview avec la propriété checkboxes à vrai. Mon problème est le suivant : je veux, pour certains noeuds , empécher de cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un tableau si le noeud considéré peut être coché : si non je voudrai empêcher le "cochage" de ce noeud. Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être non coché : du style node.checked = false or le noeud se coche malgré tout car sans doute cette procédure s'effectue AVANT que le noeud soit réellement coché. Comment empecher ce noeud d'être coché..?
Hello Driss,
en complément de la réponse de Jacques que je découvre à l'instant, voici un petit programme qui précisément exploite le fait qu'on passe toujours dans click après et que c'est le bon endroit pour rétablir les choses.
Voici:
Option Explicit
Dim LastCheckedNode As MSComctlLib.Node Dim MustUncheck As Boolean
Private Sub TreeView1_Click()
If MustUncheck Then LastCheckedNode.Checked = False End If End Sub
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Set LastCheckedNode = Node MustUncheck = CheckIfMustUncheck(Node) End Sub
Private Function CheckIfMustUncheck(ByVal Node As MSComctlLib.Node) As Boolean
' retourne vrai si le noeud ne doit pas etre checké, ' faux sinon
' Dans mon exemple, toujours vrai ce qui emùpeche de cocher ' tous les noeuds CheckIfMustUncheck = True
End Function
Private Sub Command1_Click() Dim nodx As Node Set nodx = TreeView1.Nodes.Add(, , "AAA", "Je suis AAA") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "BBB", "Je suis BBB") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "CCC", "Je suis CCC") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "DDD", "Je suis DDD") nodx.EnsureVisible End Sub
j'utilise un treeview avec la propriété checkboxes à vrai.
Mon problème est le suivant : je veux, pour certains noeuds ,
empécher de cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un
tableau si le noeud considéré peut être coché : si non je voudrai
empêcher le "cochage" de ce noeud.
Or j'ai essayé de mettre dasn cette procédure le fait que le noeud
doit être non coché : du style node.checked = false
or le noeud se coche malgré tout car sans doute cette procédure
s'effectue AVANT que le noeud soit réellement coché.
Comment empecher ce noeud d'être coché..?
Hello Driss,
en complément de la réponse de Jacques que je découvre à l'instant,
voici un petit programme qui précisément exploite le fait qu'on
passe toujours dans click après et que c'est le bon endroit
pour rétablir les choses.
Voici:
Option Explicit
Dim LastCheckedNode As MSComctlLib.Node
Dim MustUncheck As Boolean
Private Sub TreeView1_Click()
If MustUncheck Then
LastCheckedNode.Checked = False
End If
End Sub
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Set LastCheckedNode = Node
MustUncheck = CheckIfMustUncheck(Node)
End Sub
Private Function CheckIfMustUncheck(ByVal Node As MSComctlLib.Node) As
Boolean
' retourne vrai si le noeud ne doit pas etre checké,
' faux sinon
' Dans mon exemple, toujours vrai ce qui emùpeche de cocher
' tous les noeuds
CheckIfMustUncheck = True
End Function
Private Sub Command1_Click()
Dim nodx As Node
Set nodx = TreeView1.Nodes.Add(, , "AAA", "Je suis AAA")
Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "BBB", "Je suis BBB")
Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "CCC", "Je suis CCC")
Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "DDD", "Je suis DDD")
nodx.EnsureVisible
End Sub
j'utilise un treeview avec la propriété checkboxes à vrai. Mon problème est le suivant : je veux, pour certains noeuds , empécher de cocher un checkox correspondant.
Lorsque j'utilise la proriété NodeCheck du treeview je vérifie dans un tableau si le noeud considéré peut être coché : si non je voudrai empêcher le "cochage" de ce noeud. Or j'ai essayé de mettre dasn cette procédure le fait que le noeud doit être non coché : du style node.checked = false or le noeud se coche malgré tout car sans doute cette procédure s'effectue AVANT que le noeud soit réellement coché. Comment empecher ce noeud d'être coché..?
Hello Driss,
en complément de la réponse de Jacques que je découvre à l'instant, voici un petit programme qui précisément exploite le fait qu'on passe toujours dans click après et que c'est le bon endroit pour rétablir les choses.
Voici:
Option Explicit
Dim LastCheckedNode As MSComctlLib.Node Dim MustUncheck As Boolean
Private Sub TreeView1_Click()
If MustUncheck Then LastCheckedNode.Checked = False End If End Sub
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Set LastCheckedNode = Node MustUncheck = CheckIfMustUncheck(Node) End Sub
Private Function CheckIfMustUncheck(ByVal Node As MSComctlLib.Node) As Boolean
' retourne vrai si le noeud ne doit pas etre checké, ' faux sinon
' Dans mon exemple, toujours vrai ce qui emùpeche de cocher ' tous les noeuds CheckIfMustUncheck = True
End Function
Private Sub Command1_Click() Dim nodx As Node Set nodx = TreeView1.Nodes.Add(, , "AAA", "Je suis AAA") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "BBB", "Je suis BBB") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "CCC", "Je suis CCC") Set nodx = TreeView1.Nodes.Add("AAA", tvwChild, "DDD", "Je suis DDD") nodx.EnsureVisible End Sub