AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Alle BMPs eines Verzeichnisses in Listbox auflisten?
Thema durchsuchen
Ansicht
Themen-Optionen

Alle BMPs eines Verzeichnisses in Listbox auflisten?

Ein Thema von Nonsense · begonnen am 28. Nov 2003 · letzter Beitrag vom 28. Nov 2003
Antwort Antwort
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#1

Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 18:16
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!



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?)?
  Mit Zitat antworten Zitat
sharkx

Registriert seit: 24. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 18:19
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
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#3

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 18:22
Zu FindFile steht bei mir nichts in der Hilfe!?
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#4

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 18:34
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.
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#5

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 18:44
@Uncle Cracker:

Danke für deine Mühe, aber ich glaube, ich habe mich falsch ausgedrückt
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?
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#6

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 19:25
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!

  Mit Zitat antworten Zitat
Rumpi

Registriert seit: 26. Aug 2003
Ort: Berlin
72 Beiträge
 
#7

Re: Alle BMPs eines Verzeichnisses in Listbox auflisten?

  Alt 28. Nov 2003, 21:15
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
  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 10:54 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