Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONTRÔLES STYLE XP (16 USERCONTROLS: LISTBOX, OPTION, FRAME, BAR, CHECK, BUTTONS...)


Information sur la source

Catégorie :Control Classé sous : controles, usercontrol, style, xp, subclassing Niveau : Expert Date de création : 17/05/2007 Date de mise à jour : 02/07/2007 11:49:45 Vu / téléchargé: 14 582 / 3 447

Note :
8,71 / 10 - par 7 personnes
8,71 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (216)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
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

  • 'dans le zip, ULTRA commenté comme d'habitude
  • '/!\ LA GESTION DE LA HSCROLL DE LA VKTEXTBOX N'EST PAS FINIE /!\
'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...)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

17 mai 2007 17:40:48 :
MAJ compatibilité projet
17 mai 2007 17:45:32 :
Ajouté les *.bat
17 mai 2007 18:11:19 :
Compatibilité OK.
17 mai 2007 18:50:03 :
corrigé buf survol check et option
17 mai 2007 20:56:38 :
Ajouté le controle UpDown
17 mai 2007 21:09:40 :
vbUpDown reference OK
17 mai 2007 23:49:44 :
Corrigé bugs dans les scrollbars
19 mai 2007 10:07:50 :
orrigé bug vkHScrollBar
19 mai 2007 15:07:46 :
Ajouté les pages de propriétés
19 mai 2007 16:36:28 :
MAJ screen & description
26 mai 2007 00:14:27 :
Ajout de la Listbox, correction de bugs sur les VS, ajout de properties...etc.
26 mai 2007 00:32:27 :
Ajout de la bonne référence pour vkListItems
27 mai 2007 11:03:20 :
Optimisations sur le loading des controles (ne refresh qu'une seule fois) + correction d'un bug critique sur vkVHScroll
27 mai 2007 16:22:09 :
Correction bugs, ajout de la clsFastCollection (optimisation !), ajout de properties et events supportés dans la listbox, possibilité de paramétrer le VS de la listbox
27 mai 2007 18:52:07 :
Ajout de la possibilité de trier
28 mai 2007 00:35:40 :
Timer fonctionnel mais pas très précis (comme celui de VB)
01 juin 2007 12:14:42 :
Correction de bugs, optimisations et ajout de la gestion de FileList, DriveList et FolderList
01 juin 2007 20:29:35 :
corrigé les bugs de mémoire bouffée pour rien
01 juin 2007 20:36:12 :
Ajouté la licence et modifié la description
01 juin 2007 23:59:54 :
corrigé bug listing des dossiers + corrigé bug checkox dans listbox (maintenant le check ne reste pas sélectionné quand on quitte le controle)
03 juin 2007 13:09:37 :
ajouté la possibilité d'afficher ou pas les fichiers/dossiers System, Hidden et ReadOnly
03 juin 2007 13:59:05 :
remis les icones dans vkFrame et vkCommand + changé erreur de Path (thx PCPT)
03 juin 2007 16:09:41 :
les controles ne se refresh qu'une seule fois, vkTimer et vkMouseKeyEvents sont "transparents" dans l'IDE, plus de bug de Check dans Listbox, plus de Form2 inutile
03 juin 2007 17:13:22 :
optimisations diverses (vkVScrollPrivate notamment)
03 juin 2007 17:14:26 :
enlevé la form inutile
03 juin 2007 18:06:32 :
enlevé la property Left dans une classe (vkListboxScroll) qui créait des problèmes avec le mot clé Left de VB
04 juin 2007 21:41:15 :
la propriété ListIndex est fonctionnelle en lecture
06 juin 2007 20:13:26 :
Correction de bugs + changement de licence.
08 juin 2007 23:49:56 :
Résolution du bug des controles noirs, au prix d'un petit sacrifice de perfomance + ajoué vkSysTray
09 juin 2007 00:02:48 :
corrigé un petit bug
10 juin 2007 15:37:32 :
Ajout de la vkTextBox !
11 juin 2007 15:20:16 :
Ajout de scrolls perso dans la vkTextBox + clean package + changé description
11 juin 2007 17:41:48 :
meilleure gestion de la Scroll horizontale, mais pas encore parfait -__-
11 juin 2007 17:50:30 :
changé le screen
15 juin 2007 13:45:41 :
Ajouté un nouveau controle (vkScrollContainer) + corrections de nombreux bugs (notamment dans la vkBar, le vkCommand et le vkToggleButton) + nouvel exemple (et nouveau screenshot)
15 juin 2007 18:51:27 :
Ajout de la gestion de styles par défaut dans vkCommand et vkToggleButton
17 juin 2007 09:52:41 :
Ajout de la gestion du pattern + correction bugs + bon package
17 juin 2007 14:18:24 :
Dégradés (gradients) effectués par API + ajouté la prise en compte de la property Enabled dans la vkListBox
25 juin 2007 20:33:26 :
Optimisations (gradients par API) + correction de bugs
25 juin 2007 21:22:03 :
Corrigé bug (avait oublié de décommenter 3 lignes de code)
28 juin 2007 19:45:14 :
Check lors du double-click dans une vkListBox + viré des bugs sur le focus + gestion d'une icone de survol dans vkCommand et vkCheck + support des raccourcis avec '&' + gestion de l'unicode
29 juin 2007 12:18:59 :
Corrigé 3 bugs (1 dans le Timer et 2 dans le tri de la vkListBox) + ajouté le retour automatique à la ligne dans vkCommand et vkToggleButton
29 juin 2007 20:09:15 :
Corrigé les bugs de la vkListBox
29 juin 2007 20:15:43 :
Avait oublié de mettre une ligne en commentaire
29 juin 2007 20:19:47 :
Petite optimisation de dernière minute
02 juillet 2007 11:49:45 :
Corrigé le bug du survol des checks dans la vkListBox

Commentaires et avis

signaler à un administrateur
Commentaire de MadM@tt le 17/05/2007 17:38:07

Pfou !
Eh beh c'est joli tout ça.

Par contre faut préciser qu'il faut bien enregistrer l'ocx avant de lancer le projet (tu devrais mettre un petit installeur .bat pour simplifier la chose), et y'a un problème de compatibilité binaire avec "..\..\..\..\..\Documents and Settings\Admin\Bureau\Frame gradient ENG\OCX\vkUserControlsXP.ocx" (j'ai pas trop pigé d'ou ça vient), mais ça empeche pas d'ouvrir le projet et de le lancer.

Et une fois lancé effectivement c'est très joli.

Toutefois une remarque sur l'option et le checkbox, vu qu'ils sont "transparents", il faut cliquer pile poil "sur" le texte pour pouvoir les cocher et décocher, si on clique dans la zone du texte, mais au dessous du fond de la form, ça n'a aucun effet. Mais bon ça pour le regler c'est chaud

Bon boulot ^^

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 17:38:42

Je sais que tu n'as pas besoin de mon commentaire mais ton contrôle