Delphi 5 TopEndDialog选项不起作用

Delphi 5 TopEndDialog选项不起作用,delphi,options,topendialog,Delphi,Options,Topendialog,我看到的每一处都显示将选项设置为opendialog.options:=[ofAllowMultiSelect];我所在的平台不允许我使用[],但是当我使用()时没有错误。出于某种原因,这个选项对我来说永远不起作用。我觉得我已经尝试了所有我在网上搜索的东西,但是我没有发现有人遇到类似的问题 这也很奇怪,有时我发现设置选项(OfeEnableSizing)或类似的选项(OfedereAddonly)实际上有时需要并且有效(wierd),但OfallwmultiSelect从未对我有效,它是我唯一需

我看到的每一处都显示将选项设置为opendialog.options:=[ofAllowMultiSelect];我所在的平台不允许我使用[],但是当我使用()时没有错误。出于某种原因,这个选项对我来说永远不起作用。我觉得我已经尝试了所有我在网上搜索的东西,但是我没有发现有人遇到类似的问题

这也很奇怪,有时我发现设置选项(OfeEnableSizing)或类似的选项(OfedereAddonly)实际上有时需要并且有效(wierd),但OfallwmultiSelect从未对我有效,它是我唯一需要的。我试着像opendialog.ofallowmultiselect:=true那样做,就像其他平台一样,但这也会出错


任何想法都是非常可取的。

当然不行。您必须使用
[]
创建一个集合

begin
  opendialog := TFileOpenDialog.Create(this);
  opendialog.options := (ofAllowMultiSelect);

  // Display the open file dialog
  if not opendialog.Execute then
    begin
        ShowMessage('Open file was cancelled');
      path := '';
    end
  else
    begin
        for i := 0 to openpic.Files.Count-1 do
          ShowMessage(openpic.Files[i]);
      end;
  opendialog.free;
如果出于某种奇怪的原因,您无法键入
[
]
,您可以使用
(.

OpenDialog.Options := [ofAllowMultiSelect];
此外(但有一点不相关),您应该始终使用
try..finally

OpenDialog.Options := (.ofAllowMultiSelect.);

当我运行脚本时,执行[]会给我一个无效的变量类型转换。我试着去(…),但编译器在我尝试执行它之前就给了我错误?您使用的是什么版本的Delphi?我的帮助文件显示为5,但可能是6@Michael:那太奇怪了。我认为你的代码有一个问题,它不是上面代码片段的一部分……是的,我不确定这是否奇怪,如果我将选项包含在一个集合中,尽管存在无效的变量类型错误,它们仍然可以工作。真正奇怪的是,唯一一个不起作用的选项是AllowMultiSelect1)您是在使用
TopEndDialog
还是
TFileOpenDialog
?后者甚至不存在于Delphi5中。2) 这是什么?当然你是指
self
?你所说的“你所在的平台”到底是什么意思?编译器会允许你执行
opendialog.options:=(ofAllowMultiSelect)
,这也让我感到惊讶,因为这显然是错误的(类型不匹配)。它应该说类似于
[DCC Error]Unit4.pas(32):E2010不兼容类型:“TOpenOptions”和“TOpenOption”
-1,用于发布虚假问题。Delphi5没有TFileOpenDialog,TFileOpenDialog不接受
fo
选项;它采用
fdo
值。如果这是真正的Delphi5代码,则不会涉及任何变体。您使用的是某种脚本语言,而不是真正的Delphi。老实说你在用什么,你会得到更好的答案,因为人们不会浪费时间去弄清楚所有的废话。@Andreas,一种不遵循真正的Delphi语法规则的脚本语言,可以接受各种奇怪的事情。另一方面,我似乎回忆起编译器确实会接受
enum
的某些情况,其中期望的是
枚举集。想到
StringReplace
函数。(或者它接受
foo
,其中需要
foo
数组。)
OpenDialog := TFileOpenDialog.Create(nil); // or self -- there is no 'this'
try
  // Do stuff
finally
  OpenDialog.Free;
end;