Tema: Formulario
Ver Mensaje Individual
  #5  
Antiguo 01-10-2018
CarlosReyesg CarlosReyesg is offline
Miembro
 
Registrado: ago 2010
Posts: 21
Reputación: 0
CarlosReyesg Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
Si funciona, gracias
pero he visto que se aplica cuando el formulario es MODAL (ShowModal)
y que en el destroy no puedo usar el form1.free;

la pregunta es...
cuando un formulario no es modal, como lo libero ?

porque cuando hago esto.

Código Delphi [-]
    frmEmisionFacturaD:= TfrmEmisionFacturaD.Create(nil);
    frmEmisionFacturaD.Show;
    frmEmisionFacturaD.Free;

el formulario aparece y al instante desaparece.

para llamar un formulario con "Show" tienes que asignar el evento OnClose y asignar la variable "Action" con "caFree"
Código Delphi [-]
  
  frmEmisionFacturaD:= TfrmEmisionFacturaD.Create(nil);
  frmEmisionFacturaD.Show;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   Action := caFree;
end;

en el caso de usar "ShowModal" yo lo uso de la siguiente manera
Código Delphi [-]
//Ejemplo 1
Application.CreateForm(TFrmMain, FrmMain); ///Esto es igual a FrmMain := TFrmMain.Create(Application)
   try
      FrmMain.ShowModal;
   finally
      FrmMain.DisposeOf; /// Delphi mayores a XE2
      // FreeAndNil(FrmMain);
   end;

  //Ejemplo 2
   Application.CreateForm(TFrmMain, FrmMain);
   try
      if FrmMain.ShowModal = mrOk then // para usarlo asi tienes que asignar la propiedad "ModalResult"
      begin
         ///////////////////////
         ///   Pones codigo que quieras
      end;
   finally
      FrmMain.DisposeOf;
   end;
Responder Con Cita