问题1: 我想过滤只显示某个文件名的打开对话框。文件名在TEdit框中给出。这是我的代码,但它仍然显示目录中的整个文件。
程序TForm1.ButtonLoad(发件人:TObject);
var
openDialog: TOpenDialog;
i: Integer;
begin
TFBusy(sender);
openDialog := TOpenDialog.Create(self);
openDialog.Title := 'Browsing desired file, Browse for '+ TEdit1.Text;
openDialog.InitialDir := strMyDoc;
openDialog.FileName := TEdit1.Text;
openDialog.Filter := 'All file extension|*.*';
try
if not openDialog.Execute then
begin
mem0.lines.add('Browse file to load was cancelled');
end;
finally
for i := 0 to openDialog.Files.Count - 1 do
//i do here with the file
end;
openDialog.Free;
TFReady(sender);
end;
虽然打开对话框上的文件名显示正确,但它仍然显示目录中的所有文件。
问题2:
我可以使用特定前缀过滤文件吗?
例如;我的文件名是FLOWER-3320,FLOWER-2230,依此类推。所以我想过滤打开的对话框,它只显示前缀名为FLOWER-(忽略文件扩展名)
祝福, 蜜蜂。
答案 0 :(得分:1)
它显示所有文件,因为你明确告诉它:
openDialog.Filter := 'All file extension|*.*';
单独设置文件名不会过滤打开的对话框。
您可以使用这样的过滤器:
openDialog.Filter := 'Flower Files|FLOWER-*.*';
显示前缀为“FLOWER-”的所有文件。如果要过滤除一个特定文件名以外的所有文件名,只需在过滤器的第一部分中省略通配符:
openDialog.Filter := 'Flower-2230 File|FLOWER-2230.*';
但是(正如David在评论中指出的那样)为什么在将选择限制为单个文件时会有一个打开的对话框?