Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2018
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Formulario

buenas noches
tengo un modulo de facturacion donde invoco a la pantalla de ingreso de datos de esta manera

Código Delphi [-]
procedure TfrmEmisionFactura.btnAgregaClick(Sender: TObject);
begin
  p_opcion := 0;
  While p_Opcion = 0 do
  Begin
    frmEmisionFacturaD:= TfrmEmisionFacturaD.Create(nil);
    frmEmisionFacturaD.ShowModal;
  End;
end;

y en el formulario que invoco hay una opcion para agregar articulos y lo invoco de la siguiente manera

Código Delphi [-]
procedure TfrmEmisionFacturaD.btnAgregaClick(Sender: TObject);
begin
  _accion := 0;
  While _Accion = 0 do
  Begin
    CdsDetalle.Append;
    frmEmisionFacturaDDato := TfrmEmisionFacturaDDato.Create(nil);
    frmEmisionFacturaDDato.FormStyle := fsNormal;
    frmEmisionFacturaDDato.Visible := False;
    frmEmisionFacturaDDato.ShowModal;
  End;
end;

cuando ejecuto el programa funciona a la perfeccion la primera vez

luego, cuando grabo la factura se invoca el formulario "frmEmisionFacturaD" (se abre con normalidad)

pero sucede algo curioso, el campo tipo de documento no recibe el foco, hasta que yo presione alguna tecla
y luego cuando quiero agregar productos aparece el mensaje que adjunto.


PERO

si al momento de invocar el formulario "frmEmisionFacturaD" quitandole en el programa el "bucle"

Código Delphi [-]
While p_Opcion = 0 do
  Begin
  end..

no me aparece ningun error


en el destroy agrego lo siguiente en cada uno de los formularios
Código Delphi [-]
frmEmisionFacturaD := nil;
Código Delphi [-]
frmEmisionFacturaDDato := nil;


alguien tiene alfguna idea de lo que sucede?
Imágenes Adjuntas
Tipo de Archivo: jpg Error.jpg (180,3 KB, 12 visitas)
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 30-09-2018
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 73
Poder: 16
lucho6007 Va por buen camino
Código Delphi [-]
procedure TfrmEmisionFactura.btnAgregaClick(Sender: TObject); begin   p_opcion := 0;   While p_Opcion = 0 do   Begin     frmEmisionFacturaD:= TfrmEmisionFacturaD.Create(nil);     frmEmisionFacturaD.ShowModal;
    frmEmisionFacturaD.Free; 
  End; end;


Te esta factando liberar el formulario, no hace falta poner el nil en el Destroy


Saludos,
Responder Con Cita
  #3  
Antiguo 30-09-2018
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
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.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 01-10-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje

frmEmisionFacturaD:= TfrmEmisionFacturaD.Create(nil);
frmEmisionFacturaD.Show; // Lo muestras
frmEmisionFacturaD.Free; // Lo eliminas.

el formulario aparece y al instante desaparece.
Por eso.
Responder Con Cita
  #5  
Antiguo 01-10-2018
CarlosReyesg CarlosReyesg is offline
Miembro
 
Registrado: ago 2010
Posts: 21
Poder: 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
  #6  
Antiguo 01-10-2018
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
me quedo claro, gracias.
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Formulario Dinámico vs Formulario en Diseño? Maniches Varios 11 23-10-2017 18:49:50
Repintar Formulario Padre al Mover Formulario Modal juniorSoft FireMonkey 6 11-03-2017 21:23:30
Mostrar un Formulario desde un Formulario Modal elcharlie Varios 0 08-10-2013 13:46:19
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo jzginez OOP 5 22-06-2007 22:40:51
pasar datos de un formulario vista a cualquier formulario @-Soft OOP 2 28-09-2004 22:56:01


La franja horaria es GMT +2. Ahora son las 15:04:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi