Charger le handle de l'imagelist système dans une timagelist

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 179 fois - Téléchargée 30 fois

Contenu du snippet

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;

A voir également

Ajouter un commentaire Commentaires
Messages postés
11
Date d'inscription
vendredi 4 octobre 2002
Statut
Membre
Dernière intervention
2 mars 2004

PS: Sur XP ya aucun probleme :'(
Messages postés
11
Date d'inscription
vendredi 4 octobre 2002
Statut
Membre
Dernière intervention
2 mars 2004

Salut, est ce que ce code est comptatible windos 98 ?
Parsque je developpe une application et je recupere donc le handle des icones systeme pr creer la liste des fichiers dasn un TListBox.
Je developpe sur win XP.
Et plusieur amis m'ont dis que sur win98 mon logiciel detruisé le handle des icones systeme de windows
donc tout leurs icoen disparaissent o_O!
quelq'un auré une solution ?
'pourtant g bien choisi l option shareimage dans les proprieté du TImageList)
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Ben, c'est pas qu'on soit fainéant mais tu peux pas mettre le source dans un zip, histoire qu'on gagne un peu de temps...

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.