Ver Mensaje Individual
  #1  
Antiguo 10-05-2005
jaaron jaaron is offline
Registrado
 
Registrado: abr 2005
Ubicación: Puebla, Mexico.
Posts: 7
Reputación: 0
jaaron Va por buen camino
Question Como libero una forma que llame con un show

Tengo un problema que posiblemente sea muy basico pero es que normalmente muestro las formas de forma modal y al final las elimino con un free, pero estoy programando una aplicacion en la cual necesito crear y mostrar las formas no-modales para que el usuario pueda cambiar de una forma a otra, el problema es que la aplicacion va a estar creando y eliminando las formas de forma dinamica por lo que me interesa saber como las mando eliminar ya que al ponerle el free y al mandarlas crear, me toma como si ya estuvieran creadas y se salta a otras partes del codigo

Código Delphi [-]
  procedure TFmenuprincipal.BPRECIOSClick(Sender: TObject);
  begin
     if not(Assigned(Fmenuprecios)) then  //se checa para no volverla a crear
        Fmenuprecios:=TFmenuprecios.Create(Self);
  
     Fmenuprecios.Show;
     Fmenuprecios.SetFocus;            
     Fmenuprecios.Pmenu.Left:=0;
     Fmenuprecios.Pmenu.Height:=50;
  end;

Este es el codigo con el que creo la forma, y pues ya en el OnClose de la forma que mande llamar esta este codigo:

Código Delphi [-]
  procedure TFmenuprecios.FormClose(Sender: TObject;  var Action:TCloseAction);
  begin
     Action:=caFree;
  end;

la cuestion es que cuando se intenta volver a crear ya no entra al Create toma como si ya estuviera creada y se salta al Show y me manda este error:

"Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00000000. Read of address 0000000000. Process stopped. Use Step or Run to continue."

quiero suponer que es porque no libera la forma completamente y no vuelve a crear una nueva y cuando cae al Show o donde le mando las corrdenadas no hay nada creado, o no se, ahi si alguien me puede echar la mano se los agradezco, se que la opcion mas facil seria ocultar la forma, pero se van a crear muchas formas por lo que si necesito estarlas creando y destruyendo, de antemano gracias.
Responder Con Cita