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 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.