Hola granodetoro.
Existen varias maneras de lograrlo, te pongo dos formas:
Código Delphi
[-]
function TMDIForm.AssignedMDI(AName:String): boolean;
var
i: integer;
begin
Result:= False;
for i:= 0 to MDIChildCount - 1 do
if MDIChildren[i].Name = AName then Result:= True
end;
Llamada:
Código Delphi
[-]
begin
if AssignedMDI('MDIChild1') then
MDIChild1.BringToFront
else
MDIChild1:= MDIChild1.Create(nil);
end;
Otro forma:
Código Delphi
[-]
procedure TForm1.MostrarChild(AClass: TFormClass);
var
i: Integer;
begin
for i:= 0 to Screen.FormCount -1 do
if Screen.Forms[i] is AClass then
begin
Screen.Forms[i].WindowState:= wsNormal;
Screen.Forms[i].BringToFront;
Exit;
end;
with AClass.Create(Self) do Show;
end;
Llamada:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
MostrarChild(TMDIChild1);
end;
Un saludo.