Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TFileOpenDialog文件类型:如何在运行时更改_Delphi_Filter_Openfiledialog - Fatal编程技术网

Delphi TFileOpenDialog文件类型:如何在运行时更改

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

在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属性,对吗?

此控件是通用项对话框的包装。文件说明:

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

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


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”一次,然后添加由“;”分隔的选定文件组成的日志字符串。此文件类型项看起来不好,但会根据需要进行筛选。-现在我很清楚为什么不能修改文件类型了,谢谢。