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é: 16 377 / 3 825

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 a l'air excellent ... seulement je doute que je puisse facilement la convertir avec le Wizard de Visual Basic .NET (qui m'est gratos, contrairement à la version que tu utilises).

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

C'est sur qu'avec l'injection ASM t'auras du mal à la convertir...
Par contre tu peux peut etre réutiliser directement l'ocx compilé non ?

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

Je veux bien éssayer :)

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 17:48:16

Que dois-je faire avec le fichier .ocx à partir de Visual Basic Express ?
(Vous comprenez maintenant pourquoi je ne programme que sur la version .net ?, quand je programme en vb)

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 17:51:31

Madm@tt ==> thx pour le commentaire ;)
1) Alors oui, il faut cliquer pile poil sur le TEXTE du caption dans le cas des options et des checks transparent (ou alors cliquer sur l'image).
C'est du au fait que je limite la zone du controle (backstyle) pour afficher la transparence. Je vais voir si je peux changer çà.
2) J'ai fait une MAJ, j'espère que c'est bon ?

Loloof64 ==> en effet, çà va être tendu de faire une conversion via un assistant (comme dit Madmatt, surtout avec l'ASM et l'histoire de l'adresse mémoire de la function)
Sinon je sais pas si tu peux utiliser le controle directement ? Aucune idée si c'est possible d'importer un controle activex vb6.

Il faudrait ajouter une référence au fichier OCX qui est fourni dans le zip à ton projet (je sais pas comment). M'enfin, je doute fort que çà marche -___-


Merci pour les commentaires, @+

signaler à un administrateur
Commentaire de MadM@tt le 17/05/2007 17:53:08

Mais arrete avec ton .net !
On va pas te chercher sur tes sources pour te dire que c'est mieux le vb6 (oh désolé c'est vrai que t'as pas posté de sources ici)
Les ocx c'est un truc de base de windows, comme une DLL, c'est pas réservé à VB6, tu peux en faire dans beaucoup de langages et meme en .net si ça se trouve...
Alors ça c'était pour ton mépris envers VB6

Maintenant comment l'utiliser sous .net, il faut ajouter l'ocx à tes composants de base de ta boite à outil (labels, textbox etc...) Alors peut etre dans le menu Projet > Composants, je sais pas trop

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 17:53:34

Je pense que si ça ne passe pas, cela ne peut être que de ma faute ... le fichier .bat étant passé sans problème.

Il y a un menu à utiliser/configurer sous VB ?
(Du genre Menu ActiveX, selectionner ) ?

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 17:59:38

Le fichier bat n'a rien à voir avec VB, c'est juste une instruction pour "enregistrer" le controle OCX dans la base de registre.

"Il y a un menu à utiliser/configurer sous VB ?" ==> Aucune idée, je touche pas à .Net... En VB6 tu fais Menu Projet/Composants --> parcourir, sélection du OCX, ok et c'est bon.

@+

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 18:04:09

J'ai trouvé le menu sous VB.Net (Outils, Choisir un élément de la boite à outils, [onglet] com) (car il y a maintenant l'ongelt composants .NET ==> et grâce au .bat, je suppose, tes ocx sont (justes) référencés et sélectionnables.
La deuxième étape sera de trouver où les placer ... C'est où pour ta version de vb ?

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 18:06:06

"et grâce au .bat, je suppose, tes ocx sont (justes) référencés et sélectionnables" ==> c'est çà.


"La deuxième étape sera de trouver où les placer ... C'est où pour ta version de vb ?" ==> Comment çà "où" les placer ? Dans System32 ?

@+

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 18:08:34

System32 ? peut être.
Je pense que les fichiers .ctl,.dll,.ocx et le dossier ressources sont gérés de la même manière (s'ils ne sont pas bêtes à ce point pour tout changer chez Microsoft d'une version à l'autre ...) .

signaler à un administrateur
Commentaire de moustachu le 17/05/2007 18:12:38

Bonjour,

Ca a l'air joli tout ça. Mais maintenant, XP c'est Has Been ;o). A quand les contrôles Vista :o)

Bravo !

++
Moustachu

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 18:13:41

Sois déjà heureux qu'il ait pensé aux contrôles XP.

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 18:14:36

(Apologize) je n'avais pas remarqué que tu cherchais juste à le taquiner .

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 18:17:27

Loloof64 ==> Ok, tu voulais savoir la location du fichier.

Le mieux est tout simplement dans le dossier du projet qui l'utilise.

Ensuite quand tu distribues ton projet, tu créé un setup qui enregistre via regsvr32 les dépendances telle que cet OCX. Et lors de la désinstallation, c'est du regsvr32 -u. Comme normalement on ne s'amuse pas à déplacer un dossier de Program Files, c'est bon ;)


Moustachu ==> Haha en effet ;) Bon déjà pour les check et les options, tu peux changer la bitmap (tu édites et tu remplaces le contenu de l'image par du 13*(6*13)) et le tour est joué ;) Ensuite pour le reste, tout est question de couleurs... En changeant certaines properties de mes controles, il y a moyen d'arriver à un résultat ;)

@+

signaler à un administrateur
Commentaire de loloof64 le 17/05/2007 18:17:58

Ecoutez, je laisse tomber, je ferais mieux de ne prendre que les contrôles .NET. Comme ça, ça sera réglé, ça passera à coup sûr :( :( :(

signaler à un administrateur
Commentaire de moustachu le 17/05/2007 18:35:42

loloof64> VA voir sur vbaccelerator pour des contrôles .Net bien sympa.
violent_ken> Je taquinais effectivement. Et tu sais, on a le droit de concurrencer Renfield, même s'il est admin ^^

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

merci Moustachu :)
Je vais voir ça de suite :)

signaler à un administrateur
Commentaire de moustachu le 17/05/2007 18:41:41

Quelques remarques après un premier tests :
Il faut cliquer sur l'image (checkbox et radiobutton) ou pile sur le texte pour changer la coche.
Des radiobuttons appartenants à différents container réagissent "ensenble". Si on en coche un, on en décoche un qui n'est pas du même container.


Quand on survole un radiobutton ou un checkbox, ça ne change par l'image de la coche ou du "rond"... commme sur XP
C'est tout pour le moement.

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 18:44:46

Concurrencer un admin, pourquoi pas... mais c'est aussi un MVP !!

lol plus sérieusement, ses contrôles sont très probablement plus optimisés et plus complets (excepté la progressbar je pense) ^^



Pour les remarques :
- "Il faut cliquer sur l'image (checkbox et radiobutton) ou pile sur le texte pour changer la coche." ==> Yep, comme a dit Madm@tt. Je réfléchi à une modification.
- "Des radiobuttons appartenants à différents container réagissent "ensenble". Si on en coche un, on en décoche un qui n'est pas du même container." ==> anormal !! Je me suis bien pris la tête sur çà, çà devrait marcher...
- "Quand on survole un radiobutton ou un checkbox, ça ne change par l'image de la coche ou du "rond"... commme sur XP" ==> GNE ??


J'ai pas du mettre la bonne version du Option et du Check !!
@+

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 18:46:22

"J'ai pas du mettre la bonne version du Option et du Check !!" ==> Je confirme, j'ai overwrite toute la WindowProc lors d'un copier coller récent...

Je récupère çà (enfin j'espère O_o)

@+

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 18:51:53

L'histoire du survol est corrigée.


Pour les container, chez moi çà marche nickel... Sur quel container as tu posé les Options ?

@+

signaler à un administrateur
Commentaire de EBArtSoft le 17/05/2007 19:16:27 administrateur CS

completement inutile mais quand on vois le succes remporté par ceux qu'avait fait Renfield je comprend mieu :p

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 19:42:05

erf !


Comme déjà dit avant, j'ai codé çà "Comme je bossait à changer l'interface de https://sourceforge.net/projects/hexeditorvb/ "

Et pour des check et option transparents, pour un frame et un command qui acceptent une icone, pour des scolls allant jusqu'à plus de 200 milliards, pour un UpDown inexistant hors Windows Forms 2.0 (non redistribuable)... je suis bien OBLIGE de recoder tout çà !


Si je voulais "avoir du succès" avec une source, j'aurais posté un truc avec "MSN" ou "GTA" dans le titre, crois moi ;)

@+

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 21:11:27

V'là le controle UpDown en plus.
@+

signaler à un administrateur
Commentaire de EBArtSoft le 17/05/2007 22:17:31 administrateur CS

Naaan mais c'est pas ça :p je parle pas de toi haha je sais ce que c'est de coder un controle c'est pas simple et ya quand meme du merite mais bon on peut pas etre toujours être d'accord avec tout hors je comprend pas trop l'interret de reproduire l'interface xp autant utiliser le vrai. Tu aurais tout aussi bien pu faire un desgin plus sympa je penses que c'est ce que voulait dire moustachu egalement.

@+

signaler à un administrateur
Commentaire de violent_ken le 17/05/2007 22:25:49

EB ==> bé héhé, comme dit tout en haut "voilà ma série de contrôles au style XP... ou autre style, puisque les couleurs sont paramétrables !" ;)

Je propose par défaut un style XP car je le trouve, personnellement, très classieux, mais chacun peut faire son propre style en modifiant quelques lignes de codes, quelques ressources ou même plus simplement quelques une des nombreuses properties proposées.


"autant utiliser le vrai" ==> Bah oui, mais tout le monde ne l'a pas... et certains contrôles sont pourris (enfin de mon gout) sous Vista (par exemple la scrollbar... je préfère encore la mienne... c'est dire...)


"Tu aurais tout aussi bien pu faire un desgin plus sympa je penses que c'est ce que voulai dire moustachu"
==> Je suis pas un expert du design, (très) loin de là... D'ailleurs en cherchant bien, on remarquera que j'ai "piqué" certaines couleurs des contrôles de Renfield... parce que les miennes étaient moches...
Tout çà pour dire que j'ai copié le style XP parce que je l'aime bien et parce que je sais pas faire autre chose -__-



Enfin bon. Prenons l'exemple du controle UpDown : tout est fait dedans (subclassing, events, properties, functions, subs...).

Il n'y a juste qu'à changer la sub Refresh pour changer le style...


@+ (n'hésites pas à te casser la tête sur le bug du Timer haute précision si tu as du temps à perdre ^^)

signaler à un administrateur
Commentaire de PCPT le 18/05/2007 00:53:26 administrateur CS

salut,
houlaa, vilain le crash pour le timer :D

ce lien peut peut-être t'inspirer ;)
http://www.vbfrance.com/codes/TIMER-OCX-INTERVAL-LONG-MULTI-USAGE-CLASSIQUE-BENCHMARK_32788.aspx

je regarderai tes contrôles dimanche

(sinon des idées.... il manque des pages de propriétés, et une TextBox)
bonne nuit ;)

signaler à un administrateur
Commentaire de violent_ken le 18/05/2007 01:04:33

Salut,

et bien voilà ! J'avais vu il y a quelques temps la technique de la collection d'objets (pour pouvoir libérer un event depuis une callback function extérieure) quelque part sur vbfrance, ben c'était ta source ;)
Je devrais donc pouvoir débuger (j'espère ?)

Pour les pages de propriétés, c'est vrai que c'est mieux... je vais voir si j'ai le temps.
Pour la textbox également, c'est un controle assez complexe à faire (si je pars de zéro comme c'est le cas avec les autres controles), je vais voir si j'ai le temps ou si je pars d'une textbox existante que j'améliore.

@+ et bonne nuit également ^^

signaler à un administrateur
Commentaire de waluigii le 18/05/2007 01:34:35


Salut,

Violent_ken il est formidable ton code...je vois pas l'intérêt de le faire...Mais sincèrement il est bien noté de ma part.

@+++

-_o

signaler à un administrateur
Commentaire de waluigii le 18/05/2007 01:47:59


Salut,

Question à part: Comment peut-ton faire bondir un shape sphérique...

@+  Bonne nuit à tous!

signaler à un administrateur
Commentaire de moustachu le 18/05/2007 09:54:41

waluigii> En lui faisant peur

signaler à un administrateur
Commentaire de violent_ken le 18/05/2007 10:14:05

Waluigii ==> J'ai déjà expliqué l'intérêt ;)
Même avec un *.manifest qui donne le style XP, certains contrôles ne sont pas satisfaisants :

- Option et Check ne gèrent pas la transparence
- Progressbar ne gère pas le Wheel et limitée à 32767
- UpDown uniquement dans Windows Forms 2.0 qui n'est pas redistribuable
- Timer de VB pas assez précis
- Toggle uniquement dans Windows Forms 2.0
- etc...

Donc je vois mal comment faire autrement pour obtenir ces propriétés que de recoder entièrement tous les contrôles...


D'autant que j'ai ajouté des events qui n'existent pas avec les controles classiques (Enter, Leave, Wheel....).


"Comment peut-ton faire bondir un shape sphérique" ==> lol, aucune idée ^^ Qu'entends tu par "bondir" ?

@+

signaler à un administrateur
Commentaire de violent_ken le 18/05/2007 10:20:47

Sinon, un bug s'est glissé dans la vkHScroll, je corrigerais ce soir ou demain.

@+

signaler à un administrateur
Commentaire de Exploreur le 18/05/2007 12:46:36

Salut Violent_Ken,

Déjà que je m'éclate avec ton Ocx Frame, et bien là, je suis aux "anges"...

Bravo

A+
Exploreur

signaler à un administrateur
Commentaire de waluigii le 18/05/2007 15:07:13

Salut,

Violent_Ken merci pour les clarifications...
Bondir étant rebondir, sauter, sursauter...en voici des synonymes.

Tout comme un ballon.

Merci,

Et Bravo pour la note tu la mérites!

signaler à un administrateur
Commentaire de violent_ken le 19/05/2007 10:11:16

Salut, merci Exploreur et Waluigii ;)

Par contre Waluiggi, je ne vois toujours pas ce que tu veux dire par "bondir un shape sphérique" ? Tu veux donner lui un effet de mouvement, comme pour un Command pressé ?


Sinon au passage, le bug du vkHScroll a été corrigé.
@+

signaler à un administrateur
Commentaire de violent_ken le 19/05/2007 11:28:15

PCPT ==> J'ai trouvé un super tuto pour les PropertyPages :
http://activex.developpez.com/%5BActiveX_&_VB6%5D%20Les%20contr%F4les%20ActiveX.pdf

Je travaille dessus...
@+

signaler à un administrateur
Commentaire de philbar71 le 19/05/2007 13:41:40

Très belle réalisation !!!
J'adopte !

signaler à un administrateur
Commentaire de violent_ken le 19/05/2007 15:08:46

Merci ;)



Au passage, grosse MAJ : j'ai ajouté des pages de propriétés pour chaque controle comme le demandait PCPT !

@+

signaler à un administrateur
Commentaire de waluigii le 20/05/2007 03:55:05


Salut,

Violent_ken => Qu'est-ce qu'il arrive lorsque tu laisses tomber un ballon de panier à terre? ;|

Alors cela te semble tu un peu plus poussante... J'espère enfin t'avoir fait la bonne description. Sinon, je sais plus quoi te dire à toi de fouiller.

Sur ceux bonne nuit à toutes et tous!

@+

signaler à un administrateur
Commentaire de violent_ken le 22/05/2007 20:55:26

Waluigii ==> erf, j'avoue que je ne percute toujours pas :(


Sinon, petit "sondage" : j'ai presque fini un contrôle Listbox (en fait c'est une listview lvwReport à 1 colonne).
Quels seraient les properties souhaitable pour chaque Item ?

Par exemple, chaque Item a actuellement :
- BackColor
- Checked (item checked ou pas)
- Font
- ForeColor
- Icon
- Index
- Selected
- Text
- Height (hauteur de la ligne)
- Alig (alignement du texte)

Genre on peut faire çà pour l'instant : http://www.enregistrersous.com/images/115054356020070522205442.jpg avec en plus Icone et Check (pas encore fini)

Quelqu'un a une idée pour rajouter une property intéressante ??
@+

signaler à un administrateur
Commentaire de PCPT le 22/05/2007 22:12:58 administrateur CS

umm....
pouvoir choisir la couleur du selecteditem (surlignage)
et pourquoi pas des méthodes FillByFile / SaveToFile ;)
il y a l'alignement? (vu le screen je suppose)

(pas encore regardé ta source mais j'ai DL la dernière maj ;) )
++

signaler à un administrateur
Commentaire de violent_ken le 22/05/2007 22:16:22

PCPT ==> Oui, il y a l'alignement d'inclus. Ok pour la couleur du surlignage, j'en avais prévue une globale, je vais en faire une également pour chaque Item.

Ok aussi pour les méthodes FillByFile et SaveToFile, çà peut être très pratique !

Merci pour ces idées, je vais les coder ^^
@+

signaler à un administrateur
Commentaire de violent_ken le 22/05/2007 22:22:18

Heu, au fait, juste une question : comment peut-on faire pour obtenir une zone de saisie, dans la boite de propriétés, similaire à celle de la property List de la ListBox ou de Text d'une textbox multiligne ?

@+

signaler à un administrateur
Commentaire de PCPT le 22/05/2007 23:02:19 administrateur CS

umm...
j'aurais dit dans les attributs de procédure mais je n'ai pas trouvé
peut-être en typant la propriété comme une "(liste)" mais idem, je ne trouve pas le type réel.

et en générant le code par VB çà donne çà :

Public Property Get ItemData(ByVal Index As Integer) As Long
    ItemData = List1.ItemData(Index)
End Property

Public Property Let ItemData(ByVal Index As Integer, ByVal New_ItemData As Long)
    List1.ItemData(Index) = New_ItemData
    PropertyChanged "ItemData"
End Property

(pour List1 pas vide)
seulement.... beh la propriété n'est même pas affichée
je regarderai plus en détail dès que possible

bonne soirée ;)

signaler à un administrateur
Commentaire de violent_ken le 22/05/2007 23:06:30

Ok, c'est sympa ;)
J'ai appris quelques trucs notamment OLE_OPTEXCLUSIVE (pour les Options, plus simple que ma méthode pour les Containers), mais j'ai rien trouvé non plus pour les Listes -__-

Bonne soirée, @+

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 08:42:14

Salut Violent_Ken,

Je suis bluffé. Ton travail est excellent. Content que tu aies trouvé du temps pour faire tout ça. J'en avais marre de mes applis au design monotone.
J'ai toutefois remarqué que si un option bouton est sélectionné par défaut, celui-ci est grisé. Saurais-tu d'où cela pourrait-il provenir ?

Merci encore,

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 08:58:56

Ah ! Merci de m'avoir signalé le bug.

Par contre je n'arrive pas à le reproduire... saurais-tu comment on peut le reproduire ?
@+

signaler à un administrateur
Commentaire de PCPT le 23/05/2007 09:04:58 administrateur CS

une heure de rechercehs sans succès :(
par contre cette source peut sans doute t'aider. attention les yeux :)
http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=62442&lngWId=1

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 09:25:30

Ok, pareil, j'ai recherché longtemps hier soir, j'ai trouvé que des "It looks like you can not create a property for a user control that works in the same way as the Combo Boxes List property" -___-

Bon bah tant pis, je laisse tomber... Merci en tout cas pour ton aide.


Sinon pour la ListBox de planet-source-code... WOW ! C'est surtout la vitesse de remplissage qui m'impressionne... moi c'est actuellement 5 fois plus lent, mais bon c'est normal aussi vu que je laisse la possibilité de choisir les properties pour chaque item (donc Set New à chaque AddItem).
Je releaserais la mienne quand elle sera au même niveau ;)

@+

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 09:26:45

"Ah ! Merci de m'avoir signalé le bug.

Par contre je n'arrive pas à le reproduire... saurais-tu comment on peut le reproduire ?
@+ " --> peut-être que le mieux serait que je te donne mon code et que tu regardes.

J'ai 2 groupes d'option boutons et cela le fait pour les 2.
Dis moi comment je fais pour te donner le code si tu es intéressé ?

++

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 09:37:05

Je pense que ce n'est pas nécessaire que je te donne mon code car je pense que tu vas pouvoir le reproduire.
Le problème ne survient que si tu initialises l'option bouton à partir du code. Je le fais dans une sub appelée durant le form_load.
S'il est initialisé depuis les propriétés graphiques, il n'y a effectivement aucun souci.

++

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 09:42:03

MSergio ==> Je n'arrive pas à réobtenir le bug (j'ai fait un nouveau projet, posé 2 frames avec 2 Options dans chaque frame et changé leur Value dans le Form_Load, çà ne change rien) ... Pourrais tu m'envoyer ton code (par exemple, tu ouvres ta Form avec le bloc notes, tu copies tout son contenu et tu me l'envoie par message privé) ?

Merci encore, @+

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 11:38:13

Ce ne sera pas nécessaire.

Le problème était que j'avais copié mon code du même projet sans ton OCX dans la form qui utilise ton OCX en ayant fait attention de garder les mêmes noms d'objet. L'option bouton de VB n'a que 2 valeurs possibles (false, true) alors que ton OCX en a 3. Apparemment quand je lui dit à l'init de la form de le positionner à "true", il l'interprète comme "2". Si je lui mets "1", il n'y a plus de problème.

Désolé de t'avoir pris du temps.

++

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 12:06:45

Je reviens vers toi pour savoir pourquoi tu n'as pas repris l'événement click pour les checkbox. J'utilisais cet événement pour tous mes contrôles checkbox ce qui me permettait de gérer le click de souris et la validation par le clavier. Maintenant, je dois utiliser 2 événements (MouseUp ou Down et KeyUp ou Down).
Me trompe-je dans l'utilisation de ton objet ?

++

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 12:11:49

Tu peux également utiliser l'évênement Change, qui gère Click et Touches.

Mais tu as raison, je vais remettre l'évênement Click dans la prochaine MAJ.
Merci pour ces conseils qui aident à améliorer ma source !
@+

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 12:15:31

Désolé de poster à tout va avant d'explorer tous tes événements. En utilisant "Change" il n'y a plus de pb.

++

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 12:17:37

Non, pas de soucis, tu as raison de poster, j'aurais du mettre Click plutôt que Change pour rester cohérent avec les CheckBox classiques.
N'hésites pas si tu as d'autres remarques ;)
@+

signaler à un administrateur
Commentaire de MSergio le 23/05/2007 13:59:00

Je trouve que le nom que tu as choisi est plus cohérent car on ne clique pas quand on appuie sur une touche du clavier. Je pense que les développeurs Microsoft ont fait une erreur quand ils ont créés leurs événements.
Le fait que ce soit différent n'est pas dérangeant pour moi.

++

signaler à un administrateur
Commentaire de violent_ken le 23/05/2007 19:22:52

" moi c'est actuellement 5 fois plus lent, mais bon c'est normal aussi vu que je laisse la possibilité de choisir les properties pour chaque item"
==> En fait trop pas... c'est juste que je rafraichisait 10000 fois le VScroll. Mon controle sera en fait plus rapide qu'une ListBox classique en terme de remplissage.

Je release sans doutes ce week end. (je retourne à mes révisions de physique... DAMN !)
@+

signaler à un administrateur
Commentaire de violent_ken le 26/05/2007 00:17:41

MAJ importante :

- ajouté l'évenêment Click du Check
- optimisations et correction de bugs dans les Scrolls et UpDown
- ajout de la vkListBox ! VERSION BETA, je poste pour avoir vos avis sur les trucs à ajouter, enlever....etc.
Cette vkListBox est buguée, je le sais (notamment au niveau du Scroll), mais bon, donnez moi toujours les éventuels bugs que vous recontrerez.

Merci, @+

(ListBox presque aussi jolie que celle de PSC, en tout cas plus configurable ^^)

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 00:25:46 administrateur CS

je regarde de suite (presque un semaine de retard non? ^^)

par contre en passant, la scroll pourrait être un unique contrôle, avec le choix vertical/horizontal
(çà repasserait à 12 :D)

la listbox a t'elle une scroll horizontale? (à découvrir dans un instant)

ps : tes contrôles sont tout de même construit sur des objets (image, picturebox, ...). tu gagnerait en resources en passant par une classe

@+ tard ;)

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 00:29:39 administrateur CS

mauvaise ref à vklistitems, tu as du modifier le chemin manuellement mais en oubliant de supprimer la ligne.

signaler à un administrateur
Commentaire de violent_ken le 26/05/2007 00:30:24

lol non, pas une semaine de retard, mais seulement 14 minutes ;)

Sinon oui, VScroll et HScroll pourraient être dans un seul UserControl...
Et oui, la listbox est pour l'instant (çà peut changer, de toutes façons il manque plein de trucs comme le tri...etc) avec une unique colonne, et une unique VScrollbar (bonne idée pour la HScroll, çà peut être intéressant).

Et en effet, les controles sont construits sur des objets, mais je n'ai pas la maitrise suffisante de gdi et des APIS avec un "DC" dedans pour tout passer en virtual ;) Quand j'aurais plus d'expérience dans le domaine, je l'envisagerai.


Sinon faut pas trop faire gaffe aux bugs de la listbox, j'ai posté çà comme une "base".


PS : je checke le zip et je réupload si nécessaire
@+

signaler à un administrateur
Commentaire de violent_ken le 26/05/2007 00:34:06

Voilà, le zip est correct.

Par contre le fichier clsvkListItems est pas utile pour l'instant, je n'ai pas encore fixé vraiment la méthode qui sera utilisée pour les Items.

Voir ce thread : http://www.vbfrance.com/infomsg_ACCES-LENT-COLLECTION-POUR-ITEMS-FIN_949183.aspx#9

@+

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 01:12:29 administrateur CS

si la scroll est en bas, qu'on vide et ajoute des items, la scroll reste et est visible (zone centrale) alors qu'elle ne devrait pas, mais pas le nouvel item (encore vers le bas)

