Einzelnen Beitrag anzeigen

Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#1

Dateitypen icons in listview

  Alt 9. Nov 2006, 21:07
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;
  Mit Zitat antworten Zitat