MM CHECKBOX .NET V.2009

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 31 oct. 2009 à 08:19
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 28 nov. 2009 à 18:00
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/50771-mm-checkbox-net-v-2009

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
28 nov. 2009 à 18:00
Sinon Flocreate tu as toujours la source de Sid_mohamed qui est la premiére versoin de ce control, et qui elle est en VB6, donc OCX ^^
Voila ++
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 nov. 2009 à 23:04
Salut,

La sources est une source .Net et est incompatible avec VB6, désolé...

Quand au contrôle en lui même, la classe n'est pas définie visible par COM, mais de toute façon je ne sais même pas si on peut importer des dll en tant que contrôles sous vb6, je ne peu pas tester malheureusement je suis sous Vista X64.

Cordialement, Mayzz.
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
27 nov. 2009 à 22:49
bonjour a tous, je me sens tout nul avec mon VB6 quand je vois le code ^^
juste une question quand même. Si je souhaite utiliser ce tres beau contrôle open source en VB6 je fait comment ? Y a t il un moyen ? Un ocx est il créable ? Si oui merci de le compiler et de le joindre au zip. (je n'en ai vu aucun dedans)

merci d'avance et bravo pour le travail.

+1 pour le open source VB ^^
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 nov. 2009 à 17:35
c'est ce que j'utilse (je crois) j'ai posté un topic la dessus, si tu as 5 min :)
http://www.vbfrance.com/forum/sujet-ENREGISTRER-TABLEAU-MAIS-AUSSI-LIGNES-TEXT-SIMPLES_1373030.aspx
@++
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 nov. 2009 à 13:01
Conseil > Implements ISerializable

Voir MSDN
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:28
salut Mayzz, je vois que la reléve est assuré ! Merci claudetom pour la mise à jour, j'ai pas une minute en ce moment pour décortiquer le code, donc j'essaye le tiens. Un grand merci à vous deux.
Là je me bas pour enregistrer des valeurs en binaire avec serialize, cela marche nickel pour un tableau à n dimension, mais j'arrive pas à mélanger des info autre que ce maudit tableau :p
@++
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:09
Salut ADN,

Je suis désolé pour les bugs, comme je l'ai dis plus haut, il y a beaucoup de copié/collé dans mon code, et j'ai fais cela en très peu de temps, je suis tjs débordé donc je n'ai pas bien le temps de tout revoir, mais il est fort possible que je me sois planté.

Amicalement, mayzz.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
8 nov. 2009 à 18:31
Avec l'accord de l'Auteur : Mayzz
vous pouvez trouver la suite du source ici:
http://www.vbfrance.com/codes/MM-CHECKBOX-NET-2009-V4_50824.aspx
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
8 nov. 2009 à 17:30
Tiens un soucis mayzz, lorsque j'écris cela le checked est trés mal mis à jour, voir carrément à l'envers (si pas coché = true) c'est moi ou bien ?
the code :
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 mayze control
If TypeOf (ctrl) Is Net_2009.MM_Checkbox Then
Dim ce_bp = CType(ctrl, Net_2009.MM_Checkbox) ' cast le control en checkbox
Dim tag As String = CType(sender, Net_2009.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 checked
If ce_bp.Checked Then
'afficher la courbe correspondante au tag
affiche_courbe(CInt(tag))
zg1.AxisChange()
Me.Refresh()
Else
'cacher la courbe correspondante au tag
cache_courbe(CInt(tag))
zg1.AxisChange()
Me.Refresh()
End If
End If
Else
End If
Next
End Sub ' affiche ou cache les courbes


avant avec les Bp simple cela marchais trés bien :(
une idée ?
++
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 nov. 2009 à 08:09
Pas de soucis, tu as déja bien donné !
@++
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
5 nov. 2009 à 17:50
Oui effectivement le code n'est paas très optimisé, malheureusement je manque de temps (comme toujours) pour faire une mise à jour.

CLAUDETOM a amélioré mon code, mais je n'ai malheureusement pas non plus le temps de regarder et de le poster, vous pouvez lui demander la source en mp, je ne pense pas qu'il aura des rétiscences à vous la donner.

Cordialement, Mayzz.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
5 nov. 2009 à 17:18
oui j'ai peu de bande blanche sur un grand bouton, lorsque je clic trop souvent dessus, j'ai essayé de mettre le double buffer sur la form principal mais cela fait pareil, enfin bon ya un paquet de bouton aussi dessus.
@+ pour la mise à jour
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
2 nov. 2009 à 13:17
@Paraglider > Le zip est bon... Peut être une erreur au téléchargement (CRC) ?

@astouz2000k > Effectivement on ne peut pas tout avoir du premier coup ! Mais le databinding est une fonctionnalité importante et j'en prend note pour la prochaine maj.

J'essayerais aussi de trouver une façon de gérer la transparence, de supprimer les propriétés ne servant plus, et surtout de mieux gérer le redraw.

++
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
2 nov. 2009 à 12:51
chez moi c'est bon, ou alors il est resté dans le cache d'IE.
Paraglider Messages postés 35 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 6 février 2014 1
2 nov. 2009 à 12:20
Bonjour,

Fichier zip vide : 168ko !!

Jacques
astouz2000k Messages postés 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Dernière intervention 2 mai 2013
2 nov. 2009 à 12:09
Tous simplement super !!!!!!!!!!!!!

Manque juste la possibilité de lié l'etat avec une base de donnée (comme le radio_button d'origine)

nikel sinon...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
2 nov. 2009 à 07:22
je sens que ce control va froller la perfection si chacun rajoute ça petite touche perso ;)
Moi j'ai juste renommé les propriétés avec un "_" devant pour les faire apparaitre en haut de liste, mais bon je préfére la méthode de claudetom.
Aprés mise à jour, il deviendra un trés bon Tuto sur les user controls.
@++ et bonne semaine à tous.
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
1 nov. 2009 à 21:02
Pour les cacher design et intellisense:
'********************************************
'Cache les propriétés non Utilisés

_
Public Overrides Property BackColor() As Color
Get
Return Color.Transparent
End Get
Set(ByVal value As Color)
MyBase.BackColor = Color.Transparent
End Set
End Property


_
Public Overrides Property BackgroundImageLayout() As System.Windows.Forms.ImageLayout
Get
Return Windows.Forms.ImageLayout.None
End Get
Set(ByVal value As System.Windows.Forms.ImageLayout)
MyBase.BackgroundImageLayout = Windows.Forms.ImageLayout.None
End Set
End Property


_
Public Overrides Property BackgroundImage() As Image
Get
Return MyBase.BackgroundImage
End Get
Set(ByVal value As Image)
MyBase.BackgroundImage = value
End Set
End Property


_
Public Shadows Property BorderStyle() As BorderStyle
Get
Return Windows.Forms.BorderStyle.None
End Get
Set(ByVal value As BorderStyle)
MyBase.BorderStyle = Windows.Forms.BorderStyle.None
End Set
End Property

sinon j'ai aussi mis dans InitializeComponent
MyBase.SetStyle(Windows.Forms.ControlStyles.SupportsTransparentBackColor, True)
MyBase.BackColor = Color.Transparent
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
1 nov. 2009 à 20:09
Ah oui ! Effectivement, j'ai pas filtrer, bah... après c'est pas grand chose, un ligne de code.

Pour les props tu les a masqués comment à partir du designer ? A vrais dire je recherche un moyen de masquer les propriétés (autres que Private overrides), mais pour les masquer aussi bien dans la fenêtre de propriétés que dans le code behind (intellisense).

Encore merci, pour toutes ces félicitations (et pour le verre virtuel :O)).
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
1 nov. 2009 à 19:15
Je tenais à te féliciter car franchement beau boulot que tu as fais
ont te paye tous un coup ;)
et avec plaisir
sinon concernant ton code j'ai juste masqué dans les property les propriétés qui ne servent pas comme backcolor etc..
sinon une question concernant le Pushbouton il marche avec le clique droit et gauche ?
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
1 nov. 2009 à 18:52
Le Morbihan (si je ne me trompe pas) ca fait un peu loin pour moi (03) ^^