si on supprime la scroll, la zone reste blanche (emplacement non-occupé)

le label plante VB ^^
(ouverture de l'interface du label (ctl) avec juste la form en arrière plan (en design évidemment), lors de la fermeture du label, boom

vérifie que le subclassing ne soit bien activé QUE en execution.
NB : attention, un ctrl DANS un crtl est TOUJOURS en execution (ambient.usermode)
NB : lors de manip de ce genre, le terminate peut avoir lieu avant le initialize. bien penser à fermer le subclass QUE s'il est ouvert

ps : tu utilises des timers VB dans tes UC, pourkoi pas le tien?


ccl pour ce soir : design très sympa, pas spécialement XP et c'est tant mieux.
un regret : les pages de propriétés. pratiques mais j'entendais particulièrement des exemples préchoisis, permettant une config des toutes les couleurs par exemple.
autre regret : consomme beaucoup trop de ressources. la form met plus de 10 secondes à s'afficher chez moi :(


j'ai déjà été plus constructif, désolé...
++

signaler à un administrateur
Commentaire de violent_ken le 26/05/2007 01:29:41

Merci pour le commentaire, qui, je te rassure, est constructif !


Pour l'histoire du scroll, il y a en effet beaucoup de problèmes...

Pour le label, je ne suis pas arrivé à reproduire le bug ??

Pour les timers... bah le mien marche toujours pas ! Et puis vu la stabilité de VB... ajouter un vkTimer avec fonction de CallBack dans un UserControl Scroll qui possède des procédures de subclassing, UserControl Scroll qui est lui même posé dans un autre UserControl subclassé ==> crash à tous les coups ;)

"vérifie que le subclassing ne soit bien activé QUE en execution." ==> Yep, si tu veux référer au VS de la listbox, certains crash doivent venir de là ! Merci pour l'info.

"pratiques mais j'entendais particulièrement des exemples préchoisis" ==> Pas de pb, de toutes façons elles sont "de base" (j'ai juste mis la liste des properties, et j'ai pas fait celle de la listbox).


Par contre là j'ai (très) peur :
"autre regret : consomme beaucoup trop de ressources. la form met plus de 10 secondes à s'afficher chez moi :("
==> 10 secondes ??? Dis moi que c'est le *.vbg non compilé que tu as démarré.... parce que si c'est le *.exe compilé, OUCH !!!!
Chez moi, le *.exe met moins d'une seconde (en enlevant les instructions du Form_load), cad à peu près comme les controles de Renfield ?


Merci encore, @+ (pourrais-tu confirmer pour les 10s dans quel cas c'est ? compilé, vbp, vbg... ?)

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 01:58:20 administrateur CS

entre 8 et 14 secondes par le vbg (j'aurais du préciser ^^) selon ce qui tourne déjà sur le PC, pour 2 secondes en compilé (ouf :D). ce sans toucher au code.
en tout cas la lenteur est due à la lourdeur...
presque 1000 lignes à chaque fois, peut-être voir à subclasser par instanciation/implements (pas toute cette saisie bien trop volumineuse)

comme ceux de Rey, beh de mémoire sa form exemple ne contient que 2 3 contrôles, faudrait tester dans les mêmes conditions


exemple de couleurs, je fais référence à ce genre de choix :
http://www.vbfrance.com/codes/NEUROBUTTON-BOUTON-TRES-CUSTOMIZABLE_34379.aspx


en attendant, le code est très aéré, assez facile de s'y retrouver
bravo ;)

signaler à un administrateur
Commentaire de waluigii le 26/05/2007 03:37:11


Slt,

Violen_Ken;Laisse tomber pour la question...


P.S Cette conversation n'a pas l'air d'avoir un fin

signaler à un administrateur
Commentaire de violent_ken le 26/05/2007 09:42:36

Salut,

PCPT ==> Ok je vois pour les propertypages ^^
Je suis un peu soulagé pour les 2s ;) C'est trop, mais c'est mieux que 10^^ Mais je peux gagner énormément de temps : je me suis aperçu que par exemple le togglebutton était rafraichit 3 fois lors du lancement, la bar 2 fois...etc, alors qu'une seule suffit largement. Reste à savoir d'où çà vient, et je corrige.
Pour ceux de Renfield (un peu un référence pour moi^^), j'ai regardé avec le même nombre approximatif de controles de même nature pour la comparaison.


Waluigii ==> Ok, comme tu voudras.

@+ et merci

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 09:46:00 administrateur CS

waluigii -> utilise le moteur avec "gravité", "rebond" ou "screensaver".
les sources ne dont pas faite pour poser des questions qui auraient éventuellement leur place sur le forum ;)

signaler à un administrateur
Commentaire de PCPT le 26/05/2007 10:16:03 administrateur CS

au read (et à l'init), tu dois lire/enregistrer tes variables puis faire le refresh, alors que tu lis les propriétés qui peuvent elles-mêmes faire ce refresh ;)

exemple pour le caption du tooglebutton => Me.Caption =... au lieu de sCaption =...
à voir pour chaque controle, chaque propriété liée au propbag ;)

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 10:00:11

PCPT ==> C'est vrai, mais il y a une variables (bNotOk) qui permet de ne pas demander le Refresh. Cela dit tu as raison.

@+

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 11:03:55

Voilà une MAJ qui règle un bug du HScroll et qui optimise grandement je pense les performances lors du loading d'une form.
@+

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 16:25:49

Une autre MAJ :

- ajout de clsFastCollection qui permet d'aller beaucoup plus vite (ne rame plus lors de la lecture du 20000eme élément de la liste !!)
- ajout de nouveaux events/properties dans la listbox
- bugs listbox corrigés
- nouveau screenshot (montre la possibilité d'une fonte par Item)
- possiblité de changer l'aspect de la scroll de la listbox
- stabilité grandement accrue par le démarrage du subclassing de la VS DANS la listbox (au passage, cette VS est un nouvel UserControl privé qui ne gère pas le subclassing par lui même)


Il reste donc à faire :
- PropertyPages comme conseillé par PCPT
- Sorted de la listbox
- corriger tous les bugs liés à la VS de la listbox

@+, bientôt fini ^^ (je posterais sur planetcodesource au début du mois de juin)

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 18:52:53

Allez hop, maintenant c'est possible de trier les Items de la vkListBox...


@+

signaler à un administrateur
Commentaire de PCPT le 27/05/2007 21:38:58 administrateur CS

salut,
avant dernière maj -> beaucoup plus rapide (3sec en IDE). impeccable

par contre j'ai regardé le code et idem pour les 2 nouvelles classes : tu ne détruits pas les éléments
tableau => erase
collection d'objet => set nothing item puis remove item en boucle puis set nothing coll
objet => set nothing et/ou avec varptr comme tu en a fais la sub (qui ne semble pas être utilisée partout dans la classe elle-même du moins)

bonne idée pour la VS privée. un hic néanmoins, çà alourdi (forcément) et çà te force une double maintenance à chaque maj.
pourquoi ne pas ajouter une propriété que le dev doit modifier? + une sub pour démarrer le subclassing
genre IsUCChild... si oui et que mode exe DU PARENT (donc de l'uc container) alors le container appelle la sub StartAsynchronousSubClass par exemple...

j'sais pas si je me fais comprendre...
et bien sur en fusionnant le VS et HS, gain final encore plus conséquent

c'est qu'une idée...
++ ;)

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 22:16:00

Yep, je n'ai pas pensé au "erase" (jamais utilisé auparavant !), merci bien pour le conseil.

Pour le VS privé, c'est vrai que çà stabilise énormément l'IDE, bien que çà alourdisse pas mal.
Je vais voir si je trouve un moyen d'alléger tout çà (pourquoi pas inclure la VS DANS le code de la ListBox ?) Pour l'idée du StartAsynchronousSubClass, çà peut aussi être une solution en effet.

Merci encore pour tes commentaires constructifs ^^
@+

signaler à un administrateur
Commentaire de PCPT le 27/05/2007 22:28:33 administrateur CS

"pourquoi pas inclure la VS DANS le code de la ListBox ?"
double voir quadriple maintenance (si tu ajoutes le HScroll)


ou tu transformes en class que tu implémentes dans ton VS, et idem dans ta LB

mais.... si le dev se fait un UC intégrant ton Scroll (UC, pas la classe), il se retrouvera avec le même pb

signaler à un administrateur
Commentaire de violent_ken le 27/05/2007 23:29:35

"double voir quadriple maintenance" ==> quadruple non, car si je met la VS directement dans la ListBox je ne met pas la HS avec.
Et puis certaines redondances seraient supprimés (notamment un seul subclassing et une seule WindowProc).

Pour l'implémentation pourquoi pas, mais je suis pas encore très familier avec çà ^^
Je verrais demain, mais c'est sur que c'est optimisable.
@+ et merci

signaler à un administrateur
Commentaire de violent_ken le 28/05/2007 00:38:08

Avant de me coucher j'ai 5 minutes, je poste la dernière MAJ de cette soirée :
- le timer MARCHE, mais est STRICTEMENT identique à celui de VB (avec SetTimer et KillTimer).
Pour avoir la haute précision, faut décommenter les lignes commentées et commenter les lignes KillTimer et SetTimer (qui ne sont pas précises), mais la haute précision bugue toujours (je commence à croire que çà vient pas de moi, mais que çà ne marche pas tout court).


@+

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 12:15:50

Bon, grosse MAJ :

- optimisé quelques trucs
- corrigé des bugs
- ajouté FileList, FolderList et DriveList (voir le screenshot).

Par contre j'ai un problème : je n'arrive pas à libérer la mémoire des icones quand le Path de la listbox change -__- Si vous avez une idée ...

@+

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 12:41:21

De même, essayez d'accéder au dossier System32 en affichant les fichiers avec leurs icones... et voyez l'immonde bug qui en résulte...

Si vous avez une idée pour corriger ;)
@+

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 20:40:58

Bugs résolus !

Les modes FileList, FolderList et DriveList sont pleinement fonctionnems !

@+

signaler à un administrateur
Commentaire de PCPT le 01/06/2007 23:26:12 administrateur CS

salut,
beh je vais toujours pas noter...

*vérifie les chemins (encore ^^)
*de nouveau très long à charger (7s IDE)
multiples bugs avec les nouveaux composants :
    *survole check OK mais reste surcolé mêem hors zone => si on refresh par le chargement d'une autre dossier, le check reste survolé à la même position. (demande si pas clair)
    *toujours des pb de scroll, donnant parfois un dossier vide comme résultat (faut re-scroller)
    *l'exploration des dossiers semble éronnée (testée avec un CD en cours d'utilisation, 2 dossiers : un seul affiché. exploration du dossier : un mp3 trouvé mais pas les 15 sous-dossiers). y'a t'il aussi l'option de l'affichage des fichiers/dossiers cachés?
    *les icônes ne sont pas détourées :$
*une form2 s'est perdue ^^
*une "personnalisation" est en vue?

je n'ai toujours pas regardé le code, possible ce soir si tu veux...
bon courage ;)

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 23:37:25

Salut,

- "vérifie les chemins" ==> bizarre, j'ai re-téléchargé le zip je n'ai pas de problèmes ?

- "de nouveau très long à charger (7s IDE)" ==> Yep, mais le temps IDE représente de moins en moins au fur et à mesure que le projet grossit : le temps IDE augmente énormément, mais le temps compilé reste relativement court (une seconde chez moi). Cela dit je peux surement faire mieux ;)

- "survole check OK mais reste surcolé mêem hors zone" ==> exact, je change çà ^^

- "toujours des pb de scroll, donnant parfois un dossier vide comme résultat (faut re-scroller)" ==> oui, toujours les problèmes de scroll... j'ai pas encore vraiment planché dessus, je vais m'y mettre.

- "l'exploration des dossiers semble éronnée" ==> bizarre, je n'ai pas eu de problèmes ? Le listing des fichiers/dossiers/drives vient directement d'une de mes sources (FileSystemLibrary) qui marche ?

-"y'a t'il aussi l'option de l'affichage des fichiers/dossiers cachés?" ==> pas encore, mais je vais en mette une (caché, systeme, RO..., pas de problèmes ;) (c'était un reproche que je faisait avant aux Dir et FileList)

- "les icônes ne sont pas détourées :$" ==> raaah, si seulement je connaissais mieux gdi32... ;)

- "une form2 s'est perdue ^^" ==> lol oui ;)

- "une "personnalisation" est en vue?" ==> çà viendra, c'est promis !


Encore MERCI pour tous les conseils, je vais pouvoir débuger et améliorer ! Merci !
@+

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 23:51:36

Pour l'histoire du listing des fichiers, çà fait pareil sur un CD chez moi ?? Je vais voir d'où çà vient...

@+

signaler à un administrateur
Commentaire de violent_ken le 01/06/2007 23:58:35

J'ai trouvé le bug pour le listing des dossiers.
J'ai également réglé le bug du check des Listes qui reste en surbrillance.
Le reste dans une deuxième MAJ dimanche ;)

@+

