Moin Overclocker,
durch das FreeAndNil (ein .Free hätte das gleiche Ergebnis) im OnClose zerstörst Du das Objekt in sich selbst (ein self.Free käme auf das gleiche raus).
Jeder weitere Zugriff auf das Objekt, kann dann, je nachdem, was schon mit dem Speicher passiert ist, zu einem Fehler führen.
Durch das caFree weiss Delphi dann intern, was zu tun ist, und die Fehler werden vermieden.
Wenn ein
MDI-Child geschlossen wird, wird es standardmässig minimiert, ein "normales" Formular hingegen unsichtbar gemacht (ausser es ist das Hauptformular, dann wird die Anwendung geschlossen).