有一个关于TSaveDialog和[ofOverwritePromt]的想法在Delphi overwrite existing file on save dialog的简单问题。TSaveDialog文件扩展名和[ofOverwritePromt]问题
所以我的问题/场景如下:
- 我有一个
TSaveDialog
- 我设置
[ofOverwritePromt]
在Options
- 我设置了过滤器“PDF(* .PDF)| * .PDF “
- 筛选指标被设定为1
所以现在我执行程序并调用对话框。如果我的鼠标或键盘选择(而无需键入)该文件存在,那么保存对话框,询问我的消息覆盖:
但是,如果我做同样的动作,但输入类似“测试”的文件名,而不指定保存对话框没有确认覆盖的扩展名。 我知道实际上它会返回另一个文件名“C:\ Users \ xxx \ Desktop \ Test”而不是“C:\ Users \ xxx \ Desktop \ Test.pdf”。这是一种不是很好,如果对话框,要求您保存文件,但你需要键入扩展.. 所以平时我处理这样的:
repeat
{ Ask for the file if not silent }
if not dlgSave.Execute then
Exit;
{ Read the filename from the save dialog }
LTempFile := dlgSave.FileName;
if not SameText(ExtractFileExt(LTempFile), '.pdf') then
begin
{ Add the extension }
LTempFile := LTempFile + '.pdf';
{ As we bypassed the overwrite check in dialog do it now }
if FileExists(LTempFile) then
if MsgWarn(Format('%s already exists. Replace?', [ExtractFileName(LTempFile)]), mbOKCancel) <> mrOk then
Continue;
end;
Break;
until False;
有没有办法做到这一点更优雅没有自定义标准对话框?
非常感谢!我怎么会错过这个属性......也许是因为这是度假前的最后一天:D –
不客气。如果你很高兴,请将答案标记为已接受。 – Dsm