Mais merci quand même !

J'en ai profité un peu car aujourd hui on est dimanche, mais le développement est une passion alors le temps ne se compte pas.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
1 nov. 2009 à 17:27
Tu mérites vraiment que je te paye un coup ^^
3h du mat ! t'es fou, repose toi et bonne fin de week end, je regarde le résultat de suite
Merci pour tout, kenavo
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
1 nov. 2009 à 03:21
Bon c'est OK pour la maj... (J'ai bossé dessus une partie de la nuit ^^), la liste des ajouts est plus haut.

Pour ce qui est du glossy sur le contrôle, j'ai testé mais c'est vraiment très laid, ca n'a pas un beau rendu, donc je ne l'ai pas gardé.

Voila @+
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
31 oct. 2009 à 18:53
@claudetom > L'anchor marche chez moi, sauf qu'en mode concepteur de vu le refresh ne se fait pas bien, mais à la compile tout redevient normale. Bien entendu il ne fonctionne pas si le TextVisible est sur False étant donnée que le contrôle se redimentionne proportionnelement.

Pour ce qui est du glossy sur tout le contrôle, c'est pas très complexe non plus, à voir...

@m_simohamed > Merci, beaucoup pour tous ces compliments, tu as fais du bon boulot aussi pour la version vb6, c'est pas aussi simple qu'en .Net alors je te retourne le chapeau !

