Hola que tal, bueno hace tiempo que trabajo con Forms creados en tiempo de ejecución, pero tratando de optimizar mi codigo he visto algunas formas de crear, mostrar y liberar Forms de diferentes maneras que me han causado un poco de confucion.
Lo que hago (y hasta el momento me ha funcionado) es lo siguiente:
Código Delphi
[-]/* Desde un boton de un FormPrincipal creo y muestro nuevos Forms de la siguiente manera: */ procedure TForm_principal.FormatosClick(Sender: TObject); begin Application.CreateForm(TForm_Imp_Formato, Form_Imp_Formato); Form_Imp_Formato.Show; end; /* Al hacer lo anterior, obviamente quito la linea Application.CreateForm(...) del DPR. Y para liberarlo, lo hago desde el Evento OnClose del Form creado de la sig manera: */ procedure TForm_Imp_Formato.FormClose(Sender: TObject; var Action: TCloseAction); begin Release; end;
Bueno esto funciona bien al menos ahorita para lo que hago, ya que el FormPrincipal va a estar abierto un tiempo indefinido:
*Pueden abrir un FormX y cerrarlo.
*Abrir uno nuevo, FormY y dejarlo abierto.
*Volver a abrir el FormX.
Cuando creo un Form, deshabito el boton que lo crea y lo muestra, asi evito que lo vuelvan crear y mostrar una 2a vez.
Pero ya NO quiero Deshabilitar el boton, si no que si le vuelven a dar Click una 2a vez, valide:
if //ya esta creado y en Show
{
Poner el Focus en Form
}
else //SI no esta creado
{
Crearlo;
Show;
}
Mis dudas son las siguientes:
¿Quisiera saber si hay alguna manera mas optima de crear, mostrar y liberar Forms?.
¿Como se si un Form ya esta creado para hacer la validación que necesito?
De antemano gracias.