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 Alle BMPs eines Verzeichnisses in Listbox auflisten? (https://www.delphipraxis.net/12505-alle-bmps-eines-verzeichnisses-listbox-auflisten.html)

Nonsense 28. Nov 2003 18:16


Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
Hallo Community,
ich komme einfach nicht weiter.
Ich würde gerne alle Bilder eines Verzeichnisses in einer Listbox incl. Dateinamen auflisten.
Wie ich Bilder in die Listbox zeichne, weiß ich bereits und es funktioniert wunderbar.

Leider ist dies noch "manuell". Ich würde jetzt gern wissen, wie ich alle BMPs eines Verzeichnisses in die Listbox laden kann.

Meine Idee wäre, alle Dateien eines Verzeichnisses zählen, die Anzahl einer for-Schleife übergeben, welche dann jedes einzelne Bild in ein TBitmap speichert und einen Eintrag in der ListBox vornimmt.

Habt ihr was besseres? Vielleicht schon mal gemacht?

Danke! :-D



Achso: wie kann ich den aktuellen Eintrag (String) einer ListBox herausfinden (woher weiß ich, welcher Eintrag gerade ausgewählt ist? Kann man das auch mit lbOwnerDrawFixed herausfinden? Oder geht das nur mit lbStandard?)?

sharkx 28. Nov 2003 18:19

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
FindFile(Directory, '*.bmp') bekommst du alle files mit der endung *.bmp. Bzw. er hört nach dem finden auf, das ganze kannst du aber in eine repeat schleife packen.

Den aktuell ausgewählten eintrag in der ListBox müsstest du mit ListBox.itemIndex; herausbekommen

Nonsense 28. Nov 2003 18:22

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
Zu FindFile steht bei mir nichts in der Hilfe!? :wiejetzt:

Uncle Cracker 28. Nov 2003 18:34

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
Probier es mal so:

Delphi-Quellcode:
//Dateien herausfiltern
function ReadDir(Path, Mask: string; ShowPath: boolean): TStringlist;
var SRec: TSearchRec;
  SL: TStringList;
begin
  SL := TStringList.Create;
  FindFirst(Path + Mask, not faDirectory, SRec);
  if ShowPath then
    SL.Add(Path + SRec.Name)
  else
    SL.Add(SRec.Name);
  while FindNext(SRec) = 0 do
    if ShowPath then
      SL.Add(Path + SRec.Name)
    else
      SL.Add(SRec.Name);
  FindClose(SRec);
  Result := SL;
end;





//Dateien laden (JPG + JPeg + BMP + WMF + ICO + EMF)
procedure TForm1.Button1Click(Sender: TObject);
var
  path : string;
  stl  : TStringList;
  i : integer;
begin
  path:='c:\bilder\';
  stl := TStringList.Create;
  try
    stl.AddStrings(ReadDir(path,'*.BMP',false));
//    stl.AddStrings(ReadDir(path,'*.jpg',false));
//    stl.AddStrings(ReadDir(path,'*.WMF',false));
//    stl.AddStrings(ReadDir(path,'*.EMF',false));
//    stl.AddStrings(ReadDir(path,'*.ICO',false));
//    stl.AddStrings(ReadDir(path,'*.JPeg',false));

//Leere Einträge entfernen
    i := 0;
  while i < stl.count do begin
    if trim(stl[i]) = '' then
      stl.Delete(i)
    else
      inc(i);
  end;
//Einträge aus StringList in Listbox einfügen
    listbox1.Items.CommaText:=stl.text;
  finally
    stl.Free;
  end;
end;
Nun werden alle BMPs in eine Listbox eingetragen.

Nonsense 28. Nov 2003 18:44

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
@Uncle Cracker:

Danke für deine Mühe, aber ich glaube, ich habe mich falsch ausgedrückt :oops:
Wie man die Dateinamen auflistet, weiß ich ja.
Delphi-Quellcode:
procedure ListFileDir(Path: string; FileList: TStrings);
var
  SearchRec: TSearchRec;
begin
  if FindFirst(Path + '*.bmp', faAnyFile xor faDirectory, SearchRec) = 0 then
    repeat
      FileList.Add(SearchRec.Name);
    until
      FindNext(SearchRec) <> 0;

    FindClose(SearchRec);
end;
Das Problem ist, dass neben meinem Eintrag in der ListBox das Bitmap auf 12x12 Pixel erscheinen soll (sowie der Dateiname rechts daneben).

Das ganze möchte ich automatisieren, d.h. es soll selbständig ein Verzeichnis ausgelsen werden und das Bild + Dateiname in die ListBox eingetragen werden.

Momentan mache ich es per:
Delphi-Quellcode:
  CurrentDir := GetCurrentDir;

  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile(CurrentDir + '\bilder\Bitmap1.bmp');

  with ListBoxTiles.Items do
  begin
    AddObject('Bitmap 1', Bitmap);
  end;
(läuft über Style := lbOwnerDrawFixed)

Hat jemand eine Idee?

Nonsense 28. Nov 2003 19:25

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
Heureka!
Ich hab's hinbekommen.
Danke nochmal an Uncle Cracker, ich hab mir was mit einer StringList zusammengebastelt!
Wusste gar nicht, dass es sowas gibt!

:bounce1:

Rumpi 28. Nov 2003 21:15

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
 
Hi,

vielleicht hilft das auch noch

Delphi-Quellcode:
procedure EnumFiles( WildCard : string;
                     FileList : TStrings;
                     AddFiles : Boolean;
                     StripExtensions: boolean );
var
  SRec         : TSearchRec;
  Error        : DWORD;
begin
  try
    if Not AddFiles then
      FileList.Clear;
    Error := FindFirst( WildCard, faANYFILE, SRec );
    while Error = 0 do
    begin
      if SRec.Attr and faDIRECTORY = 0 then
        if not StripExtensions then
          FileList.Add( SRec.Name )
        else
          FileList.Add( ChangeFileExt( SRec.Name, '' ) );
      Error := FindNext( SRec );
    end;
    Sysutils.FindClose( SRec );
  except
    //
  end;
end;



....

    EnumFiles( FPath + '*.bmp',
               Listbox.Items,
               false ,
               false);

    EnumFiles( FPath + '*.jpg',
               Listbox.Items,
               true ,
               false);
schon hat man alle bmp's und jpg's in der Listbox oder so ...

mfg Rumpi


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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-2025 by Thomas Breitkreuz