У меня есть основная (родительская) форма MDI и дочерняя форма MDI. Я создаю ребенок во время выполнения, как это:«Невозможно создать форму. В настоящее время нет форм MDI» Ошибка
VAR
FrmDereplic: TFrmDereplic;
procedure TMainFrm.Button2Click(Sender: TObject);
begin
FrmDereplic:= TFrmDereplic.Create(MainFrm);
FrmDereplic.Show;
end;
Шагов для воспроизведения ошибки:
я запустить приложение, жму на кнопку, чтобы создать ребенок, я нажимаю на кнопку «х» на главное (родительский) формы, чтобы закрыть приложение, и я получаю сообщение «Невозможно создать форму. В настоящее время MDI-формы не активны».
Линия, на которой появляется ошибка в дочерней форме:
procedure TFrmDereplic.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
procedure TFrmDereplic.FormDestroy(Sender: TObject);
VAR MyIniFile: TCubicIniFile;
begin
MyIniFile:= TCubicIniFile.Create(AppINIFile);
TRY
with MyIniFile DO
begin
if WindowState<> wsMaximized then
begin
// save form's screen pos
...
end;
WriteInteger ('Dereplicator', 'fltExtensions', fltExtensions.ItemIndex); <----- HERE
FINALLY
FreeAndNil(MyIniFile);
END;
end;
я экономлю много свойств формы (и других контролируют свойства) в файл INI. Но он только терпит неудачу, когда я пытаюсь сохранить fltExtensions.ItemIndex (который является TFilterComboBox). Если я прокомментирую эту строку, она отлично работает.
Любая идея, почему она пытается создать форму, когда я фактически закрыл приложение ?????????
ОП пришел к такому выводу за три часа до того, как вы сделали свой пост. –
@Andreas - Я хотел отметить свое сообщение как решенное, но StackOverflow заставляет меня ждать 2 дня. Во всяком случае, приятно, что другие люди подтверждают мое решение. Это значит, что это хорошо. – Ampere
@ Vicens - Извините. Это действительно MainForm вместо TMainForm. Я ввел ошибку, когда набрал код. В моем коде форма имеет другое имя. Я изменил его имя на MainForm, чтобы сделать код более понятным (основная форма = родительская дочерняя форма). Еще раз извините. Обратите внимание, что Self не будет работать! Это фактически эквивалентно моему оригинальному (багги) коду. Зачем? Потому что Self = MainForm. – Ampere