Ver Mensaje Individual
  #4  
Antiguo 30-05-2012
LoPiTaL LoPiTaL is offline
Miembro
 
Registrado: abr 2009
Posts: 168
Reputación: 16
LoPiTaL Va por buen camino
Aquí hay muchas cosas involucradas, y como dice el amigo maeyanes, si no pones un poco de código, no podemos ayudarte más que dando palos de ciego.

Se me ocurre una cosa (así a bote pronto), y es que:

1º) Si los creas a medida que se necesitan, lo más común es usar código del siguiente estilo, para crearlo Y DESTRUIRLO:

Código Delphi [-]
with TMiFormQueNecesito.Create(nil) do begin
  try
    //Lo que hagas con ese form.
    ShowModal(); //o Show o lo que sea...
  finally
    Free;
  end;
end;

Fíjate que el Owner del form es nil, ya que lo destruimos manualmente.

2º) Al cerrar un formulario, pues eso, sólo se cierra, no se destruye. Por tanto, si tienes un botón (o menú item o event handler en general) que haga lo que indicas:

Código Delphi [-]
TForm5.Create(Application).ShowModal;

Al cerrar el form, éste no se destruirá, sólo se cerrará. Se destruirá al salir de la aplicación. Te remito al apartado 1º para ver cómo crearlos y destruirlos de golpe.

3º) Si lo que quieres es que se comporte como se indica en el apartado 2º, entonces deberías guardar el form en una variable y crearlo una única vez:

Código Delphi [-]
  if not assigned(FMiForm) then
    FMiForm:=TForm5.Create(Application);
  FMiForm.ShowModal;

4º) Por supuesto que si creas un form con Owner Application, entonces NO debes destruirlo al cerrar la aplicación. Ya se encargará de eso la VCL. En el ejemplo del apartado anterior, NO debes destruir FMiForm.
Si quieres controlar tú cúando destruirlos, entonces créalos con Owner=nil y al cerrar la aplicación los destruyes.

Espero ayudarte, pero sin más datos, poco más se puede hacer.

Un saludo,
LoPiTaL
Responder Con Cita