Delphi 如何在保存对话框中覆盖已有文件

7
我正在使用TSaveDialog组件从按钮点击保存文件。然而,我遇到了在现有文件名上保存的问题。通常,在Windows中想要覆盖现有文件时,会弹出一个消息框询问您是否真的要覆盖该文件。但是,TSaveDialog组件并不会这样做,它将继续写入文件而不进行询问。
我希望有一个TSaveDialog函数或事件可以处理这个问题,但我没有看到任何看起来像是处理此问题的东西。所以可能是我还没有找到正确的方法。如果有事件,我可以使用。
if FileExists(saveDialog.FileName) then
  //and so forth

但是TSaveDialog有几个事件,包括OnCanClose、OnClose、OnFolderChange、OnIncludeItem、OnSelectionChange、OnShow、OnTypeChange等......

我的问题是,如何使用TSaveDialog组件弹出一个消息框,询问用户是否要覆盖现有文件。谢谢。

1个回答

18

在执行对话框之前,使用 saveDialog.Options := saveDialog.Options + [ofOverwritePrompt]。然后它将询问用户是否要覆盖文件。

但您知道 TSaveDialog 实际上并不会 保存 文件吗?它只是显示标准的 Windows 文件保存对话框,然后返回用户选择的路径。您必须使用此路径手动保存文件,例如:MyStringList.SaveToFile(saveDialog.FileName)


1
@Andreas 哎呀!这一直是一个属性?我就有一种感觉它是某个简单的东西。 我确实理解你回答的第二部分。我已经让那个功能正常工作了。感谢你的帮助和快速响应。 - AfterImage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接