MM CHECKBOX .NET V.2009 V4

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 8 nov. 2009 à 20:07
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012 - 21 juin 2011 à 08:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50824-mm-checkbox-net-v-2009-v4

dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
21 juin 2011 à 08:25
Oui elle fonctionne. Et effectivement je travaille avec la version anglaise de vb 2005 express edition. Merci
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
21 juin 2011 à 08:11
celle de ùayzz fonctionne ? Alors c'est que celle ci il y a une instruction vb2008 non pros en charge par ta version 2005 ? Déja tu as la version anglaise ? Enfin bon probléme réglé ;) bonne prog
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
20 juin 2011 à 20:10
Je savais pas qu'il fallait mettre le fichier dans c:/win/sys32 mais sinon c'est ce que je faisais. J'ai fiispar mettre la version précédente de Mayzz et maintenant ça marce :D
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
20 juin 2011 à 08:18
bon essayons coome ça alors :
bouton droit sur la barre d'outil puis choisir les élément, attendre. selectionner onglet composant .net la dll mm_checkbox2009 (préalablement copié dans c:/win/sys32)
c tout.
kenavo
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
19 juin 2011 à 20:09
Euh...merci ADN56 mais bof bof le copier/coller de la réponse de Claudetom....
Si justement ça pause problème et crois moi je fais qe ça d'essayer d'importer MM_Checkbox! Il n'apparaît pas dans la toolbox puisque ce fameux message d'erreur apparaît..
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
19 juin 2011 à 20:04
bonjour,
cela devrait pas poser de problème ?
il faut l'inclure dans les références
faire un Imports de MM_Checkbox
dans la boîte à outils il devrait apparaître.
ensuite il te reste plus qu'à poser ce composant sur ta form (comme l'exemple fourni)
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
19 juin 2011 à 14:21
Re-bonjour,

J'ai toujours pas réussi à résoudre mon problème concernant l'importation de MM_Checkbox dans mon projet... Toujours le même message d'erreur apparaît (Failed to create TollboxItem of type: System.Windows.Forms.Design.AutoSizeToolboxItem,System.Design) et je ne sais pas pourquoi..
Dommage car j'aurais vraiment voulu utiliser ces magnifiques composants. Une petite idée du problème?
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
12 juin 2011 à 19:56
Ben je fais un "Choose Items", je sélectionne mon fichier dll et le message d'erreur apparaît.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
12 juin 2011 à 19:50
bonjour,
cela devrait pas poser de problème ?
il faut l'inclure dans les références
faire un Imports de MM_Checkbox
dans la boîte à outils il devrait apparaître.
ensuite il te reste plus qu'à poser ce composant sur ta form (comme l'exemple fourni)
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
12 juin 2011 à 18:47
Hello, merci pour la réponse.

Mais en fait c'est le fichier dll que j'aimerais inclure dans un projet VB 2005 mais ça ne veut pas fonctionner... Le message suivant s'affiche: "Failed to create TollboxItem of type: System.Windows.Forms.Design.AutoSizeToolboxItem,System.Design". Et j'ai le même problème si je veux l'ouvrir avec la version 2008. A noter, j'utilise la version express edition, est-ce que celapourrait être la cause?
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
11 juin 2011 à 22:18
oui tu peux le faire tourner sous VB 2005 mais faut modifier à la main le fichier .Sln
remplacer :
Microsoft Visual Studio Solution File, Format Version 10.00 PAR
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2008 PAR
# Visual Studio 2005
dudu1513 Messages postés 51 Date d'inscription jeudi 2 juin 2011 Statut Membre Dernière intervention 1 août 2012
11 juin 2011 à 14:09
Bonjour,

Magnifique mais y a-t-il moyen de la faire fonctionner en VB 2005?
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
15 nov. 2009 à 18:53
Nan merci à toi et à Mayzz ! du bon boulot que vous faites !
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
13 nov. 2009 à 13:03
De rien !!
surtout que maintenant l'évènement Click fonctionne ;)
Au plaisir de vous avoir aidé
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
13 nov. 2009 à 11:38
whaou, j'ai bien compris pourquoi. Merci
Pour la boucle tu parles de celle là :
For Each ctrl As Control In Controls 'pour chaque control sur la form
'si ce control est un mayzz ou un claudetom control
If TypeOf ctrl Is MM_CheckBox Then

En effet aprés réflexion elle ne sert plus à rien puisque maintenant le sender ne peut être qu'une MM_checkbox !
Mais avant il y avait des labels et des boutons, voila pourquoi.
Ensuite il y a cela aussi qui ne sert plus :
Dim ce_bp = CType(ctrl, MM_CheckBox) ' cast le control en checkbox, avant cela me permetais de modifier la propriété backcolor des boutons cliqué, d'ou mon besoin d'avoir une variable casté dans le format du bouton/checkbox
il faut que je fasse un peu de ménage ^__^
merci pour ton coup de pouce.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
13 nov. 2009 à 00:02
Une dernière mise à jour et pas les moindres, car je me suis aperçu que le binding
fonctionnait mais pas vraiment bien,
donc je me suis penché sur les déclarations d'evenements CheckChanged, CheckState
du coup celle-ci deviennent des Custom Event !
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
12 nov. 2009 à 22:34
Bon suite au problème rencontré par ADN56 sur l'évènement Click,
Je poste une nouvelle version qui fonctionne bien sur cette fonctionnalité.
Pour arriver à cela j'ai du générer un autre évènement que celui dédié.
Donc les résultats obtenus ne sont plus inversé (d'où le faite qu'il fallait utiliser MouseUp avant !)
Dans la form de test j'ai laissé le test de ADN56 ;)
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
12 nov. 2009 à 20:51
Question bête ?
Pourquoi cette boucle, vu que tu test si le control (sender) est bien celui qui correspond au tag ?
par ce que dans ce cas cela suffit :

Dim tag As String = CType(sender, MM_CheckBox).Tag.ToString ' cast le sender en checkbox, puis récupére le tag en string

If Not CType(sender, MM_CheckBox).Checked Then 'Not choix(CInt(tag)) Then 'regarde si déja cliqué ou pas
'afficher la courbe correspondante au tag
'affiche_courbe(CInt(tag)) <<-- j'ai pas ce morceau de code donc mis en commentaire
Else
'cacher la courbe correspondante au tag
'cache_courbe(CInt(tag)) <<-- j'ai pas ce morceau de code donc mis en commentaire
End If
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
12 nov. 2009 à 20:06
Pour faire ton test j'ai mis dans les tag des boutons des valeurs numérique de 1 à xxxx
puis exécuté ton code, il fonctionne mais sur l'évènement Click,
Le bouton n'est pas encore basculé (True/False) car ton test est effectuer avant l'évènement MouseUp
Mais au prochain clique sur le même bouton, l'état est bien changé.
Donc j'ai modifié ton morceau de code pour que tu es le changement d'état de suite au click
par :

Private Sub EventClick()<<-- appelé par form load ou autre
'Assignement des évènements Click de tous les boutons sur celui du MouseUp
For Each ctrl As Control In Controls 'pour chaque control sur la form
'si ce control est un mayzz ou un claudetom control
If TypeOf ctrl Is MM_CheckBox Then
AddHandler ctrl.MouseUp, AddressOf BP_Click
End If
Next
End Sub

Private Sub BP_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim tag As String = CType(sender, MM_CheckBox).Tag.ToString ' cast le sender en checkbox, puis récupére le tag en string

For Each ctrl As Control In Controls 'pour chaque control sur la form
'si ce control est un mayzz ou un claudetom control
If TypeOf ctrl Is MM_CheckBox Then
Dim ce_bp = CType(ctrl, MM_CheckBox) ' cast le control en checkbox
If ce_bp.Tag.ToString = tag Then 'detect le bouton cliqué
If Not ce_bp.Checked Then 'Not choix(CInt(tag)) Then 'regarde si déja cliqué ou pas
'afficher la courbe correspondante au tag
'affiche_courbe(CInt(tag)) <<-- j'ai pas ce morceau de code donc mis en commentaire
Else
'cacher la courbe correspondante au tag
'cache_courbe(CInt(tag)) <<-- j'ai pas ce morceau de code donc mis en commentaire
End If
End If
Else
End If
Next
End Sub ' affiche ou cache les courbes
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
12 nov. 2009 à 17:17
Salut, aprés test et abscence je post de nouveau.
déja un 10/10.
Ma demande est d'avoir le dessin du pushbouton identique aux autres (aujourd'hui il est sur fond gris), je le ferais plus tard si tu n'a pas le tmeps ou si tu trouve cela inutile.
Sinon j'ai toujours la même incohérence qu'avec le code de Mayzz sur mon code ! Pour afficher les courbes je suis obliger de détecter NOT CHECKED au lieu de CHECKED, je pige pas car ton code lui fonctionne, même si toi tu passes par l'évenement et non pas par la propriété comme moi, de plus si je clic rapidement sur un de tes control il n'affiche pas la courbe correspondante. Cela vient forcément de mon code, mais je vois pas ce qui merdouille, je te le post pour voir si tu trouve l'erreur. @++ et merci pour ta lecture !

Private Sub BP_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
For Each ctrl As Control In Controls 'pour chaque control sur la form
'si ce control est un mayzz ou un claudetom control
If TypeOf (ctrl) Is MM_CheckBox Then
Dim ce_bp = CType(ctrl, MM_CheckBox) ' cast le control en checkbox
Dim tag As String = CType(sender, MM_CheckBox).Tag.ToString ' cast le sender en checkbox, puis récupére le tag en string
If ce_bp.Tag.ToString = tag Then 'detect le bouton cliqué
If Not ce_bp.Checked Then 'Not choix(CInt(tag)) Then 'regarde si déja cliqué ou pas
'afficher la courbe correspondante au tag
affiche_courbe(CInt(tag))
Else
'cacher la courbe correspondante au tag
cache_courbe(CInt(tag))
End If
End If
Else
End If
Next
End Sub ' affiche ou cache les courbes
#End Region

