【发布时间】:2012-04-01 10:47:52
【问题描述】:
我有一个带有 TSaveDialog 的表单。当调用 Execute 函数时,从 IDE 运行时它不会弹出。它在独立运行时确实弹出。对其进行更多测试,我发现所有 TSave/TOpen 对话框都不起作用。不工作意味着 Execute 返回False 而没有弹出窗口(请参阅更新的代码示例:总是弹出消息“False”而前面没有对话框)。 其他对话框(字体/颜色/等)确实工作。
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute
then ShowMessage ('True')
else ShowMessage ('False');
end;
在不调试的情况下运行时,对话框都不会出现。选择 Release 或 Debug 配置也无关紧要。
显然 IDE 做了一些奇怪的事情。表单上有两个 TSaveDialog 组件,它们都显示相同的行为。
知道有什么问题吗?
Update 1在 Windows 7 上使用 Delphi XE。使用 TSaveDialogs 的其他项目工作正常。
更新 2 发现关于 TSaveDialog 的原始问题适用于所有 TSave/TOpen 对话框。已编辑问题以包含此知识。
更新 3 我发现这个 link 有类似的错误。但是,我检查了注册表,但找不到上述的可执行文件。并且将兼容性更改为 XP 的提示不适用于恕我直言,因为 TSaveDialog 在 IDE 之外可以正常工作。
【问题讨论】:
-
如果您只使用 savedialog 创建另一个应用程序,IDE 的行为方式是否相同?
-
可能是一个 shell 扩展,在调试器下运行时会卡住。我也经历过类似的。尝试干净的 Windows 安装。
-
还有什么操作系统版本?它可能与 Windows shell 扩展交互有关。
-
@DavidHeffeman,假设它是一个 shell 扩展噱头,它将适用于从 IDE 运行的所有项目,而不仅仅是这个。我测试了其他项目,它们运行良好。
-
您不能检查 Debug 中与 Release 不同的所有设置吗?来自“Base”的更改值以粗体显示。应该不难找到它们。
标签: delphi tsavedialog