Советы по Delphi

       

Проблема закрытия дочернего MDI-окна


Не пытайтесь разрушить форму из самой себя. Присвоение параметру action значения caFree в обработчике события формы OnClose заставит родительское окно самому уничтожить дочернюю форму.

Для предотвращения закрытия формы необходимо обрабатывать событие OnCloseQuery (к примеру, в момент редактирования таблицы или для корректного сохранения вновь введенных значений на дочерней MDI-форме).

Родительское MDI-окно должно иметь пункт меню для возможности закрытия активного в текущий момент дочернего окна. Вот примерный код, обрабатывающий нажатие данного пункта меню:

ActiveMDIChild.Close;

Попробуйте следующее:

procedure TFrmServers.FormClose(Sender:TObject; var
Action:TCloseAction);
begin
Action := caFree;end;

procedure TFrmServers.FormDestroy
begin
Table1.Close;end;

procedure TFrmServers.FormCloseQuery
begin
if
table1.state in [dsEdit,dsInsert] thenbegin// предупреждаем пользователя о возможной потере редактируемых// данных и при нажатии на ОК закрываем окноif not UserSaysOk then CanClose := False;end;end;

[000169]



Содержание раздела