Salut,
Voici un bout de code que j'ai fait il n'y a pas longtemps :
Tu mets deux ImageList que tu nomes SmallImageList et LargeImageList et tu leurs affectes respectivement
Width := 16; High := 16; et Width := 32; High := 32; le tout par l'inspecteur d'objets
un ListView ListView1 et toujours par l'inspecteur d'objets tu affectes les propiétées :
SmallIcon := SmallImageList
LargeIcon := LargeImageList
tu mets trois colones une Nom une Type et une Chemin
et un Button Button1
et il te faut aussi ajouter dans la clause Uses de ta Form l'unité shellapi
et dans la procédure OnClick du Bouton tu écris ceci :
procedure TForm1.Button1Click(Sender: TObject);
Var
Icon : TIcon;
sr : TSearchRec;
Location : String;
Buffer : array[0..512] of Char;
ListItem : TListItem;
FileInfo : SHFILEINFO;
oldCursor : TCursor;
Begin
ListView1.Items.Clear; //efface les listes
LargeImageList.Clear;
SmallImageList.Clear;
OldCursor := Screen.Cursor; // mémorise le curseur
Screen.CurSor := crHourGlass; // affiche le sablier
Icon := TIcon.Create; // création d'une Icône
SetString(Location, Buffer, GetSystemDirectory(Buffer, SizeOf(Buffer))); // récupère le nom du répertoire système
Location := IncludeTrailingPathDelimiter(Location); // on lui ajoute un BackSlash " \ "
Try
ListView1.Items.BeginUpdate; // début de mise à jour
If FindFirst(Location + '*.scr', faAnyFile, sr) = 0 Then // trouve le premier fichier
Repeat
ListItem := ListView1.items.add; // prépare l'ajout
SHGetFileInfo(PChar(Location + SR.Name), 0, FileInfo,
SizeOf(FileInfo), SHGFI_TYPENAME Or
SHGFI_ICON); // recherche d'infos supplémentaires sur le fichier
Listitem.Caption := SR.Name; // ajoute le nom
ListItem.SubItems.Add(FileInfo.szTypeName); // le type
ListItem.SubItems.Add(Location); // le chemin
Icon.handle := FileInfo.hIcon; // affecte L'icone
LargeImageList.AddIcon(Icon); // ajoute à SmallImageList
SmallImageList.AddIcon(Icon); // et à LargeImageList
ListItem.ImageIndex := LargeImageList.Count - 1; // mise à jour de l'index
Until FindNext(sr) <> 0; // chercher le fichier suivant
FindClose(sr); // si il n'y en a pas on ferme la recherche
Finally
ListView1.Items.EndUpdate; // fin de mise à jour
Icon.Free; // on libère l'icone que l'on a crée
Screen.Cursor := OldCursor; // et rétablie le curseur d'origine
End;
End;
Alors pourquoi deux ImageListe eh bien une pour mode vsIcone (Large) et une pour le mode vsReport (Small)
@+
Cirec
Ne pas oublier de cliquer sur Réponse Acceptée si elle vous convient