Hallo Freunde,
hänge an einem neuen Problem. Ich möchte Dateien in einer Stringgridliste und als Listview anzeigen und dabei nach Dateiendungen selektieren. Für einen einzigen Ordner ist alles gelöst.
Nun will ich die Programmfunktion auf mehrere Ordner erweitern.
Mein Lösungsansatz war wie folgt:
1. Ich wähle per FileOpenDialog einen Ordner aus und erhalte in einer FileListBox
2 die Dateinamen des Verzeichnises.
2. Diese Dateinamen kopiere ich inklusive dem kompletten Pfad in eine zentrale FileListBox
1
Delphi-Quelltext
1: 2:
| for j:=0 to FileListbox2.Items.Count-1 do FileListbox1.Items.Add(vAktuPfad + '\' + FileListbox2.Items.Strings[j]); |
3. Den Pfadname vom aktuell gewählten Ordner (vAktuPfad) merke ich mir in einer ListBox
4. Aus der FileListBox1 heraus bereite ich die StringGridliste und die Listview auf.
5. Diesen Vorgang wiederhole ich für alle gewünschten Ordner.
Meine FileListbox1 ist also der "Sammelbehälter" und enthält in den einzelnen Strings nicht nur den Dateinamen, sondern den komplett langen Pfad+Dateinamen. So weit so gut - funktioniert.
Nun mein Problem:
Selektiere ich über Parameter FileListBox1.Mask meine Dateien, dann werden die "unerwünschten" Dateien nicht nur ausgeblendet, sondern FileListBox1 wird automatisch komplett neu gefüllt. Da jedoch FileListBox1.Drive und FileListBox1.Directory nicht vorbesetzt werden können (mehrere unterschiedliche Pfade), ist mein "Sammelbehälter" weg und ich erhalte nur noch die Dateien aus meinem Programmpfad. Ich hoffe das Problem verständlich erläutert zu haben.
Welche Lösungsmöglichkeiten gibt es hier? Ich habe eine zweite FileListBox (1) gewählt, um per Mask-Befehl einfach zu selektieren - was bei einer normalen ListBox nicht der Fall ist. Hatte allerdings nicht damit gerechnet, dass bei Mask-Änderung der gesamte Ordner neu eingelesen wird (Denkfehler).
Eine Möglichkeit wäre nach einer Mask-Änderung in einer Schleife über alle gemerkten Ordner (siehe Pkt.3 ListBox) alle Ordner und Dateien neu einlesen (scheint mir jedoch aufwändig, da dahinter noch einiges mehr abläuft). Wie bearbeitet man mehrere Ordner?
Guter Rat ist willkommen.
hRb