In un caso simile, avevo risolto con una sola riga di codice per ogni form...

sulle form secondarie alla chiusura invio un messaggio alla MainForm:

Codice PHP:
    // Form1.FormClose:
  
SendMessage (MainForm.HandleWM_USER10);

  
// Form2.FormClose:
  
SendMessage (MainForm.HandleWM_USER20);

  ....

  
// Form30.FormClose:
  
SendMessage (MainForm.HandleWM_USER300); 
Sul MainForm ho un dispatcher dei messaggi:

Codice PHP:
private
    
procedure WMformClose (var msg TMessage); message WM_USER;

implementation;

procedure TMainForm.WMformClose (var msg TMessage);
var
  
FormClosedinteger;
begin
  FormClosed
:= msg.wParam;
  case 
FormClosed of
    1

    
2:
    
// ecc...
  
end;
end
Ciao
FSL