Je cherches un activex scrollbar

Mew27 Messages postés 44 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 23 février 2008 - 11 mai 2007 à 17:51
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 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 ?

9 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
11 mai 2007 à 18:02
Salut,

Regarde ce tuto, si cela peut t'aidé

A+
Exploreur

 
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
11 mai 2007 à 18:12
Violent Ken
Salut, si tu veux un UserControl dérivé d'une ScrollBar avec du Subclassing dedans, tu peux regarder ma récente source :  http://www.vbfrance.com/codes/SCROLLBARS-AMELIOREES-MOUSE_LEAVE-DBL_CLICK-ETC-SURTOUT-PLAGE-10_42576.aspx çà te donneras des idées ^^

Malheureusement tu ne pourras apparement pas changer la couleur du scrollbar, même avec le message WM_CTLCOLORSCROLLBAR (http://www.xtremevbtalk.com/showthread.php?t=227908)

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 (!)

@+

Hex Editor VB
0
Mew27 Messages postés 44 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 23 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. :)
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
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...

Par contre, je peux te conseiller un EXCELLENT site qui traite (entre autres) de problèmes avancés sur les interfaces/controles/subclassing (très bons exemples et très bon niveau) : http://www.xtremevbtalk.com/
Et avec google your friend : =en&safe=off&client=opera&rls=fr&hs=VhE&q=site%3Ahttp%3A%2F%2Fwww.xtremevbtalk.com%2F+subclassing+listbox+scrollbar&btnG=Search http://www.google.com/search?hl=en&safe=off&client=opera&rls=fr&hs=VhE&q=site%3Ahttp%3A%2F%2Fwww.xtremevbtalk.com%2F+subclassing+listbox+scrollbar&btnG=SearchPar contre faudra t'inscrire sur le site pour télécharger des zip, mais çà vaut le coup.
(exemples avancés de subclassing : http://www.xtremevbtalk.com/showthread.php?t=228243)

Bon courage ^^
@+

Hex Editor VB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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.
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
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.
@+

Hex Editor VB
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 mai 2007 à 23:20
Salut Violent,

Sauf à mettre la listbox dans un container qui cache sa scrrollbar "intégrée" et à jouer, à l'aide de sa scrollbar "perso", avec la propriété TopIndex
0
Mew27 Messages postés 44 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 23 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 ? :)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 !!!
0
Rejoignez-nous