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...)
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.