TFileOpenDialog FileTypes:如何在运行时更改

时间:2014-08-19 13:32:38

标签: delphi filter openfiledialog

在TFileOpenDialog中,我将FileTypes属性设置为由当前文件夹中的选定文件填充的自定义文件列表。

dlg := TFileOpenDialog.Create( self );
Filter := TStringList.Create();
// ... 
// Filter contains the selected files
  if Filter.Count>0 then
    begin
      msg := '';
      for i := 0 to Filter.Count-1 do
          msg := msg + Filter[i] + ';';
      dlg.FileTypes.Clear;
      dlg.FileTypes.Add.DisplayName := '';
      dlg.FileTypes.Add.FileMask := msg;
    end;

它按预期工作。

我处理OnFolderChange事件,因为我从新选择的文件夹中创建了一个新文件选择。我将FileTypes属性设置为此新列表。 但我观察到FileTypes属性保持不变。因此,找不到文件。

我是否可以假设无法为当前的TFileOpenDialog更改FileTypes属性?

1 个答案:

答案 0 :(得分:1)

此控件是公共项目对话框的包装器。 IFileDialog::SetFileTypes的文档说:

  

必须在显示对话框之前调用此方法,并且只能为每个对话框实例调用一次。显示“公共项目”对话框后,无法修改文件类型。

因此,在显示对话框后,您无法修改文件类型。

FWIW,每次拨打FileTypes.Add时,您都要添加新的文件类型。您需要为每种文件类型调用FileTypes.Add一次。