AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateitypen icons in listview

Ein Thema von Van HelF · begonnen am 9. Nov 2006 · letzter Beitrag vom 9. Nov 2006
Antwort Antwort
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
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Dateitypen icons in listview

  Alt 9. Nov 2006, 21:14
Du ladest einfach alles in einer TImageList. Im Objekt-Inspektor änderst SmallImages von dem TListView mit deiner TImageList.
Danach machst einen code wie z.B.
Delphi-Quellcode:
var ListItem: TListItem;
begin
  ListItem := ListView1.Items.Add;
  ListItem.ImageIndex := 0; // oder den Index von der TImageList
  ListItem.Caption := 'Erste Spalte';
  ListItem.SubItems.Add('Zweite..');
end;
Jedoch, nehmen wir an du speicherst jedes einzelne Icon in der TImageList, bei 1.000 Dateien frisst das viel Speicher.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Dateitypen icons in listview

  Alt 9. Nov 2006, 21:36
Um jetzt mal keinen neuen Thread aufzumachen: "Gibt es eine Funktion, die anhand der Dateierweiterung das Icon zurückgibt? Also wenn ich gif übergebe das GIF Icon anzeigt und wenn ich exe übergebe das standard exe Icon ausgibt ...

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Dateitypen icons in listview

  Alt 9. Nov 2006, 21:38
Guckst du hier [oh]SHGetFileInfo[oh].
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz