Hola fwhite.
No es necesario invocar al método
Show ya que si la propiedad
FormStyle esta declarada como
fsMDIChild, la propiedad
Visible se pone a
True automáticamente.
Si llamas a la creación desde la instancia (frMDIChild) como en tu código, te va a dar error. Hay que llamarla desde la clase (TfrMDIChild). Por otro lado, si utilizás
Free, al ser la ventana no modal, retorna inmediatamente y por supuesto con
Free se libera y por tanto cierra al instante de ser abierta.
Aunque existen otros modos, te pongo un ejemplo de como podés mostrarla.
MDIForm:
Código Delphi
[-]
...
uses Unit2;
procedure TfrMDIForm.Button1Click(Sender: TObject);
begin
if not Assigned(frMDIChild) then TfrMDIChild.Create(Self); end;
MDIChild:
Código Delphi
[-]
...
procedure TfrMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
procedure TfrMDIChild.FormDestroy(Sender: TObject);
begin
frMDIChild:= nil; end;
Por último te pongo un enlace que te va a aclarar el uso de MDI
Aplicaciones MDI
Edito: Me olvidaba... Quitá el form MDIChild de la lista: Proyect -> Options -> Forms -> Auto-create forms:
Saludos.