Ver Mensaje Individual
  #2  
Antiguo 31-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ricardo_yah.

Una forma práctica de hacerlo es usando referencia de clase. La siguiente función crea el Form si no existe, o lo muestra si está creado:
Código Delphi [-]
procedure TForm1.MostrarChild(AClass: TFormClass);
var
  i: Integer;
begin
  for i:= 0 to Screen.FormCount -1 do  // 0 hasta MDIChild abiertos
    if Screen.Forms[i] is AClass then  // Si está el que buscamos
    begin
      Screen.Forms[i].WindowState:= wsNormal; // a modo normal
      Screen.Forms[i].BringToFront;           // traerlo al frente
      Exit;                                   // encontrado, salir
    end;
  with AClass.Create(Self) do Show;           // crearlo
end;

Ejemplo de llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  MostrarChild(TForm2);
  // MostrarChild(TOtroForm);
  // MostrarChild(...
end;

Saludos.
Responder Con Cita