Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

treeview et gestion des checkeboxes

2 réponses
Avatar
Driss HANIB
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é..?

merci

Driss

2 réponses

Avatar
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 :

http://www.codeguru.com/cpp/controls/treeview/misc-advanced/article.php/c3983/

--

Cordialement,

Jacques.
Avatar
Jean-marc
Driss HANIB wrote:
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é..?



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


Bonne soirée !

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;