/ Forside/ Teknologi / Udvikling / Delphi/Pascal / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hente default-ikoner til en TImage
Fra : ironman
Vist : 727 gange
100 point
Dato : 23-08-01 01:31

Kunne nogen fortælle mig hvordan jeg får en TImage til at vise 16x16 pixels-udgaven af et ikon, som er associeret til en fil? (Fx 16x16 pixels ikonet for en .mp3 fil.)

 
 
Accepteret svar
Fra : gandalf

Modtaget 100 point
Dato : 23-08-01 08:28

Hej Ironman

Du gør således :
****************************************************
function GetFileIcon(FileName: string): TIcon;
var
FileInfo: SHFILEINFO;
begin
SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON or SHGFI_ICONLOCATION);
Result := TIcon.Create;
Result.Handle := FileInfo.hIcon;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.Icon := GetFileIcon('c:/test.mp3');
end;
******************************************************

Gandalf

Kommentar
Fra : Nyhedsbruger


Dato : 26-08-01 19:30

Hej "Ironman",

for at udtrække et registreret ikon kan du anvende SHGetFileInfo, der er
defineret i ShellAPI modulet. Følgende funktion kan udtrækker et HICON
(handle til et ikon) ud fra et givent filnavn:

function GetSmallIconHandle(const aFileName : string):HICON;
// Returns the HICON (icon handle) corresponding to the small icon
// associated with aFileName
var
SFI: TSHFileInfo;
begin
SHGetFileInfo(PChar(aFileName), 0, SFI, SizeOf(TSHFileInfo), SHGFI_ICON or
SHGFI_SMALLICON);
Result := SFI.hIcon;
end;

Funktionen trækker 16x16 ikonet ud... for at få 32x32 versionen, anvendes
"SHGFI_LARGEICON" istedet for "SHGFI_SMALLICON". For at få dette handle til
et mere konkret ikon, skal du blot oprette et TIcon object og tildele
handle't til objektet:

var
HandleSmall : HICON;
IconSmall : TIcon;
begin
// Extract the small icon
HandleSmall := GetSmallIconHandle(aFileName);

// Initialize the small icon
IconSmall := TIcon.Create;
IconSmall.Width := 16; IconSmall.Height := 16;
IconSmall.Handle := HandleSmall;

Herefter skulle det være en smal sag at få skrevet ikonet ud... håber det
kan bringe dig videre.

Cheers,
Thomas



Kommentar
Fra : ironman


Dato : 08-09-01 12:48

Mange tak for svarene. Det fungerer helt fint.

Jens.

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste