【问题标题】:Standard dialog does not popup不弹出标准对话框
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 我应该提到使用 Delphi XE,问题已更新。我认为 IDE Fix Pack 不适用于这种情况?
  • 无论如何,您的网站读起来很有趣。我不知道 Delphi 是个定时炸弹 :-)。我安装了 IDE Fix pack 并查看它是否改善了 Delphi 体验。谢谢你指点我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 2012-06-07
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
相关资源
最近更新 更多