@Adn56 > Merci aussi pour les compliments :) Pour ce qui est des états en plus, je vais voir, les possibilités sont vastes, je vais faire un pelle mêlle de toutes vos idées et essayer de sortir une version amélioré, avec toutes ces fonctionnalités (dans la mesure du possible et de mon temps libre), je vais aussi optimiser le code, car les redraw ne se font pas comme il le devraient, essayer de sortir une version plus stable.

Je suis content d'avoir pu partager cela, tien moi au courant de la mise à jour de ton soft.

Merci encore et @+
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 oct. 2009 à 18:05
Tiens voila mon idée (même si reste bluffé, tu as pensé à tout)
Sur le backstyle, rajoute en plus de rect_border et round_border un NONE_mono et NONe_bi qui ne dessinerai que le cercle du BP, plus de déplacement, juste l'alumage du bp si clic. qui sera monostable si mono (actif que si clic) et bistable si bi (maintient de l'état, comme maintenant quoi)
Là tu tiens vraiment un truc de qualité PRO.
Faudrait dire à nix de faire une zone spéciale "super usercontrole" ^^ il y aura une trés bonne place.
M_simohamed peu être fier d'avoir permis cette sublime mise à jour de son control original.
Bonne prog, et à charge de rendre service à mon tour (si je peux :p)
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 oct. 2009 à 17:41
le résultat est magnifique ! Vivement la mise à jour. Un control qui ne me quitera plus ! vraiment merci.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 oct. 2009 à 17:36
j'ai pas encore testé, dsl;
mais je perso garde le clic actif sur tout le control, cela devient vite casse bonbon pour l'utilisateur d'être obligé de pointer le cercle. ou alors fait une option pour nous contanter tous les deux ^^
L'option de garder que le cercle pour un radio, voir un simple BP me parait fort utile. surtout si la taille globale peut être agrandi (style des BP Ø22 de l'industrie)
Encore bravo pour ta source, je vais la lire de suite (tu m'a donné envie ^^)
@++
m_simohamed Messages postés 32 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 7 février 2009
31 oct. 2009 à 17:31
merci CLAUDETOM pour tes commentaires (mais je pense que tu en demande un peu trop :)) note ami Mayzz as fais prouve de bonne foie et a crée ce contrôle spécialement pour notre ami Adn56. Moi personnellement je tiens à le remercie et lui souhaite bonne continuation. Pour ce qui est contrôle Activex, eh bien, rien à dire, c’est très réussi et parfaitement bien dessiner (on avaient raison de lui faire confiance Adn56 et moi). Chapeau bas Mayzz :)
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
31 oct. 2009 à 16:37
Au faite, avec les OS Vista Seven, faudrait l'effet Glass sur l'ensemble du compo ;)
en ce moment c'est une la grande mode ;)
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
31 oct. 2009 à 16:35
5\ C'est à dire ?
met l'accrochage anchor sur Top, Left, Right puis ensuite resize ta form tu verras ;)
Sinon pour l'hilight juste limiter à la zone du bouton cela serait parfait !
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
31 oct. 2009 à 16:19
En tous cas grand merci pour toutes ces remarques ! (Constructives) ;O)
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
31 oct. 2009 à 16:17
Merci pour vos commentaires et pour la note ^^

