Ver Mensaje Individual
  #8  
Antiguo 17-03-2010
rmora rmora is offline
Miembro
 
Registrado: may 2006
Posts: 10
Reputación: 0
rmora Va por buen camino
Efectivamente Casimiro, Los formularios los creo Yo segun este codigo:

If not Assigned(FrmVentasClienteExpress) then
FrmVentasClienteExpress := tFrmVentasClienteExpress.Create(Self);

Luego lo muestro y posteriormente en el Close desearia liberar la memoria

Si lo hago segun este codigo me despliega un mensaje de "access violation":

procedure TFrmVentasClienteExpress.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
FrmVentasClienteExpress.Free;
FrmVentasClienteExpress := Nil;
end;

Pero si lo hago de esta manera funciona:

procedure TFrmVentasClienteExpress.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
FrmVentasClienteExpress := Nil;
FrmVentasClienteExpress.Free;
end;

No se si de esa manera el Free posterior al nil esta sobrando osea dejar algo asi:

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


Tambien estuve utilizando este codigo:

If not Assigned(FrmVentasClienteExpress) then
FrmVentasClienteExpress := tFrmVentasClienteExpress.Create(Self);
Try
FrmVentasClienteExpress.ShowModal;
finally
FrmVentasClienteExpress.Free;
FrmVentasClienteExpress := Nil;
end;
Aca el problema esta en que si ocurre una excepcion el sistema se queda congelado "pegado" y hay que volcar la tarea desde el administrador de tareas de windows.

Que piensan.....

Gracias por la valiosa ayuda!!!

Última edición por rmora fecha: 17-03-2010 a las 17:22:39.
Responder Con Cita