signaler à un administrateur
Commentaire de violent_ken le 03/06/2007 13:10:36

Ajouté la possibilité d'afficher ou non les fichiers/dossiers Hidden, ReadOnly et System.

Il ne reste donc comme bugs uniquement ceux liés aux Scroll il me semble.

@+

signaler à un administrateur
Commentaire de PCPT le 03/06/2007 14:26:02 administrateur CS

bon, un petit coup d'oeil...
Opt et Check -> ne sont réceptifs que sur l'image et le caption. faut vraiment viser (on ne peut pas cliquer à l'intérieur d'un "o" par exemple)


listbox... çà va pas :D
ok tu gères le in out pour ne plus surligner. mais l'item check ne se surligne plus alors si on le resurvole (il faut d'abord en surligner un autre)

scroll, il doit y avoir vraiment un énorme problème oui...
au refresh de ta vkListBox j'ai ajouté VS.value = 0
si j'ai bien vu çà lance le Paint (donc refresh SI tests ok)
boom, dépassement de pile

pour le temps en IDE, inchangé. il manque des tests ambiant.usermode (et parent si UC, comme indiqué précédemment)

t'a oublié le form2 :p

vkTimer et vkMouseKeyEvents -> maskcolor blanc, maskpicture = picture (le copier coller fonctionne), backstyle transparent
(il faut refaire l'image pour le timer. en bmp d'un pure blanc :p)
çà détourera sans prendre de ressource

çà sera tout pour aujourd'hui ^^
++

signaler à un administrateur
Commentaire de violent_ken le 03/06/2007 14:49:31

"Opt et Check" ==> yep je sais, mais la property BackStyle d'un usercontrol l'oblige...


"ok tu gères le in out pour ne plus surligner. mais l'item check ne se surligne plus alors si on le resurvole (il faut d'abord en surligner un autre)" ==> c'est vrai ! je vais voir çà.

"pour le temps en IDE, inchangé. il manque des tests ambiant.usermode (et parent si UC, comme indiqué précédemment)" ==> yep c'est vrai, mais de toutes façons il faut utiliser les controles en compilé ;)

"t'a oublié le form2 :p" ==> erf oui

Merci, je vais mettre à jour pour les premiers bugs.
@+

signaler à un administrateur
Commentaire de violent_ken le 03/06/2007 16:11:05

Alors là c'est bon, j'ai tout réglé sauf les bugs du Scroll !

Même si c'est long à charger dans l'IDE, je n'y peux plus rien (j'ai vérifié, chaque controle ne se Refresh qu'une seule fois).

@+

signaler à un administrateur
Commentaire de MSergio le 04/06/2007 14:45:36

Salut Violent_Ken,

Je ne comprends pas pourquoi tu as fait une listbox avec une listview. Pourquoi ne pas garder la listview en tant que telle et laisser ceux qui veulent la limiter le faire eux-mêmes ?
As-tu envisagé de créer un Flexgrid hiérarchique au style XP un jour ? Je suis intéressé.
Je trouve que c'est le meilleur contrôle pour afficher des listes de données même non hiérarchisées. Enfin, ce n'est qu'un avis personnel.

En tout cas, merci encore pour tous tes contrôles. j'avais oublié de te noter. Bien sûr c'est un 10 que je t'octroie.

++

signaler à un administrateur
Commentaire de violent_ken le 04/06/2007 18:56:51

Salut,

"pourquoi tu as fait une listbox avec une listview" ==> en fait c'est le contraire, j'ai fait une listview avec une listbox ;) Comme son nom l'indique (vkListBox), c'est une Listbox, mais tellement plus riche que celle de VB qu'elle se rapproche d'une ListView à une colonne.
Je n'ai pas fait directement une ListView car je l'ai jugée - au départ - trop complexe, mais je ferais peut être un jour un vraie ListView.

"As-tu envisagé de créer un Flexgrid hiérarchique au style XP un jour ?" ==> Pas encore (j'utilise jamais le controle FlexGrid), je vais voir si c'est jouable, et pourquoi pas (mais quand j'aurais le temps ^^, fin d'année oblige ==> partiels, DS... ^^)

Merci pour le commentaire et la note, @+

signaler à un administrateur
Commentaire de violent_ken le 04/06/2007 21:42:19

Petite MAJ : la propriété ListIndex fonctionne désormais (testé lecture uniquement).

Application : cliquez sur un item de la liste de droite avec le bouton droit...

@+

signaler à un administrateur
Commentaire de violent_ken le 04/06/2007 21:48:11

Je précise tout de même avant qu'on me le dise, OUI cela génère une erreur quand il n'y a pas d'Items.

Tout comme un Listview vide quand on fait :
Private Sub Command1_Click()
    Me.Caption = LV.ListItems.Item(1).Text
End Sub

@+

signaler à un administrateur
Commentaire de MSergio le 05/06/2007 10:40:52

Merci pour tes réponses et désolé pour mon erreur sur la Listbox.

J'ai remarqué que tes contrôles ne sont pas sensibles aux raccourcis clavier ajouté grâce au & dans le caption des contrôles.
Ce n'est pas si grave mais pour un fondu du clavier comme moi, c'est un peu gênant.

++

signaler à un administrateur
Commentaire de niczob le 05/06/2007 17:47:00

Merci pour la précision sur la license ;)

Je ne l'avais pas encore fait remarquer, mais tes contrôles sont excellents ! (je pense que tu l'avais compris)

Je ne sais pas si cela a été dit plus haut (je n'ai pas tout lu), mais il y a un bug avec les boutons et la propriété Enabled : quand un bouton est disabled, il est bien grisé, mais on peut encore cliquer dessus. Ce n'est pas un problème en soit, c'est contournable, mais je tenais à faire part de cette remarque.

signaler à un administrateur
Commentaire de violent_ken le 05/06/2007 19:12:32

MSergio ==> yep, j'ai pas pensé du tout à çà, j'essaierai de gérer çà bientot !

niczob ==> Dis le moi, si tu veux que je passe en LGPL. Sinon pour le bug du Enabled, je vais voir çà, merci ;)

@+

signaler à un administrateur
Commentaire de violent_ken le 06/06/2007 19:51:46

Pour ceux qui préfèrent l'anglais ==> http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=68734&lngWId=1

@+

signaler à un administrateur
Commentaire de violent_ken le 06/06/2007 20:14:55

Suite a une demande, j'ai modifié la licence.
Par conséquent, il est maintenant possible d'utiliser ces controles dans une application commerciale sans en changer la license.

@+

signaler à un administrateur
Commentaire de violent_ken le 07/06/2007 23:49:17

Hum, quelqun sur PSC m'a rapporté que la plupart des controles ne s'affichaient pas (tout noirs) sous Windows2000.

Si quelqu'un essaie de faire tourner le code sous Windows2000, merci de me tenir au courant du résultat ^^

@+

signaler à un administrateur
Commentaire de PCPT le 08/06/2007 06:33:02 administrateur CS

testé sous Win2K pro sp4 avec ton avant dernière version, affichage identique à XP.
"quelqu'un" raconte n'importe quoi^^
au pire dit lui d'ajouter initcommoncontrols au démarrage de l'exe pour tester, si çà résoud le pb alors ajoute un module et sub Main à l'ocx pour faire cet appel.
possible que çà vienne de sa version de comctl32.ocx.
autrement dit soit ses SP de Win, soit pas le SP6 de VB (je penche pour çà)
++ ;)

signaler à un administrateur
Commentaire de violent_ken le 08/06/2007 10:31:36

Merci PCPT, çà me rassure ... un peu ;)

Parce que Renfield vient de me rapporter qu'il avait le soucis avec XP !
"Même soucis : ils sont tout noir, jusqu'à ce que je les survole… (je suis sous Xp, au boulot…)"

Même problème que la personne de PSC : "I'm using W2K and half the controls didn't paint, were just black, till I moved the mouse over them."

C'est vraiment bizarre. L'entrée de la souris sur les controles a pour but d'activer le message WM_MOUSEHOVER et donc de lancer un Refresh.... mais ce Refresh aurait du être lancé bien avant (lors du Resize).

Damn !
@+

signaler à un administrateur
Commentaire de PCPT le 08/06/2007 10:45:05 administrateur CS

si c'était le paint ils seraient transparent ou gris.
je ne vois que çà pour y remédier : Declare Sub InitCommonControls Lib "comctl32" ()

signaler à un administrateur
Commentaire de violent_ken le 08/06/2007 10:50:45

Nop, Renfield vient d'essayer et çà ne change pas.
Je pense que c'est la procédure UserControl_Resize qui n'est pas exécutée (car c'est elle qui Refresh le controle lors du chargement).

@+

signaler à un administrateur
Commentaire de MSergio le 08/06/2007 11:00:08

Salut VK,

Tu permets que j'abrège ton pseudo ?
Je te prie de bien vouloir excuser mon ignorance mais aurais-tu un exemple d'utilisation d'un scroll vertical. En fait, j'utilise un MSHFlexgrid qui a déjà un scroll intégré. Toutefois ce scroll fait tâche avec le reste de mon appli. J'aimerais donc utiliser ton scroll vertical. Je n'ai jamais utilisé de scroll auparavant et je n'ai pas réussi à trouver d'exemples d'utilisations de scroll. Je ne comprends pas comment on sait quand le scroll descend ou monte en particulier

Merci

signaler à un administrateur
Commentaire de PCPT le 08/06/2007 11:22:37 administrateur CS

et en mettant çà http://s150385727.onlinehome.fr/tmp/COMCTL32.OCX dans XX:/WINDOWS-WINNT/SYSTEM32 ?
(sauvagerder celui d'origine au préalable)

signaler à un administrateur
Commentaire de violent_ken le 08/06/2007 11:32:27

MSergio ==> Pas de problèmes, tu peux m'appeler VK ;)
Alors pour utiliser ma VScroll dans un MSHFlexGrid, voilà comment tu pourrais faire :
- enlever les scrollbars du Grid (MSHFlexGrid1.ScrollBars=0)
- poser un controle vkVScroll à côté du Grid
- récupérer un changement de valeur du Scroll. Il y a pour çà plusieurs évênements, le plus simple étant Scroll_Change. Tu récupère donc la valeur du Scroll (vkVScroll1.Value) dans le Scroll_Change, et en fonction de çà, tu changes la première colonne visible de ton Grid en changeant la propriété TopRow. Après, il faut ajuster le Max de la Scroll à chaque fois que tu ajoutes ou enlèves une ligne.

J'espère que çà t'aideras ^^


PCPT ==> En fait, Renfield est arrivé à faire marcher les controles sur un PC où çà buguait : c'est apparement l'ordre d'appel de ReadProperies, Initialize, Resize...etc. qui est changé sur certains PC, d'où une mauvaise gestion de l'appel au Refresh.

Merci, @+

signaler à un administrateur
Commentaire de MSergio le 08/06/2007 12:00:36

Merci pour ta réponse rapide et apparemment précise. J'essaie de suite, enfin après le repas...

Merci encore.

signaler à un administrateur
Commentaire de violent_ken le 08/06/2007 23:51:03

Update :

- correction du bug des controles tout noirs
- ajout d'un OCX de gestion du SysTray avec gestion automatique du crash d'explorer par hook.

@+

signaler à un administrateur
Commentaire de violent_ken le 08/06/2007 23:51:52

*ajout d'un USERCONTROL, pas d'un OCX....

signaler à un administrateur
Commentaire de violent_ken le 10/06/2007 15:40:08

MAJ :
- ajout de la vkTextBox : c'est une classique + zone légende qu'avait inventée Renfield + numérotation des lignes + fonctions pratiques qui manquaient à la vbTextBox (GetLine, LineCount...etc.)

@+

signaler à un administrateur
Commentaire de PCPT le 10/06/2007 15:44:53 administrateur CS

dommage que ta TextBox ne soit pas liée à TON scroll, çà casse tout le charme...

signaler à un administrateur
Commentaire de violent_ken le 10/06/2007 15:52:16

Pas d'inquiétude, je suis en train de le faire ;)

Je sais très bien que c'est moche, surtout pour ceux qui ont un thème non XP (classic ou vista) ^^

Je livre une version fonctionnelle pour voir si des gens trouvent des bugs autres que ceux liés aux Scrolls (qui sont TRES nombreux dans la version scrolls perso -__-).

Cà va venir ;)

@+

signaler à un administrateur
Commentaire de violent_ken le 10/06/2007 20:12:23

Avec un subclassing un peu étrange, je suis arrivé à inclure sans aucun bug la VScroll ;)

Je planche sur la HScroll ^^
@+

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 10:21:24

Salut VK,

Pour info, la propriété TopRow reste à 0 quand la propriété ScrollBars est à flexBarScrollNone pour un MSHFlexgrid. Pour utiliser ton scroll, il faut donc afficher le scroll de la MSHFlexgrid.
Je vais tester ton nouceau scroll car avec l'ancien, cela ne marchait que moyennement bien. Je ne sais pas si cela vient de mon code ou de ton scroll car c'est la première fois que j'utilise un scroll externe à un objet.
Je teste et si je n'y arrive toujours pas, je te montrerais mon code pour voir si je fais des erreurs.

