Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Problemas con Quickreport (https://www.clubdelphi.com/foros/showthread.php?t=2008)

REDCOM 05-07-2003 06:04:46

Problemas con Quickreport
 
Saludos,

Tengo el siguiente problema cuando utilizo Quickreport, aparece
frecuentemente (no siempre), el mensaje de error

QRSpreview already exist.

Alguien sabe que pasa esto?

Gracias,

marcoszorrilla 05-07-2003 13:44:48

En tiempo de diseño, porque no siempre que haces doble clic sobre la hoja para ver como quedará en tiempo de ejecución, se destruye el objeto, y en este caso no te queda más remedio que cerrar Delphi y volverlo a abrir.

En ejecución no debiera de ocurrir si tu mismo te encargas de cerrar el fomulario en donde está alojado.

Código:

Application.CreateForm(TfrLptFacturaProf,frLptFacturaProf);
frLptFacturaProf.LptFacturaProf.Preview;
frlptFacturaProf.Close;
{En el evento OnClose del Formulario}
Application.ProcessMessages;
FreeAndNil(LptFacturaProf);
Action:=CaFree;

Una observación:
FreeAndNil, sino recuerdo mal existe a partir de D4.

Un Saludo.

REDCOM 09-07-2003 04:09:47

Gracias Marco,

El Error que aparece no lo escribi bien, debe decir:

QRStandarPreview already exist.


No es frecuente aunque cuando ocurrre la aplicación deja de funcionar apropiadamente.


Como estoy desarrollando es de la siguiente manera:

fimp := Tforma_imprimir.create(self);
try
fimp.Quickrep1.PreviewModal;
finally
fimp.free;
End;


El problema es que se utiliza frecuentemente la impresión, debido a que se trata de etiquetas con la información de artículos.

Hice las siguientes correcciones:

En la forma que contiene el QuickRep1 al cerrarlo (OnClose)

Application.processMessages;
FreeAndNil(Quickrep1);
action := caFree;

Y en donde es llamado el form de impresión,

fimp := Tforma_imprimir.create(self);
try
fimp.Quickrep1.PreviewModal;
fimp.close;
finally
fimp.free;
End;

Aun utilizando estas instrucciones el error es catastrofico, ahora inhibe el sistema.

Indagando en qsoft, encontre que este error ocurre por que no se libera la propiedad qrprinter lo que quiero decir es que se debe utilizar el siguiente código para evitarlo:

repeat
application.processMessages;
until quickrep1.qrprinter := Nil;

despues de cerrar la forma que contiene el QuickRep1.

Ahora sigue ocurriendo pero con bastante menos frecuencia que antes ????


Sinceramente, soy autodidacta en esto de la programación con Delphi, si me hicieras favor de indicar alguna bibliografía estaría eternamente agradecido.


La franja horaria es GMT +2. Ahora son las 03:28:41.

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