Pouvoir afficher par exemple des fichiers, keurs icones, leurs attributs etc dans une TListView
Source / Exemple :
uses ShellApi,Shlobj;
{=========Charger le Handle======}
procedure TForm1.Button1Click(Sender: TObject);
var psfi : TSHFileInfo;//pointeur pour stocker la structure
ppidl: PItemIDList;
begin
SHGetSpecialFolderLocation(0, CSIDL_DRIVES, ppidl);
{Quel folder-> "Tout"}
ImageList1.ShareImages := True;
{Pas supprimer le Handle de l'imageList système !}
ImageList1.Handle := SHGetFileInfo(PChar(ppidl), 0, psfi, SizeOf(psfi),
SHGFI_PIDL or SHGFI_ICON {or SHGFI_SMALLICON} or SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_DISPLAYNAME);
(*Charge le handle de l'imagelist system dans imagelist1
afin de retrouver tous les icones et leur index unique + type etc...*)
end;
{=========Ex ouverture d'un fichier puis affichage dans une TListView======}
procedure TForm1.Button2Click(Sender: TObject);
var lsFile: String;//Fichier sélectionné
psfi: TSHFileInfo;//pointeur pour stocker la structure
liItem:TListItem;//Nouveau Item dans ListView1
//lsrRec:TSearchRec;
begin
OpenDialog1.initialdir:=ExtractFilePath(ParamStr(0));
If Not OpenDialog1.execute then exit;{O/N sélection d'un fichier}
lsFile:=OpenDialog1.filename;
SHGetFileInfo(PChar(lsFile), 0, psfi, SizeOf(psfi),
SHGFI_ICON {or SHGFI_SMALLICON} or SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_DISPLAYNAME or
SHGFI_TYPENAME);
liItem:=ListView1.Items.Add;
liItem.Caption := psfi.szDisplayName;
{En vue vsReport par ex
FindFirst(lsFile, faAnyFile , lsrRec);
liItem.SubItems.Add(Format('%d kb', [lsrRec.Size div 1024]));
liItem.SubItems.Add(psfi.szTypeName);}
liItem.ImageIndex:=psfi.iIcon;
end;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.