在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属性?
答案 0 :(得分:1)
此控件是公共项目对话框的包装器。 IFileDialog::SetFileTypes
的文档说:
必须在显示对话框之前调用此方法,并且只能为每个对话框实例调用一次。显示“公共项目”对话框后,无法修改文件类型。
因此,在显示对话框后,您无法修改文件类型。
FWIW,每次拨打FileTypes.Add
时,您都要添加新的文件类型。您需要为每种文件类型调用FileTypes.Add
一次。