Ho un modulo principale (padre) MDI e un modulo figlio MDI. Creo il bambino in fase di esecuzione in questo modo:"Impossibile creare il modulo. Nessun modulo MDI è attualmente attivo" Errore
VAR
FrmDereplic: TFrmDereplic;
procedure TMainFrm.Button2Click(Sender: TObject);
begin
FrmDereplic:= TFrmDereplic.Create(MainFrm);
FrmDereplic.Show;
end;
Procedura per riprodurre l'errore:
comincio l'applicazione, si preme il pulsante per creare il bambino, premo il tasto 'x' sulla principale (genitore) modulo per chiudere l'applicazione e ottengo un errore "Impossibile creare il modulo. Nessun modulo MDI è attualmente attivo".
La linea su cui compare l'errore è nel form figlio:
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;
risparmio un sacco di proprietà del form (e di altre proprietà controlli) al file INI. Ma fallisce solo quando provo a salvare fltExtensions.ItemIndex (che è un TFilterComboBox). Se commento quella linea funziona perfettamente.
Qualche idea del motivo per cui tenta di creare un modulo quando ho effettivamente chiuso l'applicazione ?????????
L'OP è arrivata a questa conclusione tre ore prima che tu facessi il tuo post. –
@Andreas - Volevo contrassegnare il mio post come risolto ma StackOverflow mi fa attendere 2 giorni. Comunque, è bello che altre persone confermino la mia soluzione. Significa che è buono. – Ampere
@ Vicens - Siamo spiacenti. È infatti MainForm invece di TMainForm. Ho inserito l'errore quando ho digitato il codice. Nel mio codice il modulo ha un nome diverso. Ho cambiato il suo nome in MainForm per rendere il codice più facile da capire (modulo principale = il genitore del modulo figlio). Ancora una volta mi dispiace. Si prega di notare che il sé non funzionerà !! In realtà è equivalente al mio codice originale (buggy). Perché? Perché Self = MainForm. – Ampere