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 !

ASTUCE IMAGELIST COMCTL32.OCX


Information sur la source

Catégorie :Control Classé sous : imagelist, comctl32, stylexp, control Niveau : Débutant Date de création : 13/11/2005 Date de mise à jour : 13/11/2005 15:23:02 Vu / téléchargé: 11 633 / 1 333

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cliquez pour voir la capture en taille normale
J'utilise dans certains de mes programmes le composant COMCTL32.OCX ( Microsoft Windows Common Controls 5.0 (SP2) ), car les controles fournis avec adoptent les style XP (si l'appli tourne avec un fichier manifest, etc...). Cepandant il y a un problème avec le controle ImageList fournit dans ce composant, en stockant des icones dedans, les icones sont " corrompues " (voir capture) dés la 2ème execution...
La seule solution etait de vider l'ImageList et de recharger les icones avant chaque nouvelle compilation >> super chiant !!
le probleme n'existe pas avec le control ImageList du composant MSCOMCTL.OCX ( Microsoft Windows Common Controls 6.0 (SP6) ) , mais les controles de COMCTL32.OCX ne peuvent pas etre associés avec le controle ImageList de MSCOMCTL.OCX (Sinon c'est pas drole :P)
En fait la solution est de mettre ses icones dans un controle ImageList de MSCOMCTL.OCX et de charger les icones dans le controle ImageList de COMCTL32.OCX depuis le code dans l'evenement load de la feuille ;)

C'est pas trés clair mais je sais pas comment expliqué ca... La capture vous aiderat à comprendre...

J'ai cherché longtemps à résoudre ce probleme en vain et je n'ai rien trouvé sur forum ou dans les sources... Si une source similaire a deja été déposé ici , désolé !!
 

Source

  • Dim i As Integer
  • ' On remplit le controle ImageList de COMCTL32.OCX
  • ' avec le controle ImagList de MSCOMCTL.OCX
  • For i = 1 To ImageListMSCOMCTL.ListImages.Count
  • ImageListCOMCTL32(1).ListImages.Add , , ImageListMSCOMCTL.ListImages(i).Picture
  • Next
  • For i = 0 To 1 ' Boucle pour ajouter les boutons dans les 2 toolbars
  • ToolbarCOMCTL32(i).ImageList = ImageListCOMCTL32(i) ' Initialisations de la toolbar avec le control ImageList correspondant
  • With ToolbarCOMCTL32(i).Buttons
  • .Add , , "Rafraichir", , 1 ' Ajout des bouttons
  • .Add , , "Ajouter", , 2
  • .Add , , "Editer", , 3
  • .Add , , "Supprimer", , 4
  • .Add , , "Imprimer", , 5
  • .Add , , "Quitter", , 6
  • End With
  • Next
Dim i As Integer

' On remplit le controle ImageList de COMCTL32.OCX
' avec le controle ImagList de MSCOMCTL.OCX
For i = 1 To ImageListMSCOMCTL.ListImages.Count
   ImageListCOMCTL32(1).ListImages.Add , , ImageListMSCOMCTL.ListImages(i).Picture
Next

For i = 0 To 1 ' Boucle pour ajouter les boutons dans les 2 toolbars
   ToolbarCOMCTL32(i).ImageList = ImageListCOMCTL32(i) ' Initialisations de la toolbar avec le control ImageList correspondant
   With ToolbarCOMCTL32(i).Buttons
      .Add , , "Rafraichir", , 1 ' Ajout des bouttons
      .Add , , "Ajouter", , 2
      .Add , , "Editer", , 3
      .Add , , "Supprimer", , 4
      .Add , , "Imprimer", , 5
      .Add , , "Quitter", , 6
   End With
Next

Conclusion

