Ver Mensaje Individual
  #2  
Antiguo 07-02-2006
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Reputación: 29
delphi.com.ar Va camino a la fama
Cita:
Empezado por bbjb
Tengo una aplicación con un formulario fsMDIForm, que al pulsar una opción de menu genera un formulario fsMDIChild a través del siguiente código

Código Delphi [-]
If Fchild = NIl Then 
Begin
    Application.CreateForm(TFdevol_cobros,FChild);
    FChild.FreeNotification(Self); 
    FChild.Show; 
    FChild.Free; 
 End;
Si lo crea, pero lo destruye inmediatamente. Recuerda que si el formulario no es modal, el hilo de ejecución no se detiene en el show. Reemplaza todo tu código por:
Código Delphi [-]
If Fchild = nil Then 
begin
  Application.CreateForm(TFdevol_cobros,FChild);
end;


Cita:
Empezado por bbjb
Pués no me crea el formulario auxiliar, sólo lo hace si previamente a la linea Application.Create... coloco esta otra:

Fchild := TFdevol_cobros.Create(Self);
En este caso te queda un form porque estas creando dos instancias de la clase y liberando solo una.

Cita:
Empezado por bbjb
Algo también curioso es que cuando me muestra el formulario hijo, lo hace con unas dimensiones distintas a las establecidas en tiempo de diseño, algo extraño verdad?
No, no es extraño es así. Los MDIChild tiene un default size, que es el tamaño que ves cada vez que se crea uno, si queres que tu TForm no adopte ese tamaño y mantenga el de diseño, puedes cambiar el valor de la propiedad Position, por ejemplo ponerlo en poDefaultPosOnly para que mantenga el tamaño de diseño pero no la posición.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita