Contrôles style xp (16 usercontrols: listbox, option, frame, bar, check, buttons...)

Soyez le premier à donner votre avis sur cette source.

Vue 24 480 fois - Téléchargée 5 074 fois

Description

Salut, voilà ma série de contrôles au style XP... ou autre style, puisque les couleurs sont paramétrables !

Comme je bossait à changer l'interface de https://sourceforge.net/projects/hexeditorvb/ , je me suis dit : "faisons une série complète de contrôles à la sauce XP et postons les sur vbfrance !"

Du coup j'ai repris 3 de mes controles (ProgressBar, Frame et KeyMouseEvents) et je les ai améliorés/débugés.

TOUS les contrôles (sauf la bar, je vais régler le bug) gèrent les évenements MouseMove, MouseDblClick, MouseUp, MouseDown, MouseWheel, MouseHover (MouseEnter), MouseLeave, KeyDown, KeyUp.

Gestion de toutes les touches du clavier, des trois boutons de la souris et de la molette !
Gestion des raccourcis avec le '&'.
Support de l'Unicode !

AUCUNE dépendance n'est nécessaire.

Page de propriétés (--> "Personnaliser..." dans être propriétés) pour tous les contrôles graphiques.

Au programme :

- Label (nouveautés : bordure... ok c'est faible...)

- Option (nouveautés : transparence. Gère automatiquement les groupes lors du dépot sur la form)

- Check (nouveautés : transparence)

- ProgressBar (nouveautés : trop pour être citées ! A vous de regardez les propriétés ^^, ou rendez vous sur mon autre source ProgressBar stylée XP ^^)

- Frame (nouveautés : icone, couleurs à gradients paramétrables... voir ma source Frame a gradients de couleur)

- Command (nouveautés : icone (survol, simple et grisée), gradients, 6 styles par défaut)

- ToggleButton (Command avec une property Value, comme un Check)

- HScroll (nouveautés : plage de -+ 4.10^14, molette, couleurs...)

- VSCroll (idem que HSCroll)

- UpDown

- ListBox (plus rien à voir avec l'ancien ;) listview à une colonne avec icones, checks, chaque item est ENTIEREMENT configurable !! et elle fait également FileList, DriveList et FolderList !)

- TextBox (toutes les fonctions d'une classique + gestion de la zone Legende qui permet d'afficher du texte à gauche de la zone de texte, ou bien d'afficher la numérotation des lignes + ajout de functions de récupération d'info comme GetLine, LineCount, GetChar...) Cette textbox est basée sur un vbTextBox normale, et j'ai repris les diverses améliorations que proposait Renfield dans ses controles, en y corrigeant et ajoutant quelques options.
/!\ LA GESTION DE LA HSCROLL DE LA VKTEXTBOX N'EST PAS FINIE /!\

- ScrollContainer : c'est une sorte de Frame possédant des Scrolls pour pouvoir déplacer les composants à l'intérieur... voir le screenshot pour comprendre (tout en bas à gauche)

et aussi :

- MouseKeyEvents : permet d'ajouter les évênements MouseMove, MouseDblClick, MouseUp, MouseDown, MouseWheel, MouseHover (MouseEnter), MouseLeave, KeyDown, KeyUp à tous VOS contrôles ! (possédant la propriété hWnd)
C'est un de mes anciens codes, mais en amélioré (je ferais d'ailleurs uen MAJ de l'autre).

- Timer : c'est un timer haute précision... Dans sa version actuelle (qui marche), c'est strictement un timer VB en terme de précision. Des lignes en commentaires utilisent des APIs pour la haute précision, mais attention, cela ne marche pour l'instant QUE dans l'IDE pour des intervalles pas trop faibles. Si quelqu'un pouvait m'aider à trouver le(s) bug(s) ... merci ^^
Donc pour l'instant ==> marche mais identique à VB.

- vkSysTray : permet d'afficher une ou plusieurs icones dans le SysTray. Sont gérés les évenements MouseUp, MouseDown, MouseMove et MouseDblClick. Gestion automatique de la remise des icones en cas de crash d'explorer. Possibilité de controler plusieurs icones à partir d'un seul vkSysTray. Note : pour bénéficier de la gestion du crash d'explorer, il faut poser le controle vkSysTray DANS LA FORM (pas dans un autre container). Cela empechera par contre que vous puissiez faire vous même du subclassing de cette form.

Chaque controle possèdant un grand nombre de propriétés, c'est à vous de les tester !

/!\ LA GESTION DE LA HSCROLL DE LA VKTEXTBOX N'EST PAS FINIE /!\

/!\ Ce code est sous license GNU LGPL. La licence est fournie dans le *.zip.

Source / Exemple :


'dans le zip, ULTRA commenté comme d'habitude

'/!\ LA GESTION DE LA HSCROLL DE LA VKTEXTBOX N'EST PAS FINIE /!\

Conclusion :


Ce code n'a pas pour objectif de concurrencer les controles de Renfield... d'ailleurs c'est grâce à sa source que j'ai appris à créér un UserControl !

Pas forcément optimisé à mort étant donné que je ne manie pas vraiment gdi32...

Pour les autres contrôles (?...) je verrais si j'ai le temps et si j'en ai besoin dans Hex Editor VB.

Le subclassing embarqué est bien évidemment de EBArtSoft que je remercie ;)
Thx aussi à Renfield pour son aide sur les APIs de gdi32 ^^
Et thx aussi à PCPT pour la découverte de (nombreux) bugs !

Si un expert pouvais trouver le bug du timer (les lignes commentées à décommenter, pour utiliser les APIs autres que SetTimer et KillTimer)...ce serait cool !

Commentez et notez svp !
Si vous avez un bug, un conseil, une critique, une idée... merci de m'en faire part !
Si vous voulez que je rajoute des propriétés ou des évenements, je le ferai dans la mesure du possible.
Si vous voulez que je rajoute des contrôles SIMPLES (non, je ne me retapperais un ListView... MAJ : ben si je l'ai fait ...), proposez les !
Genre un TabControl, j'aurais bien envie d'en faire un au style XP... si vous pensez que c'est utile...

Pour pouvoir utiliser ces controles dans vos propres projets, il faut enregistrer les fichier *.ocx (que vous créérez en compilant le projet vkUserControlsXP.vbp) via regsvr32.

/!\ LA GESTION DE LA HSCROLL DE LA VKTEXTBOX N'EST PAS FINIE /!\

Ce code fait partie de Hex Editor VB qui est sous licence GNU GPL, mais ce code est sous licence GNU LGPL. Le fichier licence.txt contenu dans le *.zip est à lire.

Si vous trouvez que c'est long à charger dans l'IDE, c'est normal ;) Mais en réalité c'est beaucoup plus rapide !
- le fait d'avoir un double projet avec 800Ko de code fait TRES LARGEMENT ramer la chose, ce temps perdu disparait dans l'utilisation classique du fichier *.OCX
- pas compilé, donc plus lent qu'en réalité
- énormément de controles sur la Form
- pleins d'actions lors du loading de la form (listing des polices, changement de path des FileList...)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
11
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
4 mars 2010

Bonjour Violent_Ken, j'ai un bug avec les tooltips : avec un vkCommand (ou vkToggle) contenant une image, le tooltip ne s'affiche pas lorsque la souris est sur l'image, il s'affiche seulement lorsque le pointeur est à l'intérieur du bouton ET en dehors de l'image.
Je n'ai pas encore regardé le code, mais je ne vais pas tarder à le faire.

Cordialement.
Messages postés
70
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
5 juillet 2013

Quel boulot !
C'est superbe !!!
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012

Bonjour, Je viens d'essayer vainement d'entrer un caractère de tabulation dans une routine de remplissage pour un vklistbox:

combo.List(combo.ListCount) = Rstchamp1 & vbTab & Rstchamp2

Les essais en remplacant VbTab par vbkeytab, ou chr(9) sont sans résultat
Est ce possible?
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Bonjour,

aucune demande particulière n'est à faire, vous pouvez utiliser l'OCX directement.

Il faut seulement respecter la licence apposée à ce projet (GNU LGPL) (voir le fichier licence.txt dans le *.zip, ou ici http://fr.wikipedia.org/wiki/Licence_publique_générale_limitée_GNU)

Donc en gros, il est possible d'utiliser sans problèmes ce code dans un projet propriétaire sans avoir à rendre tout le code source du projet propriétaire sous licence libre (et heureusement d'ailleurs !)

Pour simplifier, si vous réutilisez ces controles sous LGPL dans votre logiciel, les restrictions seront :
- conserver le copyright du fichier OCX
- conserver la licence LGPL du fichier OCX et la fournir avec le fichier OCX

Rien ne changera pour votre logiciel de maintenance (grâce au "L" de LGPL ^_^)

@+
Messages postés
8
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
20 août 2009

Bonjour, d'abord toutes mes félicitation pour les controles xp, ils sont magifiques.
J'ai juste une petite question.
Voilà depuis 9 ans, je programme un logiciel de maintenance vendu par ma société.
J'aimerais donnée un petit coup de jeune à ce logiciel en utilisant votre OCX pour les controles.

Puis-je le faire gratuitement, ou y at'il une demande particulière à faire.
N'étant pas informaticien, je suis incapable de créer de tels contrôles.
Encore bravo et merci par avance de votre réponse.
Afficher les 221 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.