PDA

Ver la Versión Completa : poner invisible una imagen justo antes de imprimir en quickreport


soyhugo
14-02-2004, 14:22:33
buenas, he realizado en quickreport un reporte de recibos, para ello, he escaneado la imagen del recibo original, y luego he puesto la imagen en el reporte. sobre él he puesto todos los campos de la base de datos, en su justo lugar, para que el cliente pueda ver como queda la lista de reciboS. ahora lo que quiero, es que justo antes de imprimir por la impresora, no me imprima la imagen del recibo, ya que el papel metido en la impresora, tiene ese dibujo. he probado a poner en el detail, antes en el evento de antes de imprimir. (imagen.visible:=false), que aunque no me funciona, luego he pensado que esto lo que haría sería poner la imagen invisible en el reporte de muestra al cliente y eso claro está no lo quiero. de todas maneras, no me hace nada. ¿alguien sabe como p uedo solucionar esto? gracias a todos.

eduarcol
14-02-2004, 15:23:52
yo pienso que lo que necesitas es una variable bandera, por ejemplo en el evento beforePrint del componente que posea la imagen colocar(asumiendo que es un qrimage, y el componente padre de este sea un detail):



//para determinar si se imprime
procedure TReporte1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if VecesImpreso > 0 then
qrImage1.Picture := Nil;
end;

//para acumular la variable de impresion
procedure TReporte1.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
Inc(VecesImpreso);
end;


debes asegurarte que VecesImpreso se inicialize como cero en el create del formulario.

te explico lo que pienso: Al darle un preview al qrreport se ejecutan estos dos eventos, al igual que al enviarlos a imprimir desde el visualizador, el codigo te asegura que la primera vez que se ejecuten los eventos se muestre la imagen pero la segunda vez, no se muestra, eso es lo que nos interesa porq la segunda vezseria la impresion.

ahora en el caso de que envies el reporte directamente a la impresora sin previsualizar, asignale nulo al picture y listo.

Nota: la sentencia "qrImage1.Picture := Nil;" la hice de memoria si esta mal confio que mis amigos del foro me corrijan.

soyhugo
14-02-2004, 16:54:50
la fórmula que tu me has comentado, no funciona, ya que son varios los recibos que muestro en el preview, así que me imprime la imagen del primer recibo, pero los demás me aparecen en blanco, porque ya se ha incrementado la variable. Pero me he puesto a pensar, y con lo que me has dicho hay dos formas de arreglarlo. una es que al crear el reporte, le mande inciliaziando una variable con el número total de registros que se van a mostrar, entonces en vez de poner vecesImpreso>0 pongo vecesImpreso>num_registros. con esto y tu forma, funciona. pero para no tener que hacer esto, he pensado en cambiar tu forma a:

procedure TReporte1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if puede_imprimir then
qrImage1.Picture := Nil;

donde puede_imprimir está inicializada a falso. entonces siempre me muestra las imagenes, luego he puesto una banda resumen, que se imprime siempre al final del documento, y en su evento afterPrint, he puesto la variable puede_imprimir a true, para que ya la siguiente vez que se imprima, no muestre las imágenes. He intentado hacer esto con el evento after print del documento, pero no funciona, no sé si estoy haciendo algo mal. tu que opinas?

eduarcol
14-02-2004, 17:08:19
pues me gusta mas la banda resumen, por que tarda menos en imprimir que haciendo el prepare, y acuerdate que en la programacion hay un problema pero mil soluciones...

soyhugo
14-02-2004, 18:02:01
me he dado cuenta que cuando vas a imprimir, en el propio preview, tienes que seleccionar en uno de los botones la impresora a imprimir, y luego darle a otro bobon que imprime. lo que quiero es que justo cuando le has dado a seleccionar impresora y aceptar, directamente se ponga a imprimir, como todos las ventanas de impresión.

__cadetill
15-02-2004, 09:58:32
lo que quiero es que justo cuando le has dado a seleccionar impresora y aceptar, directamente se ponga a imprimir

Para eso tendrás que hacerte tu propio previsualizador (en mi web tienes uno si quieres).

Y ya que tienes que hacerte un Preview personalizado, otro solución para tu problema es, en el botón de imprimir, poner a nil el contenido del QrImage ;)

Para soluciones que no se diga

soyhugo
16-02-2004, 15:02:24
es la segunda página de moderador que acceso y encuentro gran cantidad de información soys unos máquinas.