Bonjour,
j'ai ça :
Comment faire pour obtenir l'icône associé a chaque fichier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fichier1 := 'toto.txt' ; fichier2 := 'toto.jpg' ;
Merci
Bonjour,
j'ai ça :
Comment faire pour obtenir l'icône associé a chaque fichier ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fichier1 := 'toto.txt' ; fichier2 := 'toto.jpg' ;
Merci
J'ai trouvé ca (pas testé):
Je recupère l'icone associé au fichier texte par cette méthode:
Code:
function GetAssociatedIcon(const Ext: PChar): HICON;
var
Info: TSHFileInfo;
begin
SHGetFileInfo(Ext, FILE_ATTRIBUTE_NORMAL, Info, SizeOf(Info), SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES);
Result := Info.hIcon;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Ic: TIcon;
begin
Ic := TIcon.Create;
Ic.Handle := GetAssociatedIcon('.txt');
ImageList1.AddIcon(Ic);
ImageList1.Draw(Image1.Canvas, 0, 0, 0, True);
Ic.Free;
end;![]()
moi j'utilise ça :
(ne pas oublier de faire un Free du TIcon renvoyé lorsqu'il n'est plus utile)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 function GetIcon(const FileName: string; const Large: Boolean): TIcon; var sfi: TSHFILEINFO; i: Integer; begin Result := nil; try Result := TIcon.Create; if Large then i := SHGFI_LARGEICON else i := SHGFI_SMALLICON; SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_USEFILEATTRIBUTES or i); Result.Handle := sfi.hIcon; except if Result <> nil then FreeAndNil(Result); end; end;
c'est à peu près pareil sauf qu'ici on a l'icône pour un fichier précis (par ex les .exe et .lnk ont souvent des icônes différentes pour chaque fichier)
Merci, mais ça marche pas : il me dit :
[Erreur] fonctions.pas(40): Identificateur non déclaré : 'FILE_ATTRIBUTE_NORMAL'
pour ça :Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part SHGetFileInfo(PChar(FileName), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), SHGFI_ICON or SHGFI_USEFILEATTRIBUTES or i);
Tu as bien Windows dans tes uses ?
![]()
Ça marche, merci !
En effet, il me manquait Windows...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager