Проблема закрытия дочернего 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] then begin // предупреждаем пользователя о возможной потере редактируемых // данных и при нажатии на ОК закрываем окно if not UserSaysOk then CanClose := False; end; end; |