Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listview und Treeview mit eigenen Icons erstellen (https://www.delphipraxis.net/140541-listview-und-treeview-mit-eigenen-icons-erstellen.html)

djpaull 20. Sep 2009 14:28


Listview und Treeview mit eigenen Icons erstellen
 
Hallo allerseits!

Bin gerade dabei, eigenen Explorer zu erstellen. Dabei würde ich gerne für die Ordner und Dateien eigene Icons benutzen. Die Listview kennt nicht alle Icons und ShellListView nur die von (jeweiligen) Windows verwendeten Icons. Da ShellListView schon "eigene" Icons hat, würde ich gern mit der normalen ListView arbeiten. Hier fand ich ein Beispiel dafür, allerdings werden dort auch die Windows Icons benuzt.

Ich dachte hier an ungefähr sowas:
Entweder manuell:
Delphi-Quellcode:
if ItemType:=Folder then MyIcon:=Folder.ico
if ItemType:=.mp3 then MyIcon:=mp3.ico
if ItemType:=.jpg then MyIcon:=jpg.ico
Oder automatisch - man legt ein Array an für die DateiEndungen von Avi bis Zip und ihn anschließend miteiner ImageList verknüpft.

Auf jeden fall weiss ich nicht, wie ich die ListView mit meinen Icons verbinde.
Hat jemand ne Idee?

jfheins 20. Sep 2009 14:58

Re: Listview und Treeview mit eigenen Icons erstellen
 
Wenn ich mich recht erinnere: Du musst der Listview eine Imagelist zuweisen und jedes Item hat eine ImageIndex Eigenschaft, die bestimmt welches Bild angezeigt wird ;)

djpaull 20. Sep 2009 15:02

Re: Listview und Treeview mit eigenen Icons erstellen
 
Das stimmt. Nur wie mach ich es so, dass bei einer Mp3-Datei ein Mp3-Icon erscheint? (Zuweisung)

[EDIT 1]

OK. Dann noch mal Schrittweise.
Kann mir jemand sagen, wie man die TreeView und ListView füllen kann - VerzeichnissBaum?

Andreas L. 20. Sep 2009 17:11

Re: Listview und Treeview mit eigenen Icons erstellen
 
Brauchst halt noch eine Liste in der zu der jeweiligen Dateiendung der ImageIndex gespeichert ist. z. B.

Delphi-Quellcode:
type
  TFileExt = record
    FileExt: String;
    ImageIndex: Integer;
  end;

  TFileExts = array of TFileExt;

...

var
  FileExtArray: TFileExts;

procedure TForm1.OnCreate(Sender: TObject);
begin
  SetLength(FileExtArray, 1);
  FileExtArray.FileExt := 'htm';
  FileExtArray.ImageIndex := 5;
end;

procedure TForm1.ErstelleEintrag(FileName: String);
begin
  with ListView1.Items.Add do
  begin
    ...
    ImageIndex := GetFileImageIndex(ExtractFileExt(FileName));
  end;
end;

function TForm1.GetFileImageIndex(AFileExt: String):Integer;
var
  i: Integer;
begin
  Result := -1;
  for i := 0 to Length(FileExtArray) -1 do
  begin
    if LowerCase(AFileExt) = LowerCase(FileExtArray[i].FileExt then
    begin
      Result := FileExtArray[i].ImageIndex;
      Break;
    end;
  end;
end;
Besser wäre es natürlich wenn du dir eine Komponente von TCollection ableitest, dann kannst du die ImageIndexe und Dateiendungen zur DesignTime im Objekt-Inspektor einstellen.

djpaull 20. Sep 2009 17:31

Re: Listview und Treeview mit eigenen Icons erstellen
 
Danke für die Antwort. So wie es aussieht, werde ich mich jetzt noch ne Weile mit deinem Code auseinandersetzen - bin noch kein Profi :oops:
Aber da gibts noch ne Kleinigkeit - ich habe Delphi 2005 und habe keine TCollection-Komponente im ObjektInspektor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz