Delphi TFileOpenDialog文件类型:如何在运行时更改
在TFileOpenDialog中,我将FileTypes属性设置为由当前文件夹中的选定文件填充的自定义文件列表Delphi TFileOpenDialog文件类型:如何在运行时更改,delphi,filter,openfiledialog,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 F
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属性,对吗?此控件是通用项对话框的包装。文件说明: 此方法必须在显示对话框之前调用,并且只能为每个对话框实例调用一次。显示“公用项”对话框后,无法修改文件类型 因此,在显示对话框后,无法修改文件类型
FWIW,每次调用
FileTypes.Add
都是在添加新的文件类型。您需要调用文件类型。每个文件类型添加一次 此行dlg.FileTypes.Add.DisplayName:=''
添加一种文件类型,此行dlg.FileTypes.Add.FileMask:=msg代码>添加另一个。尝试将与
操作符一起使用:与dlg.FileTypes.Add do begin DisplayName:='';FileMask:=msg;结束代码>谢谢-这将阻止第一个空筛选项。但是不更新文件类型的问题仍然存在。等等,让我直说吧。您正在使用文件类型筛选器仅显示特定文件夹中的特定文件?这不是FileTypes筛选器的用途。FileTyoes筛选器用于TOpenDialog,仅显示特定类型的文件(例如,仅显示图像),以便允许用户更轻松地查找特定文件,并防止用户尝试打开未报告的文件类型。我的目的是从包含“file_A_.csv”、“file_B_.csv”和“file_C_.csv”的文件夹中筛选“file_A_.csv”在用户从筛选的文件中进行选择之前。FilterType选项是迄今为止我找到的唯一方法。我只调用“FileTypes.Add”一次,然后添加由“;”分隔的选定文件组成的日志字符串。此文件类型项看起来不好,但会根据需要进行筛选。-现在我很清楚为什么不能修改文件类型了,谢谢。