Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordner auslesen und Dateien in ListView anzeigen? (https://www.delphipraxis.net/20628-ordner-auslesen-und-dateien-listview-anzeigen.html)

citybreaker 20. Apr 2004 19:21


Ordner auslesen und Dateien in ListView anzeigen?
 
Hallo,
ich lese einen Ordner aus uns möchte die Dateien in einer TListView anzeigen
und verknüpfen. Dabei soll das Orginal DateiIcon zu sehen sein. Ist das irgendwie
möglich?

Lese zur Zeit flgendermaßen den Ordner aus.

Delphi-Quellcode:
var
  SearchRec: TSearchRec;
begin
  FindFirst(ExtractFilePath(Application.Exename) + '*.*', faAnyFile, SearchRec);
  repeat
    ListBox1.items.add(searchrec.Name);
  until FindNext(searchrec) <> 0;
  findclose(searchrec);
end;

--- Edit ---
Auflisten klappt schonmal weiß nur nicht wie ich die Symbole anzeigenlassen soll.

Christian Seehase 20. Apr 2004 21:17

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
Moin Citybreaker,

in Deinem Codeschnipsel verwendest Du eine ListBox.
Um die Icons mit anzeigen zu lassen wirst Du wohl einen ListView brauchen (wie Du ja auch oben schreibst).

Wo hast Du jetzt das Problem: Bei der Zuweisung der Icons, oder beim Auslesen?

citybreaker 21. Apr 2004 10:15

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
Hab den Codeschnipsel von der alten version gepostet. Da war da noch die ListBox.
Ich hab überhaupt kein Plan wie ich kann die Iconsrankomme und diese dann anzeigen lassen
kann.

Christian Seehase 21. Apr 2004 16:32

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
Moin Citybreaker,

ich hätte da ein simples Beispiel.
Dafür brauchst Du einen Button, ein Editfeld, ein Imagelist (Name muss auf ilFilter gestellt werden) und einen ListView (Name = lvFilter, SmallImages = ilFilter, ViewStyle = vsReport)
Ausserdem müssen die Units shlobj und shellapi eingebunden werden.

Das Editfeld dient hier nur der Eingabe einer Extension die dann, samt zugehörigem Icon, in den Listview eingetragen wird.
Die Extension muss dazu ohne Punkt eingegeben werden.

Delphi-Quellcode:
implementation
uses
  shlobj,  // IShellFolder
  shellapi; // SHGetFileInfo

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

var
  icWork : TIcon;
  sfWork : IShellFolder;
  fiWork : TSHFileInfo;

begin
    icWork := TIcon.Create;
    try
      lvFilter.Items.Add;
      lvFilter.Items[lvFilter.Items.Count-1].Caption := Edit1.Text;
      // Ermitteln des Icons
      SHGetFileInfo(
        PChar('*.'+Edit1.Text),  // Die gewünschte Extension übergeben
        0,                       // Kein spezielles Dateiattribut angegeben (z.B. ReadOnly)
        fiWork,                  // Hier wird das Ergebnis abgelegt
        SizeOf(fiWork),          // Grösse des Ergebnisses
          SHGFI_ICON             // hIcon in fiWork füllen
          or
          SHGFI_SMALLICON        // das Handle des kleinen Icons ermitteln
          or
          SHGFI_USEFILEATTRIBUTES // Der erste Parameter enthält i.d.R. den Pfad zu einer
                                  // vorhandenen Datei.
                                  // Mit diesem Flag wird das nicht geprüft, so dass die Angabe
                                  // einer Extension ausreicht das Icon zu erhalten
                                  // Enthält der Parameter einen gültigen Pfad, so kann dieses
                                  // Flag auch weggelassen werden
      );
      // Handle des Icons an Iconobjekt übergeben
      icWork.Handle := fiWork.hIcon;
      // Damit es
      // 1. der Imageliste hinzugefügt werden kann
      // 2. der Eintrag im Listview dieses Icon bekommt
      lvFilter.Items[lvFilter.Items.Count-1].ImageIndex := ilFilter.AddIcon(icWork);
    finally
      FreeAndNil(icWork);
    end;
end;

procedure TForm1.FormDestroy(Sender: TObject);

var
  icWork : TIcon;

begin
  // Imageliste leeren und Icons aus der Systemimagelist
  // wieder zerstören
  icWork := TIcon.Create;
  try
    while ilFilter.Count > 0 do begin
      ilFilter.GetIcon(ilFilter.Count-1,icWork);
      ilFilter.Delete(ilFilter.Count-1);
      DestroyIcon(icWork.Handle);
    end;
  finally
    FreeAndNil(icWork);
  end;
end;

citybreaker 22. Apr 2004 07:09

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
Fein, jetzt zeigt er mir ja schonmal die Icons von der entsprechenden Datei an,
jetzt möchte ich habe große Icons haben und den Style vsIcon. Gibts da ne möglichkeit?

Christian Seehase 22. Apr 2004 19:59

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
Moin Citybreaker,

schau Dir am Besten mal die möglichen Parameter von MSDN-Library durchsuchenSHGetFileInfo an.

milanlu 5. Jan 2006 11:11

Re: Ordner auslesen und Dateien in ListView anzeigen?
 
hallo, das mit den icons geht aber für ordner nicht! er zeigt keine icon für ordner! bitte um hilfe!
danke im voraus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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