@claudetom >

1\Pas trop complexe à faire je pense (au niveau du design).

2\Clignoté... possible aussi, mais ce pourrait être gourmand en ressources si plusieurs composant se trouvent sur le même formulaire. Je pensait plutôt à un hilight progressif en fondu lors passage de la souris et surligner le texte (option désactivable).

3\ Pour le bouton c'est justement ces couleurs (gris foncé et claire) qui donnent un effet 3D, les modifier ne servirait pas à grand chose. Pour l'autocheck, ok, je ferais la maj.

4\Effectivement, il devrait l'être mais je n'ai pas eu le temps d'optimiser le code (à vrais dire y' a près de 700 lignes juste pour le dessin, c'est le genre de contrôle à faire en WPF et non en winform). Pareil, dès que j'ai un moment j'y regarde.

5\ C'est à dire ?

pour ce qui est de tes améliorations, le pointeur pourquoi pas, de mon coté je vais voir pour l'hilight.

Pour le click gauche, c'est un oublis ^^, mais je pensait aussi limiter le click à la zone du bouton car actuellement c'est toute la zone du contrôle qui déclenche un changement d'état du contrôle.


Pour ce qui est du de la désactivation c'était volontaire, mais c'est vrais qu'il est toujours intéressant de savoir dans quel état se trouve le contrôle lors ce qu'il est désactivé.

En tous cas grand merci pour toutes ces remarques !
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
31 oct. 2009 à 15:29
Sinon voici ce que j'ai ajouté pour mon confort :
modif :
Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
'
If e.Button = Windows.Forms.MouseButtons.Right Then Exit Sub
...

Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
Me.Cursor = Cursors.Default
MyBase.OnMouseLeave(e)
End Sub
Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs) If Not Me.Cursor Cursors.Hand Then Me.Cursor Cursors.Hand
MyBase.OnMouseMove(e)
End Sub

Ci-dessous, car sinon aucun moyen de savoir dans quel etat est le bouton
Par contre reste désactivé pour l'utilisateur
Dans Protected Overridable Sub Redraw()

remplacer les lignes
'If Enabled Then <-- Commentaire
DrawButton(G, BGE, _ButtonColor, Pos, _Checked) 'Enabled)<-- changé par _Checked
'End If <-- Commentaire

'If Enabled Then <-- Commentaire
...
DrawButton(G, BGE, _ButtonColor, Pos, False)
'End If <-- Commentaire
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
31 oct. 2009 à 14:42
oupps!! ma note
cs_claudetom Messages postés 115 Date d'inscription jeudi 11 octobre 2001 Statut Membre Dernière intervention 15 octobre 2012
31 oct. 2009 à 14:35
Bravo pour ce composant !

Tu veux des idées et bien en voici :
1) sur cette base en faire un compo style Radiobutton (une option supplémentaire à mettre)
lors du désigne en fonction de l'option du dessine soit le style RadioButton soit le style checkbox à bascule
2) Possibilité par option supplémentaire, de faire clignoter le voyant en mode ON
3) changer la couleur du bouton et fond de celui-ci en une autre couleur style gradient comme le compo précédent qui était une image, au lieu du simple gris

Pour l'option Radiobutton, il faut gérer l'option autochecked (comme le vrai compo) si plusieurs dans un groupbox ou autre conteneur.

4) voir pour que le fond du composant (l'usercontrol soit transparent) ce qui est pas le cas actuellement car si tu superpose 2 composants tu remarque autour le fond de celui-ci

5) en mode accrochage left et right etc.. ton contrôle se redessine mal

Voila pour les améliorations
Bonne continuation.
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
31 oct. 2009 à 11:51
Bonjour,
Bien mieux que le précédent.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 oct. 2009 à 08:19
wahou il a l'air vraiment joli. je regarde et test cela cette aprém. Merci encore pour ton travail.
Rejoignez-nous