Tengo un formulario MDI principal (principal) y un formulario secundario MDI. Creo que el niño en tiempo de ejecución así:"No se puede crear formulario. No hay formularios MDI actualmente activos" error
VAR
FrmDereplic: TFrmDereplic;
procedure TMainFrm.Button2Click(Sender: TObject);
begin
FrmDereplic:= TFrmDereplic.Create(MainFrm);
FrmDereplic.Show;
end;
Pasos para reproducir el error:
comienzo a la aplicación, pulsar el botón para crear el niño, pulsar el botón de 'x' en la principal (padre) formulario para cerrar la aplicación y aparece el mensaje "No se puede crear formulario. No hay formularios MDI actualmente activos".
La línea en la que aparece el error está en el formulario secundario:
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;
puedo guardar un montón de propiedades del formulario (y propiedades de otros controles) en el archivo INI. Pero solo falla cuando intento guardar fltExtensions.ItemIndex (que es un TFilterComboBox). Si comento esa línea, funciona perfectamente.
¿Alguna idea de por qué intenta crear un formulario cuando realmente cerré la aplicación ?????????
El OP llegó a esta conclusión tres horas antes de que realizara su publicación. –
@Andreas - Quería marcar mi publicación como resuelta pero StackOverflow me hace esperar 2 días. De todos modos, es bueno que otras personas confirmen mi solución. Significa que es bueno. – Ampere
@ Vicens - Lo siento. De hecho, es MainForm en lugar de TMainForm. Ingresé el error cuando escribí el código. En mi código, el formulario tiene un nombre diferente. Cambié su nombre a MainForm para hacer que el código sea más fácil de entender (formulario principal = el padre del formulario hijo). Lo siento de nuevo. Tenga en cuenta que Self no funcionará. En realidad es equivalente a mi código original (con errores). ¿Por qué? Porque Self = MainForm. – Ampere