Icones dans ListView mais ...

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 14 août 2004 à 00:43
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 15 août 2004 à 14:46
Ca fait plusieurs jours que je cherche et même sur le chat personne ne sait.

Je cherche un code qui permmtte d'ajouter les icones associé au fichier present dans la listview

Des réponses ont deja été donné mais jamais ave le code de remplissage de l'imagelist. Si je le demande c'est que chez moi je recoit l'erreur d'execution "Invalid Object" et il me manque ces renseignements dans MSDN.

Donc ce que je cherche c'est :

Un code me permttant de remplit mes imageslist (indispensable pour toutes vues)

Appliquer ses icones pendant l'ajouts des dis fichier dans la listview et ce pour toutes les vues

Merci de me repondre, c'est assez urgent

[PaTaTe]

8 réponses

cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
14 août 2004 à 14:15
Moi j'utilise une fonction que j'ai faite moi meme:

Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type

Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

Public Declare Function ImageList_GetIcon Lib "comctl32.dll" (ByVal himl&, ByVal i&, ByVal flags&) As Long

Public Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal hIcon As Long) As Long

Private Function PrintIco(StartImage As PictureBox, LstImage As ImageList, Filename As String) As Long 'Ajoute l'icône 16*16 d'un fichier à un contrôle ImageList en gérant la transparence...
Dim hIcon As Long, hBitmap As Long
Dim hIco As Long, Nicon As Long, FileLib As Long, SHFinfo As SHFILEINFO
hIco = SHGetFileInfo(Filename, 0&, SHFinfo, Len(SHFinfo), DJM_SMALLICON)
hIcon = ImageList_GetIcon(hIco, SHFinfo.iIcon, 0)
LstImage.MaskColor = StartImage.BackColor
StartImage.Cls
DrawIcon StartImage.hdc, 0, 0, hIcon
StartImage.Refresh
Call LstImage.ListImages.Add(LstImage.ListImages.Count + 1, , StartImage.Image)
End Function

puis:

Call PrintIco(imgIco, IconList, filename)
listview1.ListItems.Add , , filename, IconList.ListImages.Count, IconList.ListImages.Count

Voila
++ Warning
Auteur de VBReFormer (http://www.decompiler-vb.tk/)

Mail:ASC.Warning@caramail.com
Website: http://www.decompiler-vb.tk/

Warning
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2004 à 01:49
Merci beaucoup ce code m'a bien aidé mais tu dis qu'il "capture l'icone en 16x16 ... est ce possible de la capturer en 32x32 voire davantage si la taille est dispo (genre 48x48) ? Car en 16x16 la qualité est pas top sur certaines icones ...

[PaTaTe]
0
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
15 août 2004 à 11:36
Il suffit d'utiliser l'une de ces constantes:

Public Const DJM_SMALLICON = &H6605
Public Const DJM_LARGEICON = &H6604

suivant ta necessité... Pour 48*48 ou 72*72 je sais pas désolé.

Mail:ASC.Warning@caramail.com
Website: http://www.hexorciser.fr.st/

Warning
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2004 à 14:28
Merci encore une fois !

Mais tu va peut etre me me trouver là mais quand j'utilise ton code dans mon programme (la premiere fois je l'avais utilisé dans un projet vierge) les icones apparaissent pas comme si il ne capturait que la transparence en fait ... d'ou cela peut t il provenir ?

PS tout code d'extraction (code declaration const etc ont été retiré avant de mettre le tien) donc c assez bizarre :|

[PaTaTe]
0

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

Posez votre question
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
15 août 2004 à 14:35
pitetre parce ke j'ai oublié de t'envoyer les constantes o depart:

Public Const MAX_PATH = 260
Public Const DJM_SMALLICON = &H6605

sinon il faut que ta pictureBox soit en autoredraw = true ....

Mail:ASC.Warning@caramail.com
Website: http://www.hexorciser.fr.st/

Warning
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2004 à 14:39
elle est en autoredraw=true donc je comprend pas

[PaTaTe]
0
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
15 août 2004 à 14:42
erf je sais pas alors ... c'est peut etre du au system d'exploitation ?
Mail:ASC.Warning@caramail.com
Website: http://www.hexorciser.fr.st/

Warning
0
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
15 août 2004 à 14:46
depuis ke j'ai ajouter les 2 constance j'ai cette erreur :

Erreur de compilation:

Un module n'est pas un type valide

Cette erreur se produit sur :

Private Function PrintIco(StartImage As PictureBox, LstImage As ImageList, FileName As String) As Long

Pour info, le code etait dans un modulle et je l'ai deplacé sur la form ki l'utilise et même erreur

j'y comprends rien là lol
[PaTaTe]
0
Rejoignez-nous