0

我正在使用一个非常常用的 SaveAs 对话框(在 Delphi Win32 XE2 中,系统是 Win 7 /64),设置 OFN_OVERWRITEPROMPT (或 Delphi 包装器的等效项dlgSave.Options := [ofPathMustExist, ofOverwritePrompt];。所以如果我选择一个现有文件,对话框会要求确认覆盖文件.

一切正常,除了一件愚蠢的事情:当我选择一个文件,然后在同一个对话框中删除该文件,然后按 OK,对话框仍然询问是否可以覆盖(已经删除的)文件。显然,该对话框会根据预加载列表而不是文件系统检查文件是否存在。这个问题不是 Delphi 特有的,即使在记事本中也可以很容易地显示出来:

  • 运行记事本.exe
  • 输入一些文字
  • 另存为文件
  • 再次单击文件另存为,在另存为对话框中执行以下操作:
    • 单击同一文件以选择它,
    • 右键单击并删除文件,
    • 单击确定。

该文件不再存在,但您仍然会收到覆盖提示。

任何人都可以建议一种方法来解决这个小但烦人的 Windows 错误吗?我假设可能需要一些消息处理/回调/挂钩?一种在模式 SaveAs 对话框打开时检查代码中文件存在的方法?

4

0 回答 0