4
  1. 问题 1:我想过滤只显示特定文件名的打开对话框。文件名在 TEdit 框中给出。这是我的代码,但它仍然显示目录中的整个文件。

    过程 TForm1.ButtonLoad(Sender: 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- 的文件(忽略文件扩展名)

最美好的祝愿,蜜蜂。

4

1 回答 1

3

它显示所有文件,因为您明确告诉它:

openDialog.Filter := 'All file extension|*.*';

单独设置文件名不会过滤打开的对话框。

您可以使用这样的过滤器:

openDialog.Filter := 'Flower Files|FLOWER-*.*';

显示所有带有前缀“FLOWER-”的文件。如果要过滤除一个特定文件名之外的所有文件名,只需在过滤器的第一部分省略通配符:

openDialog.Filter := 'Flower-2230 File|FLOWER-2230.*';

但是(正如大卫在他的评论中指出的那样)当您将选择限制为单个文件时,为什么要打开一个对话框?

于 2013-11-19T07:37:04.087 回答