He probado en BDS 2006 lo que dice Lepe, y NO me dá error de memoria ninguno. En el evento OnClose del Form2 he puesto Action := caFree y he definido Application como dueño de Form2 al crearlo en Form1. Funciona correctamente y no me da ningún error.
Volviendo al tema de utilizar el evento OnActivate para la utilidad que venimos discutiendo.
Yo utilizo bastante el evento OnActivate para muchas cosas que no puedo hacer en eventos como el OnCreate u OnShow. Si tengo claro que sólo tengo que ejecutar el código necesario una única vez, lo pongo en el evento OnActivate y además le añado :
Código Delphi
[-]procedure TForm1.FormActivate(Sender: TObject);
begin
...
Self.OnActivate := nil;
end;
De esta manera no habría inconveniente alguno en crear al MDIChild en el evento OnActivate del Form1.
También tengos varias ocasiones en las que no puedo actuar de esta manera y hago uso del método AfterShow que explicó Roman en su momento y que también funciona perfectamente y recomiendo conocerlo.
Saludos a tod@s !
