PDA

Ver la Versión Completa : Liberar memoria de un QR.


mlara
21-02-2004, 15:32:05
Hay dos formas de crear un reporte con Quick Report.

1. Creo una forma y arrastro el componente TQuickRep desde la paleta. En este caso la declaración del tipo en el archivo .pas se ve así:


type
TForm2 = class(TForm)
QuickRep1: TQuickRep;
private
{ Private declarations }
public
{ Public declarations }
end;


2. Me voy por File | New | Other..., en la pestaña 'New' selecciono la opción Report, y doy click en OK. En este caso la declaración del tipo en el archivo .pas se ve así:


type
TQuickReport1 = class(TQuickRep)
private

public

end;


En el primer caso, para liberar completamente la memoria puedo usar en el evento OnClose de Form2 el siguiente código:


Application.ProcessMessages;
FreeAndNil(QuickRep1);
Action := caFree;


Entonces visualizaría el reporte y luego lo destruiría así:


Application.CreateForm(TForm2, Form2);
QuickRep1.Preview;
Form2.Close;


En el segundo caso llamaría el reporte así:


Application.CreateForm(TQuickReport1, QuickReport1);
QuickReport1.Preview;


En este caso, cuál es la mejor manera de liberar la memoria?

jachguate
21-02-2004, 18:31:16
asi:


Application.CreateForm(TQuickReport1, QuickReport1);
try
QuickReport1.Preview;
finally
QuickReport1.Free;
QuickReport1 := nil;
end;



solo comento que en el primer caso no es necesario llamar a FreeAndNil en el OnClose, pues el Form2 es quien lo destruiría (al ser el owner del mismo).

Hasta luego.

;)