Mew27
Messages postés44Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention23 février 2008
-
11 mai 2007 à 17:51
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 2014
-
12 mai 2007 à 08:09
Bonjour, pour mon application, j'aurais besoin de changer les couleurs de toutes les scrollbars, combobox, listbox, textbox, etc. En cherchant sur google j'ai pu constater que seul la couleur de fond est modifiable. Donc j'ai décidé de créer ma propre scrollbar, mais je ne sais pas comment remplacer par subclassing les anciennes scrollbars par ma nouvelle scrollbar ?
Par contre tu trouveras des scrollbars avec la property BackColor dans l'activeX Microsoft Forms 2.0 (livré avec Office apparement). Par contre cette dll activeX n'est pas redistribuable (!)
Mew27
Messages postés44Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention23 février 2008 11 mai 2007 à 20:03
Ok :)
Mais ce que je me demandais justement c'est comment remplacer la scrollbar par défaut d'une listbox admettons par la nôtre ?
Je connais un peu le subclassing pour avoir fait un label qui supporte le mouseout mousehover, mais je ne vois pas trop quels messages intercepter de la listbox pour y mettre ma scrollbar à la place de l'ancienne. :)
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 11 mai 2007 à 20:14
Violent Ken
" j'aurais besoin de changer les couleurs de toutes les scrollbars[de mes] combobox, listbox, textbox" = => j'avais pas compris la question, désolé ;)
Malheureusement je ne suis pas un expert du subclassing, donc je ne sais pas comment remplacer une scrollbar d'un combobox par une scrollbar perso. C'est possible, c'est certain, mais je ne sais pas trop comment...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 mai 2007 à 23:00
Bonsoir,
Les exemples de sous-classement que l'on trouve ici et là (et plus particulièrement sur xtremvbtalk) ne sont là que pour montrer comment fonctionne le sous-classement et permettre une certaine familiarisation à un procédé de l'espèce... pas pour d'autres raisons...
Il n'est pas nécessaire de passer par une telle acrobatie pour fabriquer une scrollbar personnalisée. Il suffit pour celà d'une picturebox dans laquelle on déplace une image en drag and drop tout en "remettant sans cesse l'image sur ses rails en cas de débordement" et de faire un tout( petit calcul de pourcentage par rapport au positionnement de cette image/curseur dans la picturebox.
Pardonnez mon "impudence", mais il m'est apparu utile d'apporter ici ce témoignage de ce que sont certains exemples montrés "ailleurs" à des fins uniquement didactiques.
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 11 mai 2007 à 23:14
Violent Ken
Certes, mais dans ce que j'ai compris de la question, le but était de remplacer la scrollbar d'une listbox, d'une combobox, listview....etc par une scrollbar perso. Donc on doit passer par le subclassing pour y arriver.
Pour faire une simple Scrollbar, aucun composant nisubclassing n'est nécessaire en effet. Mais pour substituer à la scrollbar intégrée dans une listbox sa propre scrollbar, je ne vois que cette méthode.
@+
Mew27
Messages postés44Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention23 février 2008 12 mai 2007 à 00:38
En fait, j'utilise ma propre listbox donc je pourrais mettre ma scrollbar au lieu de celle de windows, mais pour mon contrôle textbox, j'utilise une textbox de base de windows, idéalement pour y mettre ma scrollbar il faudrait que je créé une textbox de toute pièce, soit faire en sorte de mettre un curseur clignotant et laisser l'usager entrer du texte et change de ligne automatiquement, quelqu'un aurait-il une idée comment faire ça ? :)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 12 mai 2007 à 08:09
Bonjour,
Ta propre textbox ?
Là oui, alors, tu vas te heurter à de réelles difficultés...
Pourquoi ? tout simplement parce que l'affichage dans une textbox inclut de "faux" retours à la ligne en fonction de la largeur de l'affichage et des propriétés de la police de caractères utilisée. Avec une véritable Textbox de VB, déjà, l'emploi de la méthode TextHeight pour déterminer la hauteur d'un texte ne prend pas en considération de tels "faux" retours à la ligne et il faut utiliser une fonction de l'API de windows pour faire de tels calculs.
Or, nous dis-tu,, on aurait là affaire à une textbox de ta fabrication, textbox dont on ne connait donc pas les mécanismes d'affichage .... et il est alors tout-à-fait impossible de déterminer comment calculer (par TextHeight et en fonction de sa largeur et des propriétés de loa plice de caractères) l'occupation en hauteur "à l'affichage" ou la position "affichée" d'une ligne ... Tu es bien le seul à savoir commrnt tu as géré ces fameux "faux" retours à la ligne de ta textbox !!!