Yo uso esta función simplona que crea un formulario MDI o lo muestra si ya existe:
Código Delphi
[-]
Type
TFormClass = class of TForm;
Procedure CreateMDI(Owner:TForm;BaseClass:TFormClass; FormVar:TForm);
var
found:Boolean;
i:integer;
begin
found := FAlse;
For i:= 0 To Owner.MDIChildCount-1 Do
If Owner.MDIChildren[i] is BaseClass Then
Begin
Owner.MDIChildren[i].Show;
found := True;
End;
if not found then
Application.CreateForm(BaseClass,FormVar);
end;
forma de Uso:
Código Delphi
[-]
CreateMDI(Application.MainForm, TMiForm, FMiForm);
Y voilá...reconozco que esta medio chapuceron pero hasta ahora me ha funcionado bien y simple, si la ventana no existe la crea, si ya existe la muestra.