Hier wäre meine Lösung zu Post #3, soeben getestet.
Was man hier nicht sieht:
FileListBox1.Mask auf "*.*" gesetzt.
DriveComboBox1 hat Bezug zu DirectoryListBox1.
DirectoryListBox1 hat
keinen Bezug zu FileListBox1.
DirectoryListBox1 ein OnChange Event zugewiesen was man hier dem Code entnehmen kann um die FileListBox1 zu füllen.
Edit1.Text ist mit ".Extension" gefüllt.
Beispielsweise ".mm" um wirklich nur Dateien mit Endung ".mm" zu haben, auch wenn ".mm1" ".mmXyz" usw existiert.
Kannst Du logischerweise entfernen und hardcoded reinpacken.
Delphi-Quellcode:
type
TForm2 = class(TForm)
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
Edit1: TEdit;
procedure DirectoryListBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.DirectoryListBox1Change(Sender: TObject);
var
i: Integer;
SL: TStringList;
begin
FileListBox1.Directory := DirectoryListBox1.Directory;
SL := TStringList.Create;
try
FileListBox1.Items.BeginUpdate;
for i := 0 to FileListBox1.Items.Count - 1 do
if LowerCase(ExtractFileExt(FileListBox1.Items[i])) = LowerCase(Edit1.Text) then
SL.Add(FileListBox1.Items[i]);
FileListBox1.Clear;
FileListBox1.Items := SL;
FileListBox1.Items.EndUpdate;
finally
SL.Free;
end;
end;
end.
Vielleicht ist das ein Ansatz für Dich?
//edit
Vielleicht wäre es klug der Mask ein vorfilterung anzubieten.
Delphi-Quellcode:
procedure TForm2.DirectoryListBox1Change(Sender: TObject);
var
i: Integer;
SL: TStringList;
begin
FileListBox1.Mask := '*' + Edit1.Text;
// ...dann der Rest aus obigen listing