我有一个带有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之外正常工作。
答案 0 :(得分:6)
如果您使用的是XE2,则应检查项目选项环境块的“用户覆盖”中是否有任何条目。 “包含系统变量”不起作用,没有它,只有用户覆盖的环境变量在EXE启动的环境块中,但是打开/保存对话框需要一些系统变量,如“SystemDrive”和“ SYSTEMROOT”。
或者,您可以安装修复“包含系统变量”选项的IDE Fix Pack。