Hola Alex,
en tu método hay un problema fundamental y es que estás verificando si
'frmHijo' está asignado, pero esa es una variable local no inicializada.
O bien hacés 'frmHijo' un atributo de la clase TForm1, con lo cual
tendrías que quitar la declaración de variable y todo Ok.
O buscás entre las pantallas hijas de Form1:
begin
frmHijo:=nil;
for i:=0 to MDIChildCount-1 do
begin
if MDIChildren[i] is TfrmHijo then
begin
frmHijo:=MDIChildren[i];
break;
end;
end;
if Assigned( frmHijo ) then
begin
if frmHijo.WindowState = wsMinimized then
frmHijo.WindowState := wsNormal
else
frmHijo.BringToFront;
end
else
frmHijo := TfrmHijo.Create( Application );
end;
--- En DesarrolloDelphi@..., "Alex" <animefanatico@...>
escribió:
>
> Hola a todos los del Foro,
>
> Hace unos dias que estoy luchando con un pedazo de codigo que es
de principiantes y la verdad es que no se porque no anda. La idea es
que tengo un formulario MDI el cual tiene formularios hijos, pero no
quiero que cree siempre un formulario hijo nuevo cada vez que lo
llamo, sino que quiero que si lo tengo minimizado lo restaure o bien,
si esta atras de otros formularios lo traiga al frente, en base a
esto, hice lo siguiente:
> implementation
> {$R *.dfm}
> uses ufrmHijo ;
> procedure TForm1.Button1Click(Sender: TObject);
> var
> frmHijo : TfrmHijo ;
> begin
> if Assigned( frmHijo ) then
> if frmHijo.WindowState = wsMinimized then
> frmHijo.WindowState := ws
> frmHijo.WindowState := wsNormal
> else
> frmHijo.BringToFront
> else
> frmHijo := TfrmHijo.Create( Application );
> end;
>
> Al formulario hijo, en el evento onclose, asigno la variable Action
:= caFree. Ahora cuando ejecuto el procedimiento, no me abre ninguna
ventana. Hay algo que estoy haciendo mal o me esta faltando algo?
>
> Agradezco la ayuda de antemano,
>
> Saludos,
> Alex.
>