Тогда нам нужно убрать запрос на сохранение в случае "ручного" сохранения файла, когда пользователь сам выбрал необходимый пункт меню. Изменяем следующие процедуры сохранения файла.
Процедура "Открыть"
procedure TMainForm.N3Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
ChildForm:=TChildForm.Create(Self);
ChildForm.Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
ChildForm.Caption:=OpenDialog1.FileName;
ChildForm.Memo1.Tag:=0; // добавить
end;
end;
Процедура "Сохранить как..."
procedure TMainForm.N5Click(Sender: TObject);
begin
if MDIChildCount=0 then Exit;
SaveDialog1.Title:='Сохранить файл как...';
if SaveDialog1.Execute then
begin
(ActiveMDIChild as TChildForm).Memo1.Lines.SaveToFile(SaveDialog1.FileName);
(ActiveMDIChild as TChildForm).Caption:=SaveDialog1.FileName;
(ActiveMDIChild as TChildForm).Memo1.Tag:=0; // добавить
end;
end;
Процедура "Сохранить"
procedure TMainForm.N4Click(Sender: TObject);
begin
if MDIChildCount=0 then Exit;
if (ActiveMDIChild as TChildForm).Caption='НОВЫЙ' then
N5Click(Sender) else
begin // добавить
(ActiveMDIChild as TChildForm).Memo1.Lines.SaveToFile((ActiveMDIChild as TChildForm).Caption);
(ActiveMDIChild as TChildForm).Memo1.Tag:=0; // добавить
end; // добавить
end;
Добавленные строки отделены комментарием "//добавить".
А теперь непосредственно создаем процедуру OnCloseQuery для окна ChildForm.
procedure TChildForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
Var Res:Integer; // переменная для хранения результата выбора действия
begin
if Memo1.Tag=0 then // если не сохранять, то 1, иначе - 2
begin // 1:
CanClose:=true; // можно закрыть окно