hallo,
ich habe hier mal im forum machgeschaut, und folgenden code zum auslesen, des dateitypen icons gefunden.
mein problem ist, ich möchte mir das icon gerne in einem
listview anstatt in der paintbox anzeigen lassen, jedoch bekomme ich es nicht wirklich hin. hat jemand eine idee, wie man dies umsetzen könnte?
Delphi-Quellcode:
procedure TForm1.DrawFile(
Name:
String);
var
FileInfo: TSHFileInfo;
ImageListHandle: THandle;
aIcon: TIcon;
begin
// Speicher löschen
FillChar(FileInfo, SizeOf(FileInfo), #0);
// Handle der Image Liste der ausgewählten Datei ermitteln
ImageListHandle :=
SHGetFileInfo(
PChar(
Name), 0, FileInfo, SizeOf(FileInfo),
// großes Icon verlangen
SHGFI_ICON
or SHGFI_LARGEICON);
try
// TIcon Objekt erstellen
aIcon := TIcon.Create;
try
// Icon Handle zuweisen
aIcon.Handle := FileInfo.hIcon;
// Transparent darstellen
aIcon.Transparent := True;
with PaintBox1
do
begin
// Paintbox auf die entsprechende Größe bringen
Width := aIcon.Width;
Height := aIcon.Height;
Application.ProcessMessages;
// Paintbox löschen
Canvas.Rectangle(-1, -1, Succ(Width), Succ(Height));
// Icon darstellen
Canvas.Draw(0, 0, aIcon);
end;
finally
// TIcon Objekt freigeben
FreeAndNil(aIcon);
end;
finally
// Icon der Shell wieder freigeben
DestroyIcon(FileInfo.hIcon);
// Icon Liste der Shell wieder freigeben
// ImageList_Destroy(ImageListHandle);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var l:Tlistitem;
begin
if OpenDialog1.Execute
then
DrawFile(OpenDialog1.FileName);
end;