Ver Mensaje Individual
  #2  
Antiguo 01-03-2009
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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);
Responder Con Cita