if SaveDialog.Execute then
begin
if FileExiste(SaveDialog.Filename) then
begin
if MessageBox(0, '文件已存在,是否覆盖', 'information', MB_OKCANCEL) = MB_OK then
Memo1.Lines.SaveToFile(SaveDialog.FileName) //此时SaveDialog已经关闭, 当选择取消时候,还得重新打开saveDialog .如何不关闭,可以直接重新在SaveDialog中输入文件名.
....
end;
end;
4 个解决方案
#1
begin
while SaveDialog1.Execute do
begin
if FileExists(SaveDialog1.Filename) then
begin
if MessageBox(0, '文件已存在,是否覆盖', 'information', MB_OKCANCEL) = MB_OK then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
break;
end;
end
else
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
break;
end;
end;
end;
这样就可以了
#2
procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.SaveDialog1CanClose(Sender: TObject; var CanClose: Boolean);
begin
if FileExists(SaveDialog1.FileName) then
CanClose:=MessageBox(0,'文件已存在,是否覆盖','information',MB_OKCANCEL)=MB_OK;
end;
#3
楼上的方法虽然在存在文件的提示时按取消,能提供再次输入的机会,但是,那个循环实质是再次打开保存对话框的。而楼主的要求是“当选择取消时候,还得重新打开saveDialog .
如何不关闭,可以直接重新在SaveDialog中输入文件名”。
#4
D7不知道,现在直接用XE2了,在Option中有个ofOverwritePromt属性,设置成ture即可
#1
begin
while SaveDialog1.Execute do
begin
if FileExists(SaveDialog1.Filename) then
begin
if MessageBox(0, '文件已存在,是否覆盖', 'information', MB_OKCANCEL) = MB_OK then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
break;
end;
end
else
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
break;
end;
end;
end;
这样就可以了
#2
procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
procedure TForm1.SaveDialog1CanClose(Sender: TObject; var CanClose: Boolean);
begin
if FileExists(SaveDialog1.FileName) then
CanClose:=MessageBox(0,'文件已存在,是否覆盖','information',MB_OKCANCEL)=MB_OK;
end;
#3
楼上的方法虽然在存在文件的提示时按取消,能提供再次输入的机会,但是,那个循环实质是再次打开保存对话框的。而楼主的要求是“当选择取消时候,还得重新打开saveDialog .
如何不关闭,可以直接重新在SaveDialog中输入文件名”。
#4
D7不知道,现在直接用XE2了,在Option中有个ofOverwritePromt属性,设置成ture即可