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.