Afficher les fichiers et leurs icones dans un Listview

uses ShellApi;

{...}

procedure TForm1.Button1Click(Sender: TObject);
const
sPath = 'c:';
var
i: Integer;
Icon: TIcon;
SearchRec: TSearchRec;
ListItem: TListItem;
FileInfo: SHFILEINFO;
begin
ListView1.SmallImages := ImageList1;
// Show Listview in Report Style and add 2 Columns
ListView1.ViewStyle := vsReport;
ListView1.Columns.add;
ListView1.Columns.add;
Icon := TIcon.Create;
try
i := FindFirst(sPath + '*.*', faAnyFile, SearchRec);
while i = 0 do begin
with ListView1 do
begin
if ((SearchRec.Attr and FaDirectory <> FaDirectory) and
(SearchRec.Attr and FaVolumeId <> FaVolumeID)) then
begin
ListItem := ListView1.items.add;
SHGetFileInfo(PChar(sPath + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo),
SHGFI_DISPLAYNAME);
Listitem.Caption := FileInfo.szDisplayName;
// Get The TypeName
SHGetFileInfo(PChar(sPath + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo),
SHGFI_TYPENAME);
ListItem.SubItems.Add(FileInfo.szTypeName);
SHGetFileInfo(PChar(sPath + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON);
icon.handle := FileInfo.hIcon;
ListItem.ImageIndex := ImageList1.AddIcon(Icon);
end;
end;
i := FindNext(SearchRec);
end;
finally
Icon.Free;
end;
end;
Commentaire des internautes
avatar
Christophe le 23/01/2002
en remplacant la ligne:
SHGetFileInfo(PChar(ePath.Text + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON);
par la ligne
SHGetFileInfo(PChar(ePath.Text + SearchRec.Name), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON + SHGFI_SMALLICON);
on obtient la petite icone du fichier au lieu de la grande d'où une meilleur qualité
de celle-ci qu'en diminuant la grande icone.
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour23/01/2002
VisualisationVu 1681 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Fichier
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur