标准对话框不会弹出

时间:2012-04-01 10:47:53

标签: delphi tsavedialog

我有一个带有TSaveDialog的表单。调用Execute函数时,从IDE运行时不会弹出。运行独立时确实弹出。稍微测试一下,我发现所有TSave / TOpen对话框都不起作用。不工作意味着Execute在没有弹出窗口的情况下返回False(请参阅更新的代码示例:始终弹出消息'False'而不是在Dialog之前)。 其他对话框(字体/颜色/等)执行工作。

procedure TForm1.Button1Click(Sender: TObject);
begin
   if OpenPictureDialog1.Execute
      then ShowMessage ('True')
      else ShowMessage ('False');
end;

当没有调试运行时,对话框也不会出现。选择Release或Debug配置也无关紧要。

显然IDE做了一些奇怪的事情。表单上有两个TSaveDialog组件,两者都显示相同的行为。

知道出了什么问题吗?

在Windows 7上使用Delphi XE

更新1 。使用TSaveDialogs的其他项目工作正常。

更新2 发现有关TSaveDialog的原始问题适用于所有TSave / TOpen对话框。已编辑问题以包含此知识。

更新3 我发现此link出现类似错误。但是,我检查了注册表,但找不到提到的可执行文件。并且改变与XP的兼容性的提示不适用于imho,因为TSaveDialog在IDE之外正常工作。

1 个答案:

答案 0 :(得分:6)

如果您使用的是XE2,则应检查项目选项环境块的“用户覆盖”中是否有任何条目。 “包含系统变量”不起作用,没有它,只有用户覆盖的环境变量在EXE启动的环境块中,但是打开/保存对话框需要一些系统变量,如“SystemDrive”和“ SYSTEMROOT”。

或者,您可以安装修复“包含系统变量”选项的IDE Fix Pack