Voila, de cette manière il n'est plus necessaire de recharger les icones avant chaque compilation du programme.
A noter aussi que les icones XP (32 bits RGB/A) ne sont pas compatibles avec VB , mais il y a une alternative aux icones 256 couleurs : Les icones "True Colors" (RGB - 24 bits - 16,8 M de couleurs) sont elles compatibles !! Perso je les créé avec axialis iconworkshop 6 ;)
(Je joint les icones pour exemple)
 

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

13 novembre 2005 15:18:50 :
J'm'etais trompé dans l'ajout de la source :P
13 novembre 2005 15:23:02 :
J'ai tout de meme joint l'exe (rebonommer de ".exe-" en ".exe")

Commentaires et avis

signaler à un administrateur
Commentaire de NoFutur le 14/11/2005 11:49:58

Salut,

Il y a dix fois plus simple pour règler ce problème à la noix mais ça demande un petit travail en amont.

Prend le temps de convertir tes icônes en BMP en leur donnant une couleur de fond unie (le mauve par exemple). Ensuite tu associe les BMP au composant comctl32.ocx en n'oubliant pas de définir aussi la propriété MaskColor de la même couleur de fond dans le composant ImageList.

Ensuite tu associe Imagelist avec la barre d'outils du même composant et tu défini ensuite normalement les icônes pour tes boutons.

Avantage: les couleurs sont respectées il n'y a plus de bug de destruction des couleurs et tu économise un composant supplémentaire dans ton projet ici en l'occurence mscomctl.ocx

Nota: Tu dois procéder de la même manière pour le TreeView et le ListView du composant comctl32.ocx

PS: tu trouveras ici une source qui te permettra de convertir les icones en BMP avec la couleur de fond :
http://www.vbfrance.com/code.aspx?ID=20137

Bonne prog ^_^
@plus

signaler à un administrateur
Commentaire de Danyz le 14/11/2005 11:52:10

Je savais pas :P
Merci !

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

listview [ par steph44 ] Je développe un nouveau programme dans lequel souhaite mettre dans images dans une listview sous forme report en utilisant le control "imagelist". J'a Ajout d'un user control dans une boite à outils [ par youma85 ] bonjour,mon problème est comment avoir un user control dans la toolbox: j'ai crée un projet puis j'ai ajouter un nouveau projet qui va contenir mon co Calendar : le cacher lorsqu'un autre control est selectionne [ par jeromedu01 ] Bonjour a tous.Je pense que cette question sera elementaire pour bien d'entres vous mais moi je bloque.Dans un formulaire windows je clique sur un bou theme d'une application [ par charrynsasi ] bonjoursje voulais telecharger un control vb.net qui a la possibilite de rendre mon interface plus attrayantun control de style visuel ou un themej'ai Où trouver l'outil winsock_control.winsock [ par lagarce ] Rebonjour à tout le monde,Voilà je cherche l'outil winsock_control.winsock afin de créer une appli serveur/clientJ'ai essayer le clic droit dans la bo Control chiffre [ par marty14 ] Bonjour, j'aimerais faire un truc comme ceci mais apparament mon code n'est pas bon ! : If BufferIn(3) = "166" Or "167" Or "168" Or "169" Or "207" A votre AVIS - control [ par marty14 ] Bonjour,J'aimerais avoir votre avis sur le fait d'empecher cetaines actions d'un programme.J'ai un programme qui s'execute automatiquement au demarage ToolTipText dans un UserControl (VB6) [ par Polack77 ] Bonjour ,J'ai une question con (si si elle l'est ^^)J'ai fait un UserControl contenant des shapes ou Frame sur tout le font du control. Je veut néanmo Forms, User Control ou WPF [ par Steph1258 ] Bonjour à tous,Je vais créer une nouvelle application en vb.net (2008), et je ne sais pas quoi choisir pour la création de mes formulaires.Prendre des évenement relatif au combobox [ par beet2che ] Bonjourj'ai ajouté un combobox par code à ma form.je voulais savoir comment je peux gérer les évenements relatif à cet control par d'habitude je sélec


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,530 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é.