++
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
12 nov. 2009 à 14:01
Merci pour cette MAJ.

Maintenant c'est vraiment un outils clef en main qui m'érite son 10/10.

SUPER
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
11 nov. 2009 à 23:22
Le DataBinding est fonctionnel
pour le Checked et LabelText
les autres property peuvent êtres aussi binder, dans ce ca mettre NotifyPropertyChanged("") ou il se doit
Ajout du CheckState ;)
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
11 nov. 2009 à 19:46
Merci pour ta reponse , mais j'ai pas tout compris.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
11 nov. 2009 à 15:56
Je comprend pas tu peux binder la propriété Checked en code ?
comme dans la form d'exemple
original:
MM_Checkbox2.DataBindings.Add("Checked", Me.CheckBox1, "Checked")
ou simplifié :
MM_Checkbox2.DataBindingADD(PropertyName.Checked, Me.CheckBox1)
MM_Checkbox2.DataBindingADD(PropertyName.Checked, dt,"IsChecked")<<-- Dt=Datatable, "IsChecked"= Champs de la datatable

Sachent que Me.checkBox1 peut etre remplacé par autre chose une datatable
et "Checked" par le nom du champs de type boolean de ta datatable ?
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
11 nov. 2009 à 10:20
super boulot !!

Mais je ne peux pas l'integré a 100% a cuse de l'option checkstate et checked dans le databinding !!!!

Dommage
elguevel Messages postés 718 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 22 novembre 2016 3
10 nov. 2009 à 08:12
Superbe travail, un 10/10 bien mérité !
Je félicite également Mayzz qui aura également droit à son 10 :-)
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
9 nov. 2009 à 18:37
Heu! désolé je vois pas ?
Sinon tu as aussi mon label défilant qui sert aussi de bouton voir mes sources (je ne me fais pas de la pub)
vive l'entraide !
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 nov. 2009 à 18:06
Vraiment du trés bon travail ! j'aime particuliérement l'ajout dans la form de test du propertygrid ! je ne l'utilisais pas avant, mais je dois avouer que c'est trop sympa pour tester un usercontrol.
je re-modifie ma source avec ton control pour voir le résultat.
un 10/10 biensûr car même si je suis novice, je sais reconnaitre un bon code ;)
Juste une petite amélioration, serait-il possible d'avoir le pushbutton déssiné de la même façon qu'un radiobutton ?
Je le modifirais moi-même en piochant dans le code si tu n'a pas le temps car j'ai aussi envie d'avoir le texte horizontal sur un control dont le label est vertical (comme les étiquettes des boutons industriel)
Encore merci à vous trois pour ce bon boulot collaboratif (même si c'est pas le but du site) je trouve que c'est vraiment une bonne façon d'avancer ! y'a qu'a voir le résultat ^__^

Merci donc à :
MM_Simohamed pour l'idée général en VB6
Mayzz pour la traduction en .NET
et à toi claudetom pour l'amélioration du code.
@dn.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 nov. 2009 à 11:25
Merci pour cette mise à jour ! je la test cette aprém, merci à vous deux.
@++
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
8 nov. 2009 à 20:54
Oui je me suis décidé a cause du commentaire que Adn56 à déposé ;)
dès que j'ai un peut de temps je regarderais pour le databinding.
Quand à la transparence elle à l'air de fonctionner voir capture image sous le groupe de contrôle.
Par contre pour l'effet glass oui il est bien mais dans certain cas un trait blanc apparait (cela dépend de la hauteur du contrôle 'Height') et je sais pas pourquoi.
J'utilise pourtant ce code pour un de mes autre contrôle (TabControl entièrement stylé).

Faire ceci pour utiliser ce contrôle avec ancien projet
Ne pas ouvrir la forme en design, remplacer d'abord comme indiqué ci-dessous puis compiler

Pour mettre à jour un projet avec ce code il faut remplacé la dll par celle-ci dans votre solution et surement enlever les namespaces.
dans le constructeur.
devrait apparaitre comme ceci dans :
Private Sub InitializeComponent()
Me.MM_Checkbox30 = New MM_CheckBox(Me.components)
et la déclaration : Friend WithEvents MM_Checkbox30 As MM_Checkbox
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
8 nov. 2009 à 20:23
tout simplement super !!!!!

Ptite question comment faire poure mettre a jour mon projet avec cette dll.

serait-il possible d'avoir l'option checkstate et checked dans le databinding ?

Merci
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 nov. 2009 à 20:07
Tu t'es décidé à la déposer =)

Ton effet glossy est sympa, celui que j'avais fait pour tester ne rendait pas aussi bien, d'ou le fait que je ne l'ai pas gardé.

Tu as réussi à gérer la transparence ?

Dans tt les cas, beau boulot.
Rejoignez-nous