++

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 10:52:49

Je vais devoir continuer mon projet sans ton scroll qui bug. Je viens de tester le dernier (10/06)et il bug toujours. Si j'utilise le même code avec un scroll de vb, cela se passe sans souci. Je pense que je vais utiliser le scroll de vb en attendant que ton scroll fonctionne sans problème.
Dans le scroll de vb, l'événement Change, ne comporte aucune variable alors que le tien en contient une appelée Value de type Currency. Est-ce normal étant donné qu'il y a déjà la propriété Value pour le scroll ?

++

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 10:56:08

"Dans le scroll de vb, l'événement Change, ne comporte aucune variable alors que le tien en contient une appelée Value de type Currency. Est-ce normal étant donné qu'il y a déjà la propriété Value pour le scroll ?" ==> Oui, c'est tout à fait normal, j'ai choisis de passer ce paramètre en plus, sachant que l'on utilise très souvant Scroll.Value dans le change (donc en ayant le paramètre Value, çà permet d'éviter d'avoir à appeler la property).


Cela dit, pourrais-je te demander ton code pour que je voie où çà bug avec ma scroll ? Histoire que je corrige ma source si nécessaire ^^
Merci, @+

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 14:05:48

Peut-être que ton scroll ne bug pas.
Je viens de m'apercevoir qu'après avoir réenregistré ton OCX, tous les nouveaux contrôles n'y sont pas alors qu'en créant un nouveu projet et en ajoutant ton OCX, il n'y a pas de problème. Sais-tu pourquoi ? Ai-je mal fait quelque chose ?

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 14:16:59

Tu dois avoir plusieurs versions de mon OCX enregistrées (tu n'as pas du désenregistrer l'ancienne version avant d'enregistrer une nouvelle version).

Je te conseille de :
- désenregistrer tous les vkUserContolsXP.ocx présents sur ton disque
- recompiler la dernière version
- créé un nouveau projet et ajouter l'OCX (tu fais CTRL+T -> Parcourir et tu sélectionnes celui que tu viens de compiler)
- un nouveau OCX est coché dans la liste. Si plusieurs portent le même nom, alors il y a un conflit (plusieurs versions)
- clique sur OK et vérifie que les controles sont bien tous ajoutés au nouveau projet
- enregistre le projet
- ouvre le fichier *.vbp avec le bloc notes
- récupère la ligne qui ressemble à "Object={663909D2-4D55-47D5-BF80-43B9F88E5480}#61.0#0; vkUserControlsXP.ocx"
- ouvre TON projet
- remplace la ligne Object=.... par celle obtenue dans le nouveau projet
- sauvegarde
- relance ton projet
- et espère !!!

N'hésites pas si tu as des questions ;)
@+

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 14:22:48

J'aimerais bien pouvoir le recompiler mais je ne parviens pas à ouvrir le projet vkUsersControl.vbp sans erreurs. La première erreur qui génère peut-être les suivantes vient du chargement du contrôle de la textbox. Je te précise que j'ai fait la maj SP6B après avoir rencontré ces soucis seulement.
Je vais quand même testé ta manip en priant.
Merci.

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 14:26:59

Quels sont les erreurs que tu rencontres ? Quand tu essayes de compiler, çà te dis quoi ?
@+

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 15:03:00

Comme me le fait remarquer Renfield, le zip est mauvais.

Je ré-upload çà tout de suite, mais par contre la TextBox sera une BETA (j'ai pas encore fini de régler quelque problèmes avec la HScroll).
@+

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 15:29:22

Bon alors, une MAJ :

- zip corrigé : plus de fichier OCX dedans, plus de compatibilité entre projets et plus de mauvaises références. Démarrez simplement le fichier *.vbg ;)

- ajout des scrollbars perso dans la vkTextBox (et voilà PCPT ^^). Par contre j'ai sacrifié les property RoungAngle et BreakCorner, et de plus la HScroll ne fonctionne pas encore correctement, mais çà ne saurait tarder.

@+

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 16:17:59

Je t'ai fait un projet test où je reprends mon code pour retailler ma flex et ses colonnes, y apposer un VScroll et le gérer.
Où puis-je te l'envoyer ?

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 16:20:48

hum, je t'envoie pas MP mon adresse mail.
@+

signaler à un administrateur
Commentaire de MSergio le 11/06/2007 16:21:10

J'ai oublié de préciser que ta manip avait fonctionné et surtout que c'était ma faute car après coup, je me suis aperçu que j'avais 2 fois l'ancienne version de l'OCX.
Désolé pour la perte de temps.

++

signaler à un administrateur
Commentaire de violent_ken le 11/06/2007 17:50:10

Bon voilà, j'ai amélioré la HScroll de la vkTextbox.

Pas parfaite, elle bug un peu (beaucoup ?). En plus elle est pas compatible avec la VScroll (entendre pas là que en mode HScroll activé, LineCount ne marche plus...)

Par contre la VScroll (celle qui est vraiment utile) marche nickel ;)
@+

signaler à un administrateur
Commentaire de violent_ken le 15/06/2007 13:50:59

MAJ :
- ajouté un nouveau controle (vkScrollContainer), voir exemple pour comprendre à quoi çà sert ;)
- corrigé des bugs dans la vkBar (maintenant c'est ok pour utiliser la fonction Interactive, l'exemle est donné en bas à droite de la form, dans le vkScrollContainer)
- corrigé des bugs dans vkCommand et vkToggleButton (plus de problèmes dans le ReadProperties)
- nouvel exemple et nouveau screenshot.


MSergio a mis en avant un bug dans les Scrolls, je planche dessus et je mettrais prochainement à jour !
@+

signaler à un administrateur
Commentaire de violent_ken le 15/06/2007 18:53:42

PCPT ==> J'ai ajouté des styles par défaut comme tu me le demandais (pour le vkCommand et le vkToggleButton) ;)

6 styles par défaut :
- Normal
- XP
- Plastik
- Galaxy
- Office
- JAVA

@+

signaler à un administrateur
Commentaire de FMatrix07 le 17/06/2007 09:40:59

Hello VIOLENT_KEN,

Je regarde toujours cette source avec plaisir et je surveille les maj car je trouve ta source d'enfer.
Par contre il ya un bug dans la dernier mais rien de grave c'est que tu as laissé les liaisons pour le vkScrollContainer.ctl avec ton projet STYLE-XP-15-USERCONTROLS.

Sinon si tu veux une autre evolution à faire tu peux ajouter une image qui change sur tes boutons command quand tu passe la souri. Vu que tu as deja une image possible il te reste juste à ajouter une autre image et tester si la souri passe sur ton bouton pour changer l'image.

Bonne continuation
FMATRIX07

PS je mets 11/10 bien que ça prenne pas mal de ressource d'utilser cette OCX ne pourrait on pas diminuer cela ?

signaler à un administrateur
Commentaire de violent_ken le 17/06/2007 10:00:31

Salut, alors merci pour avoir remarqué la mauvaise liaison de vkScrollContainer, j'ai corrigé.
Dans la MAJ, j'ai également
- corrigé quelques autres bugs (orientation de la Légende et quelques autres)
- ajouté la gestion du Pattern pour la ListBox (en mode FileListBox)



"Sinon si tu veux une autre evolution à faire tu peux ajouter une image qui change sur tes boutons command quand tu passe la souri. Vu que tu as deja une image possible il te reste juste à ajouter une autre image et tester si la souri passe sur ton bouton pour changer l'image." ==> Oui pourquoi pas... je pense que je le ferais dans la prochaine MAJ ^^


"bien que ça prenne pas mal de ressource d'utilser cette OCX ne pourrait on pas diminuer cela ?" ==> Hum, effectivement c'est très long à démarrer le *.vbg, mais sinon en compilé çà rend nettement mieux. J'ai commencé à inclure mes controles dans mon projet Hex Editor VB, et çà tourne assez bien. Cela dit il y a sans doutes moyens d'optimiser tout çà, çà viendra au fur et à mesure des MAJs de cette source ;)
Mais concernant la form de test, elle est bourrée de controles (+ de 80) et il y a quelques boucles au démarrage ==> prend du temps à charger. Dans un projet normal (10-30 controles par form), c'est plus rapide.

@+ et merci.

signaler à un administrateur
Commentaire de FMatrix07 le 17/06/2007 10:32:38

Impec je suivrai cela avec impatience

Sinon tu pourrais ajouter dans la position de l'image l'option Center en plus de Right et Left dans les boutons command

@+

signaler à un administrateur
Commentaire de violent_ken le 17/06/2007 13:48:22

Yep ;)

Sinon pour te répondre plus concrêtement, les optimisations (et donc la légereté) viendront avec l'utilisations massive d'APIs graphiques (plutôt que Line, Print...).

J'ai déjà trouvé comment faire un gradient avec les APIs, reste donc que j'arrive à me passer des PictureBox et autres controles grâces aux DCs et c'est gagné ;)
(enfin faudra être patient :p)

@+

signaler à un administrateur
Commentaire de violent_ken le 17/06/2007 13:54:36

Pour info, la création de gradient est 47 fois plus rapide par API ;)
@+

signaler à un administrateur
Commentaire de violent_ken le 17/06/2007 14:19:52

Bon j'ai fait une MAJ très rapide pour optimiser quelques peu les performances : les dégradés s'effectuent désormais par API ==> gros gain de performances et code moins long.

Egalement j'ai pris en compte le Enabled du vkListBox (le controle est différent quand il n'est pas Enable : grisé...etc)

@+

signaler à un administrateur
Commentaire de FMatrix07 le 17/06/2007 22:12:03

Hello

Il est vrai que ça soulage un peu le proc et le fait de passer en création gradient diminurai encore plus.

Courage petit scarabé !!! LOL

Au fait j'ai retouvé le boutton control qui utilise 2 images si ça te dis

@+
FMATRIX07

signaler à un administrateur
Commentaire de FMatrix07 le 21/06/2007 06:47:28

Hello VIOLENT_KEN,

Sais tu comment faire pour faire un appel de tes controles comme avec ceux de VB
je m'explique j'ai un bouton command1
avant il m'arrivait de faire dans mon code command1_click ou meme command1.value=true
mais quand je passe avec le vkcommand1 je ne peux plus l'appeller avec vkcommand1_click ou meme vkcommand1.value=true car inconnu

Merci de ton aide
FMtrixà7

signaler à un administrateur
Commentaire de PCPT le 21/06/2007 09:14:47 administrateur CS

FMatrix07 -> c'est exactement le même appel.
et si tu appelles d'une autre feuille, il faut évidemment changer la portée de l'évènement (public) comme c'est aussi le cas pour les contrôles VB
++

signaler à un administrateur
Commentaire de violent_ken le 21/06/2007 14:12:58

Salut, oui bien sur il faut passer en public la procédure vkCommand1_Click() pour l'appeler d'un autre module... et il n'y a pas de propriété Value au controle vkCommand !


Truc HS : si quelqu'un sait lire le japonais : http://www.mndsoft.com/blog/article.asp?id=924 (O_o)'

@+

signaler à un administrateur
Commentaire de PCPT le 21/06/2007 14:28:01 administrateur CS

violent_ken -> pourquoi ce lien?
manque les ref FR dans la source lignes 1 2 4 et 5

signaler à un administrateur
Commentaire de violent_ken le 21/06/2007 14:42:00

"pourquoi ce lien?" ==> je sais pas, je suis tombé dessus par hasard...

"manque les ref FR dans la source lignes 1 2 4 et 5" ==> Je comprend pas vraiment ?

@+

signaler à un administrateur
Commentaire de PCPT le 21/06/2007 14:59:16 administrateur CS

umm...
çà semble être du coréen

http://translate.google.com/translate?u=http%3A%2F%2Fwww.mndsoft.com%2Fblog%2Farticle.asp%3Fid%3D924&langpair=ko%7Cen&hl=fr&ie=UTF-8&oe=UTF-8&prev=%2Flanguage_tools

çà parraît bien bizarre tout çà....

signaler à un administrateur
Commentaire de violent_ken le 21/06/2007 15:08:51

Autant pour moi, du coréen et pas du japonais ;)

C'est en fait une traduction du code que j'ai déposé sur planet-source-code, avec un nouveau screenshot. Donc sans doutes quelqu'un qui a téléchargé mon code sur PSC et qui l'a uploadé ici ?

Je suis tombé dessus par hasard hier, et comme j'ai vu "bug" dans les commentaires, je cherchais juste à savoir ce qui était écrit !

@+

signaler à un administrateur
Commentaire de FMatrix07 le 21/06/2007 21:21:30

Ok
J'ai bien vu ton message je vais essayer pour le moment j'utilise
vkcommand1.WindowProc vkcommand1.hwnd, WM_LBUTTONDBLCLK, 0, 0
et ça fonctionne

FMatrix07

signaler à un administrateur
Commentaire de PCPT le 22/06/2007 02:32:38 administrateur CS

