![]() |
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?)? |
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 |
Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
Zu FindFile steht bei mir nichts in der Hilfe!? :wiejetzt:
|
Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
Probier es mal so:
Delphi-Quellcode:
Nun werden alle BMPs in eine Listbox eingetragen.
//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; |
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:
Das Problem ist, dass neben meinem Eintrag in der ListBox das Bitmap auf 12x12 Pixel erscheinen soll (sowie der Dateiname rechts daneben).
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 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:
(läuft über Style := lbOwnerDrawFixed)
CurrentDir := GetCurrentDir;
Bitmap := TBitmap.Create; Bitmap.LoadFromFile(CurrentDir + '\bilder\Bitmap1.bmp'); with ListBoxTiles.Items do begin AddObject('Bitmap 1', Bitmap); end; Hat jemand eine Idee? |
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: |
Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?
Hi,
vielleicht hilft das auch noch
Delphi-Quellcode:
schon hat man alle bmp's und jpg's in der Listbox oder so ...
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); 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