var
sd: TSaveDialog;
od: TOpenDialog;
begin
sd:= TSaveDialog.Create( self );
sd.Options:= [ofCreatePrompt]; // Has no effect: no typed-in filename triggers this
sd.Execute();
sd.Free;
od:= TOpenDialog.Create( self );
od.Options:= [ofCreatePrompt]; // When trying to OPEN a not yet existing file
od.Execute();
od.Free;
procedure TForm1.SaveDialog1CanClose(Sender: TObject; var CanClose: Boolean);
begin
if not FileExists( SaveDialog1.FileName ) then begin
// Reject closing the window for every choice but "Yes"
CanClose:= MessageBox( SaveDialog1.Handle, 'Create it?', 'Does not exist yet', MB_YESNO )= IDYES;
end;
end;
1条答案
按热度按时间6fe3ivhb1#
OFN_CREATEPROMPT
,对应于TFileSaveDialog
的fdoCreatePrompt
或TSaveDialog
的ofCreatePrompt
)仅适用于打开对话框,不适用于保存对话框。在
TFileOpenDialog
上尝试同样的操作,您会得到该提示。其他对话框类型的证明:
为什么?从逻辑上讲,在大多数情况下保存文件时,您都希望创建一个新文件(选择一个不存在的文件名)-为什么在您已经有“* 保存 *”按钮时还需要再次确认?保存文件意味着创建了文件。确认覆盖/更改现有文件的情况不太常见。
如果你还想要这样的行为,你必须自己去做:使用
OnCanClose
事件,然后检查到目前为止选择/输入的文件名: