Tienes varias formas de hacerlo, yo normalmente lo hago así:
Tengo una unit de funciones comunes y entre ellas está esta:
Código:
function AbreForm (Cclase : TFormClass; bMostrar: boolean; var Fnombre) : boolean;
(* bMostrar indica si el formulario se visualizará o no *)
var
F : TForm;
begin
result := true;
F := Application.FindComponent (copy(cClase.ClassName,2,255)) as TForm;
if assigned(F) and bMostrar then
begin
F.Show;
end
else
begin
try
Application.CreateForm (Cclase, Fnombre);
if bMostrar then
(Application.FindComponent (copy(cClase.ClassName,2,255)) as TForm).Show;
except
if assigned(TForm(Fnombre)) then
Error(3, TForm(Fnombre).name)
else
Error (3,'');
result := false;
end;
end;
end;
Y la llamada sería algo así:
Código:
AbreForm(TFentradaUsuario,False,FentradaUsuario);
FentradaUsuario.ShowModal;
Si ya está creada (asignada), entonces se abre. Si no lo está, se crea.
También se puede hacer directamente;
Código:
AbreForm(TFentradaUsuario,True,FentradaUsuario);