FMatrix07 -> euh... j'crois mieux comprendre ta demande : tu voulais simuler le click VISUELLEMENT ??

un contrôle, lors d'un évènement (comme le click) renvoie (raiseevent) l'évènement approprié.
dans ce code le dev met ce qu'il veut
private sub UC_Click(): msgbox "clické": End Sub

cet évènement n'est ni plus ni moins qu'une procédure, sauf qu'elle est disponible dans la liste des évènements de l'UC
donc tu peux l'appeler à n'importe quel moment.
pour l'effet visuel il faut en effet déclencher l'évènement parent (celui qui fera le raiseevent)

pour un Click, par exemple en déplaçant la souris et en cliquant (SetCursorPos + mouse_event).

toi ici, ce que tu fais, c'est appeler la WinProc en lui attribuant des params.
ouai çà marche, mais c'est tout sauf propre (tout comme déplacer la souris d'ailleurs)

tit problème de conception non? ^^


Violent_Ken -> WinProc en Friend, çà passe? sinon au pire des cas AU MOINS la masquer (attributs)
ps : toujours pas regardé ta source en profondeur mais je n'y manquerai pas ;)

++ ;)

signaler à un administrateur
Commentaire de FMatrix07 le 22/06/2007 06:28:41

Merci pour ce petit comment PCPT.
Non je ne voulais pas faire de clique visuel mais je me suis complié la vie, j'etais partir sur un code sans reflechir désolé, je vais juste faire ce que tu m' a dis
Commentaire de : PCPT le 21/06/2007 09:14:47  FMatrix07 -> c'est exactement le même appel.
et si tu appelles d'une autre feuille, il faut évidemment changer la portée de l'évènement (public) comme c'est aussi le cas pour les contrôles VB
++

Merci
FMatrix07

signaler à un administrateur
Commentaire de MSergio le 22/06/2007 12:15:32

Salut VK,

Je reviens pendant quelques temps sur mon projet.
As-tu eu le temps de te mettre sur le problème du LargeChange de ton scroll vertical ?
J'ai vu qu'il n'est pas possible de changer graphiquement la couleur de la VScroll intégrée de ta listbox. Et si tu redimensionnes ta listbox graphiquement, la VScroll intégrée ne se redimensionne pas.
Pour information je n'ai que la version 15 compilée de ton OCX car je ne parviens pas à lancer la version 16 sans erreur. Les erreurs surviennent lors du chargement des objets vkHScrollPrivate et vkVScrollPrivate.

++

signaler à un administrateur
Commentaire de violent_ken le 22/06/2007 13:27:38

Salut, alors :

- " LargeChange de ton scroll vertical" => non, pas encore ! (DS de fin d'année ces 2 dernières semaines, donc pas le temps jusqu'à présent ^^), je commence lundi a supprimer les bugs liés aux scrolls.
- "J'ai vu qu'il n'est pas possible de changer graphiquement la couleur de la VScroll intégrée de ta listbox" ==> Changer l'aspect de la scroll de la listbox graphiquement, c'est effectivement impossible actuellement, car il manque les fichiers *.pag (page de propriété) associés à ces "sous-controles". Mais c'est tout à fait prévu.
- "Et si tu redimensionnes ta listbox graphiquement, la VScroll intégrée ne se redimensionne pas" ==> ah, je vais voir çà, merci.
- "car je ne parviens pas à lancer la version 16 sans erreur" ==> le mieux est de désinstaller l'ancienne version avant d'essayer une nouvelle. Mais pour ce problème précis, le remède est facile ;) Il suffit d'éditer les controles qui buguent avec les scrolsl privates, de supprimer les scrolls, et de les ré-ajouter en les renommant du même nom. Cà devrait suffire ;)

Je ferais une MAJ en début de semaine, j'espère arriver à corriger la totalité des bugs rencontrés avec les scrolls, que ce soit en Private (dans la listbox ou la textbox) ou dans les controles Scroll eux même.

Egalement, j'ai prévu d'ajouter le support de l'Unicode dans mes contrôles (si j'y arrive !).
Puis reste aussi une ListView qu'on m'a démandé de faire (devrait pas être trop trop dur), de la transparence alpha (ouch !) et enfin un mshflexgrid (par contre là je sais pas encore si c'est possible).

@+

signaler à un administrateur
Commentaire de violent_ken le 25/06/2007 20:37:21

Salut, v'là la première MAJ, j'ai corrigé de nombreux bugs :

- la scroll de la vkListBox change de position lors des ajouts d'Items
- plus de bug lors du LargeChange (MSergio, c'est ENFIN bon normalement ! ^^)
- plus de bug de SetFocus lors du vkCommand_Click
- meilleur comportement du vkCommand (lors du MouseUp, et pas possible hord de la zone du controle)
- ...

Je travaille sur les autres problèmes des Scrolls.
@+

signaler à un administrateur
Commentaire de FMatrix07 le 25/06/2007 20:42:24

Impatient j'essai
@+
FMatrix07

signaler à un administrateur
Commentaire de FMatrix07 le 25/06/2007 20:57:34

Dans les
Private Sub UserControl_GotFocus()
'alors on va tracer un BÔ rectangle de sélection
Dim R As RECT
Dim y As Long
Dim x As Long
    
     'If bEnable = False Then
        'on ne garde pas le focus
        Call SendKeys("{Tab}")
        Exit Sub
    End If

Private Sub UserControl_GotFocus()
'alors on va tracer un BÔ rectangle de sélection
Dim R As RECT
Dim y As Long
Dim x As Long
    
    ' If bEnable = False Then
        'on ne garde pas le focus
        Call SendKeys("{Tab}")
        Exit Sub
    End If

il y a un cote en trop devant les If


Sinon
Tu n'as pas ajouté la position de l'image l'option Center en plus de Right et Left dans les boutons command ? LOL
Tu n'as pas ajouté une image qui change sur tes boutons command quand tu passe la souri. Vu que tu as deja une image possible il te reste juste à ajouter une autre image et tester si la souri passe sur ton bouton pour changer l'image ? LOL

@+
FMatrix07

signaler à un administrateur
Commentaire de violent_ken le 25/06/2007 21:18:51

-____-

Il y a eu tellement de posts entre temps que j'ai oublié... j'ai pourtant relu les commentaires en partant des derniers, mes MP et les commentaires sur PSC pour trouver les bugs à corriger...

Ce sera fait dans la prochaine MAJ (enfin, pas celle tout de suite vu qu'il faut que je vire le petit bug, mais celle d'après), c'est PROMIS !
Désolé d'avoir oublié.... @+

signaler à un administrateur
Commentaire de violent_ken le 25/06/2007 21:23:10

Voilà, la source est à nouveau fonctionnelle.

Donc comme je l'ai dit, j'aurais inclus les modifications demandées lors de la prochaine MAJ.
@+

signaler à un administrateur
Commentaire de Charles Racaud le 25/06/2007 21:40:35

Yhaooo, ca ne manque pas de commentaires. (dsl, j'ai pas tout lu)
Bon, même si je ne suis pas grand fan des contrôles personnalisés dans les applications, ceux la sont bien réussit.
Allez, je balance une idée qu’on ne voit pas souvent :
Dans les listbox, y'a souvent des CheckBox, pourquoi pas pouvoir mettre des OptionsButtons ? Ou les deux à la fois. C'a m'aurais été utile plus d'une fois.
A quand la TreeView (ou TreeListView serait encore mieux) ? (avec aussi des optionboutons dedans ^^)
__
Kenji

signaler à un administrateur
Commentaire de FMatrix07 le 25/06/2007 23:15:49

Cool si tu fais les ad que je t'ai soumis.
Enfin tu les fais si tu le souhaite ce n'est qu'une proposition.

Sinon si Nix passe par là au bout de combien de commentaires vous donnez un trophé à une source car celle-ci le merite bien.

@+
FMatrix07

signaler à un administrateur
Commentaire de violent_ken le 25/06/2007 23:53:01

Charles Racaud ==> Oui, un OptionButton dans la vkListBox, pourquoi pas, je note dans la (longue) liste des 'TODO' ^^ Comme çà dès que j'ai le temps, j'essayerai de mettre en oeuvre ;)
Sinon pour un TreeView/TreeListView, pourquoi pas, je pense que je vais déjà faire un vkListView (si j'y arrive), et je verrais si c'est possible à faire un TreeView simplement.

FMatrix07 ==> Pas de soucis, dans la prochaine MAJ tu auras l'option "Center" pour l'image dans les vkCommand, vkToggle et vkFrame. Par contre le positionnement du texte (avec l'image au centre) sera un peu difficile... ?
De même, je rajouterai une property MouseHoverIcon qui contiendra l'image à afficher en icone lors du survol d'un vkCommand par la souris.
Demain normalement ;)

@+ et merci pour les commentaires

signaler à un administrateur
Commentaire de MSergio le 26/06/2007 09:12:10

Merci VK,

Je teste de suite...

++

signaler à un administrateur
Commentaire de MSergio le 26/06/2007 17:12:45

Apparemment le LargeChange est parfaitement géré maintenant. Je ne vois pas d'autres probèmes à te signaler sur ton VScroll.
En revanche as-tu l'intention d'ajouter la gestion des raccourcis clavier si on ajoute un & dans la propriété caption d'un contrôle ? Cela m'apparaît indispensable. En ce qui me concerne, je ne supporte pas les applis qui ne permettent pas d'utiliser ces raccourcis. Il suffit de tomber en panne de souris pour que cela puisse nous permettre de travailler. Je serais vraiment déçu si tu ne planifiais pas dans le futur de l'implémenter. Ce n'est qu'un avis personnel. Je suis tout de même surpris d'être le seul affecté par ce manque.

Merci pour ton boulot quoi que tu décides,

++

signaler à un administrateur
Commentaire de violent_ken le 26/06/2007 17:18:06

Content que le LargeChange ne pose plus de problème ^^

"En revanche as-tu l'intention d'ajouter la gestion des raccourcis clavier si on ajoute un & dans la propriété caption d'un contrôle ?" ==> Affirmatif. Je pense d'ailleurs que tu me l'avais déjà demandé, mais comme pour FMatrix07, je ne l'avais pas noté dans TODO.txt. C'est maintenant chose faite (j'ai noté dans le fichier TODO), donc dans une MAJ prochaine le '&' sera géré comme étant un raccourci.

"Je suis tout de même surpris d'être le seul affecté par ce manque." ==> Bah perso, je n'utilise jamais les raccourcis ;)

@+

signaler à un administrateur
Commentaire de violent_ken le 28/06/2007 19:53:56

Salut !

Assez grosse MAJ :

- cochage des Checks dans une vkListBox lors du double clic sur un des Items
- j'ai résolu pas mal de bugs liés au focus et à la touche Tab (merci Mew27 !)
- caché la WindowProc de la vue du projet utilisant ces controles
- ajout de la gestion d'une icone lors du survol d'un vkCommand ou vkToggleButton
- ajouté la gestion des raccourcis des controles ('&' dans le Caption)
- gestion de l'Unicode (pour tous les textes de tous les controles, sauf le .Text de la vkTextBox, j'espère trouver comment faire)
- nouvel exemple + nouveau screen

FMatrix07 ==> Je n'ai pas pu ajouter l'alignement central des Icones parce que je ne sais pas comment gérer la position du texte avec une picture au centre ! (en clair : où veux tu que je mette le texte si la Picture est au centre ? Juste à gauche ou à droite avec la property TextAlignment ?)

Nota : encore quelques bugs avec la gestion de l'Unicode (les FocusRect pas à la bonne dimension, car TextWidth aime pas trop l'unicode ^^)

@+

signaler à un administrateur
Commentaire de MadM@tt le 28/06/2007 22:17:22

Gestion de l'unicode ! hé beh ! y'a du boulot en continu !

En tout cas rien que la capture a vraiment de la gueule ^^

signaler à un administrateur
Commentaire de violent_ken le 28/06/2007 22:51:19

Héhé, l'Unicode c'était pas très compliqué (DrawTextW au mieux de DrawText), mais là où çà va être marrant, c'est pour permettre d'afficher de l'Unicode dans la vkTextBox (va falloir subclasser je sais pas comment la TextBox...).

Mais c'est vrai que çà rend bien ^^
Bientôt plus de place dans une seule Form pour tout montrer !

@+

signaler à un administrateur
Commentaire de FMatrix07 le 29/06/2007 06:29:51

Salut VIOLENT_KEN

D'enfer ta nouvelle MAJ mais tu ne t'arreteras jamais enfin j'espere

La gestion de l'icone en cas de survol est impec.
Pour ce qui est de la position center de l'image il est vrai que ça ne peut etre valable que s'il n'y a pas de texte je regarde de mon coté.

Par contre il faudrait que tu vois pour qu'il y ai un retour à la ligne en automatique du texte quand celui ci est trop long pour etre affiché sur une seule ligne ex: dans les vkcommand

Pas mal ton unicode.

Que la force soit avec toi et bon courage
Je regarderai les MAJ suivante avec grand interet

@+

signaler à un administrateur
Commentaire de violent_ken le 29/06/2007 11:30:12

Ok, je note pour le retour automatique à la ligne !
@+

signaler à un administrateur
Commentaire de violent_ken le 29/06/2007 12:22:54

Petite MAJ rapide pour ce matin :
- corrigé un bug dans le Timer (quand on changeait les properties Enable et/ou Interval en leur laissant les même valeur, çà provoquait un bug)
- corrigé 2 bugs dans le tri de la vkListBox (en tri inverse de l'alphabétique, le premier Item n'était pas pris en compte + pas de réorganisation des Items si tous sont identiques)
- ajouté le retour automatique à la ligne dans vkCommand et vkToggleButton

Reste à corriger LE plus gros bug (zone blanche à la fin de la vkListBox), j'essaye de le faire aujourd'hui.
@+

signaler à un administrateur
Commentaire de violent_ken le 29/06/2007 20:23:38

Re, v'là la dernière MAJ de la journée...


La vkListBox n'est plus en Beta2, j'ai corrigé TOUS LES BUGS CONNUS !!
(excepté celui du survol des checks qui foire encore un tout peti peu, à la prochaine MAJ ce sera bon ^^).

Voilà !!

@+ ;)

signaler à un administrateur
Commentaire de violent_ken le 02/07/2007 11:53:18

Hello !

Cà y est c'est bon, j'ai supprimé la totalité des bugs rencensés de la vkListBox !!

@+

(svp si vous trouvez un bug, n'hésitez pas à me le dire !)

signaler à un administrateur
Commentaire de violent_ken le 02/07/2007 22:36:04

Salut, j'ai attaqué un 17eme controle dont j'avais grandement besoin : le TabStrip (celui de VB étant très pauvre, pas de couleurs.... et surtout TabCount de 255 maximum !)

Chaque Tab est entèrement paramètrable (icone, gradients...), comme pour les Items de la vkListBox.

Que dois-je envisager comme autres innovations par rapport à un TabStrip normal ?
Moi je n'en sais rien vu que je n'utilise habituellement le TabStrip que de manière très basique ?

@+

signaler à un administrateur
Commentaire de PCPT le 02/07/2007 22:46:27 administrateur CS

salut,
tabstrip ou sstab?....

surtout les méthodes pour savoir sur quel onglet on se trouve, activer un onglet (simuler click), une icône, le choix individuel de la typo serait un +, autant de backpicture que de tab, un fond transparent? (tu vas galérer là ^^), et surtout qu'on puisse l'agencer en mode design => click sur 3° active le 3° et masque les contrôles posés sur le 1°

des idées en vrac ;)
bon courage ++

signaler à un administrateur
Commentaire de MadM@tt le 02/07/2007 23:05:53

Ah ouais "agencer en mode design" comme dit PCPT ça serait excellent ! m'enfin ça doit demander du boulot ça !
Mais c'est vrai qu'en l'état des choses c'est souvent pas pratique (le tabstrip de vb)

Félicitation (encore une fois ^^) pour l'avancement des controles sinon

signaler à un administrateur
Commentaire de niczob le 03/07/2007 11:01:16

Salut !
je voudrais pouvoir changer l'image d'un bouton dynamiquement, mais manifestement ça ne marche pas. Voilà comment je fais :

MyButton.Picture = LoadPicture(App.Path & "\Ressources\newImage.bmp")

De même en passant par les handle (.Picture.Handle = LoadPicture(...).Handle), ça fait une erreur.

Est-ce normal, ou je m'y prends mal ?

PS : pour des idées de nouveaux contrôles, perso j'aurais besoin de sliders au style XP ...

signaler à un administrateur
Commentaire de violent_ken le 03/07/2007 11:14:30

Yep, en fait je fait plutôt un SSTab ;)

Pour l'édition en mode design, c'est possible, mais seulement dans une certaine mesure (c'est à dire que contrairement au SSTab où il suffit de cliquer pour changer de Tab, moi il faudra faire Clic Droit -> Modifier -> Changer de Tab).
Et merci pour les idées !


niczob ==> Je vais corriger ce bug. Sinon pour le slider, çà doit pas être trop compliqué, je vais essayer de voir ce que je peux faire...

@+ et merci pour vos commentaires ^^

signaler à un administrateur
Commentaire de violent_ken le 03/07/2007 11:24:38

niczob ==> Actuellement, pour réaffecter un nouvelle picture à un de mes controles (vkFrame, vkCommand...), il faut mettre un 'Set' devant.

Exemple :

    Set vkCommand1.Picture = LoadPicture(App.Path & "\Ressources\close.ico")

Est-ce gênant et je dois essayer de changer ou c'est bon ?
@+

signaler à un administrateur
Commentaire de niczob le 03/07/2007 11:43:04

Je viens de m'en rendre compte pour le Set ... j'ai plus l'habitude de faire du VB6 ( .Net à fond ...)
Ce n'est pas gênant pour moi !

Merci :)

signaler à un administrateur
Commentaire de FMatrix07 le 04/07/2007 06:31:42

Hello VIOLENT_KEN

Le SET n'est pas gênant il suffit juste de le savoir

Bonne continuation
Epate nous encore avec ta souce elle nous ravi

@+

signaler à un administrateur
Commentaire de niczob le 05/07/2007 09:35:35

Salut Violent_Ken, une remarque sur tes contrôles : apparement les raccourcis claviers, bien que implémentés récemment, ne fonctionnent pas.
Sur une form avec le KeyPreview à True, j'ai placé 2 boutons avec des raccourcis claviers, un VB et un des VK, seul le VB marche.

signaler à un administrateur
Commentaire de violent_ken le 05/07/2007 09:43:39

Salut, je viens de faire la même manip (un bouton normal et un vk sur un form, avec ou sans KeyPreview), et çà marche bien.

Tu as bien la dernière version ?
@+

signaler à un administrateur
Commentaire de niczob le 05/07/2007 15:29:36

Avec la dernière version ça marche effectivement. J'avais la version du 30/06.

Cool :)

signaler à un administrateur
Commentaire de niczob le 11/07/2007 15:45:40

Salut Violent_Ken, j'ai des problèmes de rafraichissement de l'image sur un vkCommand.

Lorsque je clique sur mon vkCommand, l'image disparait sous le click, et ne réapparait qu'en fin de traitement du click, ou/et lorsque je retire la souris de dessus mon bouton ... Bref j'ai un souci de rafraichissement.

As-tu le même problème ?

signaler à un administrateur
Commentaire de violent_ken le 11/07/2007 17:52:03

Salut, j'avoue que non, je n'ai aucun problème.
Qu'y a t-il comme code dans le vkCommand_Click ?

@+

signaler à un administrateur
Commentaire de FMatrix07 le 11/07/2007 23:59:09

Pour ma part je n'ai aucun probleme
@+

signaler à un administrateur
Commentaire de niczob le 12/07/2007 13:47:52

Je viens de faire un nouveau projet avec juste un vkCommand, une image gif dans la propriété Picture, et pas de code dans le bouton.
Quand je clique sur le bouton, l'image disparait, et ne réapparait que si je sors la souris de la zone du bouton.
Je n'avais pas ça avec la précédente version...

signaler à un administrateur
Commentaire de niczob le 13/07/2007 10:31:14

Salut Violent_ken, j'ai toujours mon problème de refresh des images dans le vkCommand :/
je me pose une autre question sur ton contrôle UpDown : quand je change la Value du UpDown dans le code, je ne récupère pas cette valeur dans l'évènement 'Change(Value as Currency)'.

Exemple :

Private Sub IncrNbPhoto()
    intNbPhoto = intNbPhoto + 1
    'Met à jour le UpDown
    vkUpDownPhoto.Value = intNbPhoto
End Sub

Private Sub vkUpDownPhoto_Change(Value As Currency)
    intNbPhoto = Value
End Sub


la valeur de Value dans l'évènement correspondant à la valeur précédente, et non la valeur actuelle (celle que je viens de lui attribuer). Ce n'est pas le même comportement que la UpDown VB. Est-ce voulu ? (moi ça m'embête ...)

signaler à un administrateur
Commentaire de violent_ken le 13/07/2007 10:49:04

Pour le problème d'image lors du survol... ben en fait tu as raison ! Un problème apparait, mais uniquement en compilé (pour çà que je ne l'avais pas vu le premier coup). Je vais essayer de corriger le bug.

Pour le UpDown, j'ai en effet iversé deux lignes de code (le RaiseEvent était avant le changement de Value), je corrige çà.

Merci, @+

signaler à un administrateur
Commentaire de JoJo797 le 10/08/2007 17:00:10

Sorry but I'm Italan e I don't speak french. Very nice controls! It's possible to add the "Top Allignment" and "Bottom Allignemet" (insted of the X and Y offset) to the Button Control?

signaler à un administrateur
Commentaire de violent_ken le 10/08/2007 17:53:15

Hi !
Yes you're right, I've forgot the vertical alignment property.
I'll add it in the next update. But as I can't work on it in august, I'll upload the new version in a month.
I'll fix some other bugs I've found recently, and I'll include Renfield's class to do subclassing.

Thx, see ya

signaler à un administrateur
Commentaire de Exploreur le 24/09/2007 12:02:59

Salut Violent_Ken,

Un petit "truc bizarre", dans le contrôle TextBox, on ne peut pas donner une autre couleur à la propriété : foreColor que le noir...
Ou alors je ne sais pas me servir de ce contrôle ???

A+
Exploreur

signaler à un administrateur
Commentaire de loloof64 le 24/09/2007 13:35:24

Au grand regret que ta source ne sorte pas en .net, plateforme qui elle, est librement utilisable ...

A bientôt, salut .

Loloof64

signaler à un administrateur
Commentaire de pablito222 le 05/10/2007 15:00:53

bonjour à tous.

Je suis un Espagnol qui visite cette page trés souvent, et je voudrais savoir si l'auteur va la mettre à jour ??

signaler à un administrateur
Commentaire de violent_ken le 05/10/2007 15:46:10

Bonjour,

Cà fait longtemps que je n'ai pas fait de mise à jour (à cause de quelques problèmes diverses + peu de temps avec les études) mais je n'ai pas abandonné cette source pour autant.

Je possède actuellement une version plus évoluée que celle-ci, mais je préfère attendre encore quelque temps avant de mettre à jour (pour la prise en compte des demandes de chacun, la correction des derniers bugs rencontrés et le passage au subclassing de Renfield).

J'aurais dû uploader cette version il y a quelques temps déjà (1 mois), mais je n'ai pas pu le faire.
Donc oui, je mettrai à jour, c'est certain, mais je ne peux pas dire quand exactement... Je vous tiendrai au courant ;)

Merci, @+

signaler à un administrateur
Commentaire de niczob le 23/10/2007 11:33:44

Salut Violent_ken,
j'ai une question à propos de la gestion de l'unicode : à fonte identique, je n'ai pas la même écriture avec de l'arabe quand je confronte un controle optionButton (par exemple) et un Label de MS Forms 2.0 (FM20.dll) (fonte : Tahoma 10 script arabe).
C'est assez embêtant pour mon boulot :(

signaler à un administrateur
Commentaire de violent_ken le 23/10/2007 23:15:52

Salut,
En fait, la gestion de l'unicode est gérée par les dll Windows : j'utilise des fonctions de l'API (en particulier DrawTextW). Du coup, je ne maitrise pas dans mon code l'affichage résultant (il est géré directement par Windows).

Donc je vois pas trop où pourrait se situer le bug... ?

Pourrais-je voir une image montrant la différence entre Forms 2.0 et mes controles ?
Quel lignes de code as tu mises pour afficher l'Unicode (ChrW ?) ?
@+

signaler à un administrateur
Commentaire de niczob le 25/10/2007 18:05:08

Salut vk,
voici ce que je voudrais afficher (par exemple, avec une fonte Tahoma) :

ChrW(1577) & ChrW(1610) & ChrW(1606) & ChrW(1583) & ChrW(1605) & ChrW(1604) & ChrW(1575) & ChrW(32) & ChrW(1577) & ChrW(1604) & ChrW(1575) & ChrW(1581) & ChrW(1604) & ChrW(1575)

Regarde ce que donne cette chaine dans un contrôle MS Forms 2.0 TextBox, et une vkTextBox configurée en useUnicode True, font : Tahoma, script : arabe.

Rassure-toi il n'y a pas de bug dans la gestion de l'unicode dans ton contrôle (d'ailleurs je ne parle pas de "bug").

Effectivement, ton contrôle se contente de faire appel à l'API windows, mais c'est manifestement beaucoup plus compliqué que ça d'afficher une langue telle que l'arabe (jette un coup d'oeil ici si ça t'intéresse : http://www.unicodeactivex.com/UnicodeTutorialVb.htm).

Le truc compliqué c'est de rendre l'écriture "cursive", tout attachée quoi. Il est évident que c'est beaucoup trop de boulot que d'implémenter de tels algos dans tes contrôles ... en ce qui me concerne je vais donc m'en passer et remplacer tous les vkLabel par des MS Forms 2.0 Label (j'ai pas le choix :/).

à+ ! :)

signaler à un administrateur
Commentaire de titi2b le 14/11/2007 14:23:50

Bonjours a tous juste un petit commentaire.
Trés beau controles, mais comment peut ont changer ou ajouter mouse pointer sur vkcommand ?
Sinon il est vrai qu'il manque pour finaliser tous ces controles un sstab.

a bientôt

signaler à un administrateur
Commentaire de Philippe222 le 10/01/2008 17:35:27

Bonjour,

Si on fait un large emploi de l'Unicode, il y a toujours un problème quelque part. Mais ici on a presque tout. Toutefois, comment faudrait-il faire pour passer les menus en Unicode et en chinois ?

Merci d'avance

signaler à un administrateur
Commentaire de Polack77 le 15/04/2008 17:28:22

Bonjour,

Merci pour ces contrôles
Non seulement ils gère l'unicode (ce qui étais un problème pour moi) mais en plus ils sont beau. Ravie 10/10

signaler à un administrateur
Commentaire de tharkhun le 07/05/2008 13:50:51

Salut a tous,
Je suis débutant (ben oui, faut bien un jour !) et j'ai un petit probleme lors de l'utilisation de ces controles. Il est dit qu'il faut compiler le fichier "vkUserControlsXP.vbp" pour obtenir l'ocx. Seul probleme lorsque je lance la comilation ie s'ouvre et le script est bloqué. j'ai essayé de mettre toutes les sécurités au minimum mais rien n'y fait ! Est-ce que quelqu'un peut m'envoyer l'ocx ou y a t il une solution plus simple ?

Merci

Tharkhun
tombuv@yahoo.fr

signaler à un administrateur
Commentaire de PCPT le 07/05/2008 14:00:40 administrateur CS

tharkhun -> tu confonds compilation et execution.
un projet ActiveX ne peut pas être lancé seul.
pour compiler, pas "run / F5", juste Fichier > créer vkUserControlsXP.ocx

signaler à un administrateur
Commentaire de andalo le 13/06/2008 11:36:49 10/10

ben bravo, maintenant je refais la déco de mon appli, comme si j'etais pas assez à la bourre comme ça!!
Pour certain c'est inutile pour moi c'est un bonheur, d'une part pour le style (mes chefs vont adorer), d'autre part pour la gestion des évenement et la possiblité d'ajouter les evenements souris a n'impeote quel controle (ca c'est trop fort), ca m'a ouvert des possibilité que je ne n'arrivais pas à gérer avant, merci.
Si ya une SSTab dans les tuyau je suis preneur, par contre je n'ai pas trouvé de combobox, j'aurai pourtant pensé que c'etait un controle de premiere necessité!

signaler à un administrateur
Commentaire de andalo le 13/06/2008 16:56:11

Apres quelques test simple sur le VkListBox, je n'arrive pas à appliquer un changement de police à un seul item (bold, underline, size...), tous les autres suivent le changement.
Par contre coloriser un item de façon différente (forecolor ou backcolor) fonctionne bien.

signaler à un administrateur
Commentaire de violent_ken le 13/06/2008 23:49:09

Salut !

Alors déjà désolé si je ne réponds pas à tous les messages (j'ai de moins en moins de temps -___-), mais là il s'agit d'une erreur assez importante et donc voilà la solution : dans vkListBox.ctl, dans la méthode AddItem, il faut remplacer le début du code par çà :


Dim tIt As vkListItem
Dim bOk As Boolean
Dim tF As StdFont
    
    lListCount = lListCount + 1
        
    'redimensionne les tableaux avec le nombre d'items de la liste
    ReDim Preserve bChecked(lListCount - 1)
    ReDim Preserve bSelected(lListCount - 1)
    'ReDim Preserve lHeight(lListCount - 1)
    
    If Item Is Nothing Then
        'alors on créé un nouvel Item dont on définit les prop par défaut
        Set tIt = New vkListItem
        Set tF = New StdFont
        tF = UserControl.Font
        With tIt
            .BackColor = lBackColor
            .Checked = False
            .Font = tF




De plus, pour bénéficier de la possibilité de changer de fonte PAR item dans la form de test (dans le cas des 100 items avec icone), il faut créer une instance de fonte par Item.
Donc changer dans vkCommand9_Click :

.Font = Me.Font

par

Dim f As StdFont
Set f = New StdFont
f = Me.Font
.Font = f



Et voilà ! Et bien sur s'inspirer des exemples de la form de test pour utiliser mes contrôles.
Sinon, il est maintenant simple de passer un item particulier en gras :
List.Item(1).Font.Bold = True

Merci pour avoir repéré ce bug ^^


Sinon, j'ai modifié pas mal de problèmes entre ma dernière version et celle présente sur vbfrance. Je n'ai pas mis à jour sur vbfrance car c'est assez long de créer un fichier *.zip clean, mais la toute dernière version est disponible sur Sourceforge.net, via SVN (ou en download, mais le package n'est pas à jour non plus ^_^).
http://sourceforge.net/projects/vkusercontrols/ (URL du projet)
URL SVN : https://vkusercontrols.svn.sourceforge.net/svnroot/vkusercontrols

Sinon, j'ai un début de SSTab mais c'est pas terminé (je ne sais pas quand ce sera prêt, faudra probablement être patient ^^).
Pour la combobox, effectivement je ne l'ai pas codée (et ce serait utile), mais il est toujours possible d'en bricoler une en attendant ^^ (vkCommand + vkTextBox + vkListBox visible ou non).

@+

signaler à un administrateur
Commentaire de andalo le 18/06/2008 00:01:14

Si toi tu t'excuses moi je fais quoi! je rampe sous tes pompes!!!
Merci pour l'astuce du "pseudo" combobox(et bien sur pour la correction du listbox), j'imagine qu'il faux accoler aussi au vktextbox un vkcommandbutton avec un image de flêche vers le bas pour que la vkillusion soit complete!!
Ca peut être rigolo à faire mais j'acceuillerai quand meme l'arrivée du vkcombobox avec joie (des fois que tu t'ennuie et que tu ne saches pas quoi develloper...).
Sinon quite à passer pour un profiteur, une idée de develloepment pour le SStab me viens :
Ce serai un vkSStab qui gère lui meme les redimenssionnement et repositionnement des controles qu'il contient sur un évenement "resize".ou qui gererai lui même l'apparition d'ascensceur.
J'ai comme un doute pour cette derniere proposition, rassurez moi ca n'existe pas deja???

signaler à un administrateur
Commentaire de andalo le 23/06/2008 12:10:12

bonjour, juste un petit bug à signaler sur le VkListBox.
Lorsqu'on le redimensionne dynamiquement (je fais varier la taille des controles sur l'évenement resize de la form)l'ascenceur ne suit pas, il garde sa taille initiale. Par contre il se reajuste quand on passe la souris dessus.

signaler à un administrateur
Commentaire de JLN le 25/06/2008 16:10:27

Bonjour VK (et les autres),
Tout d'abord chapeau bas, pour ces controles, même si l'ère est maintenant celle de vista, le look xp a toujours son charme... A quand le SSTab tant attendu ? Je colorise les miens par un hock mais pas terrible en matière de paramétrage...
Merci beaucoup pour ton partage...
Bonne prog à tous.

signaler à un administrateur
Commentaire de JLN le 25/06/2008 16:12:51

Ha! j'oubliais, un petit bug : dans la demo en cliquant sur la vkListBox "List" on obtient une erreur qui plante tout.

signaler à un administrateur
Commentaire de JLN le 25/06/2008 16:49:49

C'est encore moi, rien de grave en definitif sur List avec le bouton droit quand la liste est vide, il n'y avait pas de vérification pour savoir si cette liste était vide, en ajoutant dans le if "and List.ListCount > 0" ca devrait corriger (pas essayé, mais confiant)
@+ JLN

signaler à un administrateur
Commentaire de andalo le 26/06/2008 12:32:54

re petit bug à signaler, j'ai un souci avec le VKTextBox. l'ascencer horizontal ne veux pas dérouler le texte vers le bas, j'y arrive en cliquant dans la zone de texte et avec la fleche clavier, a ce moment l'ascenceur fonctionne pour faire dérouler le texte vers le haut, mais ne fonctionne toujours pas vers le bas
voila, bonne continuation...

signaler à un administrateur
Commentaire de violent_ken le 26/06/2008 19:26:25

Bonjour tout le monde,
alors je prend note, je corrigerai les bugs la semaine prochaine. Pour la scrollbar de la textbox, je connais le problème (cf description), c'est pas sur que j'arrive à régler tout de suite (bug pas évident).
Pour le SSTab, va falloir que je trouve le temps ^^


Héhé, pour l'ère Vista, je prend également note :-)
@+

signaler à un administrateur
Commentaire de andalo le 27/06/2008 00:08:47

ouais desolé si je repete des trucs dis plus haut mais je me souviens avoir lu le descriptif et les commentaires d'affilé un jour et à la fin je ne me souvenais plus de ce qui se disait au debut!
A se demander comment j'arrive a programmer avec une memoire de poisson rouge.
En tout cas, j'ai testé les rectificatif pour appliquer les fonts differentes par item, et grand merci, ca me retire une fiere chandelle du pied!
Je me demandais comment faire pour presenter des choix multiples hierarchisé et du coup je peux présenter les données principales en gras et souligné, les secondaires seulement en gras etc....
Apres avoir changé la fonte d'un des items faut quand même penser à faire un vklistbox.refresh sinon ca ne se fait pas automatiquement.
Bon courage

signaler à un administrateur
Commentaire de andalo le 27/06/2008 00:54:34

oh quel dommage, je viens de me rendre compte que le vklistbox ne gère pas le itemdata, je trouvais ça très pratique pour y stocker les identifiants de mes libellé. Je vais pouvoir le débrouiller autrement ceci dis, mais snif!

signaler à un administrateur
Commentaire de violent_ken le 27/06/2008 08:18:29

Mais qu'est ce que c'est que le 'ItemData' ??

Si c'est une zone mémoire allouée à chaque Item pour y stocker des données, il y a les attributs tagString1, tagString2 et tagLong pour stocker 2 strings et un long par Item dans mes controles.
Sachant que dans le long (voire les strings), on peut stocker un pointeur vers n'importe quoi (cf strptr, objptr...etc), je pense que çà devrait aller pour stocker "les identifiants de tes libellés".

Si c'est autre chose (?), je regarderai ce que c'est :-)
@+

signaler à un administrateur
Commentaire de andalo le 27/06/2008 09:18:59

oops, j'avais pas vu, l'itemdata du combobox classique de vb6 sert effectivement à ca. J'ai le choix entre trois maintenant!
Je n'ai plus qu'a aller voir ce qu'est un pointeur (ca fais même pas un an et demi que je programme)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Bouton style XP [ par IG88 ] J'ai VB6 sous win XP et lors que j'utilise des controles, ils n'ont pas le style windows XP et je voudrais savoir quelle manip il faut faire pour avoi Controles avec le style XP ? [ par Mew27 ] J'ai cru remarquer que pour que notre application ait le look xp, l'usager doit avoir le theme windows xp, je me demandais si il existait des controle Problème avec le style Xp (Manifest) [ par oli91191 ] Bonjour, je suis d&#233;butant et j'utilise dans mon prog un graphique (AxMSChart20Lib) et&nbsp; je le compile avec le manifest. Quand j'ouvre le fich Style XP [ par jesse12 ] J'ai r&#233;install&#233; mon Style XP que je n'avais pas utiliser depuis un bail, mais le hic , c'est que maintenant on me demande une mises&nbsp;&#2 Style XP sous VB 2000 [ par Devil32 ] Salut la compagnie... Voilà g un petit probleme qui je pense va etre vite résolu car je me doute que la réponse risque d'etre négative mais bon je sou Récupérer le style de Windows XP [ par baglinb23 ] BonjourSous XP, on peut choisir l'apparence de l'affichage, le style de windows (Propriété de l'affichage, Apparence, Fenêtre et boutons) :Windows Cla VB.UserControl [ par babchrist ] Bonjour je développe sous Windows 2000, Visual Basic 6.Depuis une semaine j'ai un problème très sérieux.Mon programme dévelppé sous Windows 2000, Visu Style XP sur mscomctl.ocx [ par violent_ken ] Violent Ken Bonjour à tous. J'aimerais appliquer le style visuel XP à mon application par le biais d'un fichier *.manifest. Oui mais voilà, Style XP [ par Guy_roland ] Bonjour lesgars j'ai vu sur le site un code concernant le style Xp pour les applications developper sous Vb6. Mais quand j'ai écris le code et enregis Changer le visual style de xp [ par veler ] Bonjours, j'aimerais savoir comment on fait pour changer le skin de xp en vb.netvous savez?ebaudoux@club.frhttp://www.velersoftware.2007.fr<a title="h


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.