Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir nro. de copia con QReport. (https://www.clubdelphi.com/foros/showthread.php?t=80924)

Walterio 25-09-2012 20:43:24

Imprimir nro. de copia con QReport.
 
Hola a todos...!!!
Trataré de ser claro :
Con Delphi 6 , QReport 3.0.9 y una impresora térmica Zebra estoy armando unas etiquetas con las medidas de impresión personalizadas , las cuales se imprimen perfectamente.
Mi problema pasa porque necesito imprimir en cada etiqueta el número de copia, por ejemplo :
Tengo una etiqueta que lleva 6 copias, hasta allí todo funciona bien, pero lo que necesito es que en la misma etiqueta se imprima el número de copia, por ejemplo, en cada una debería salir algo asi como "Etiqueta Nº 2 copia 1", "Etiqueta Nº 2 copia 2", "Etiqueta Nº 2 copia 3"...probé con pagenumber y otras cosas raras pero no hay caso.Hasta incluso intenté hacer algo parecido a un ejemplo que me pasaron la semana pasada con algo parecido (
http://http://www.clubdelphi.com/foros/showthread.php?p=443419#post443419
) pero tampoco, hasta ahora todo lo que probé me sale siempre "Etiqueta Nº 2 copia 1", "Etiqueta Nº 2 copia 1", "Etiqueta Nº 2 copia 1".

Desde ya, muchas gracias.

Saludos

Casimiro Notevi 25-09-2012 21:05:39

Pues si allí dices que te funciona perfectamente, aquí tiene que funcionar igual de perfectamente porque es lo mismo, es que es la misma pregunta.

En lugar de:
Código Delphi [-]
case nCopias of     
  1: lblTipoCopia.Caption := 'Original';     
  2: lblTipoCopia.Caption := 'Duplicado';     
  3: lblTipoCopia.Caption := 'Triplicado';     
  4: lblTipoCopia.Caption := 'Cuadruplicado';   
end;    
Inc(nCopias);
Sería esto:
Código Delphi [-]
case nCopias of    
  1: lblTipoCopia.Caption := '1';    
  2: lblTipoCopia.Caption := '2';    
  3: lblTipoCopia.Caption := '3';    
  4: lblTipoCopia.Caption := '4';  
end;  
Inc(nCopias);

O resumiendo:
Código Delphi [-]
lblTipoCopia.Caption := inttostr(nCopias);

Debería de combinar ambos hilos porque es lo mismo, como dije antes.

Walterio 25-09-2012 21:27:04

Gracias Casimiro por la respuesta.
Lo que omití decir es que aquí, con las etiquetas, no uso Composite como en el ejemplo anterior, sólo le agrego la cantidad de copias mediante :
Código Delphi [-]
(reporte as TQuickRep).PrinterSettings.Copies := nNroCopias;
De todas formas, voy a probarlo, aunque intenté hacer algo parecido y no funcionó.
Pruebo y comento que tal fué.

Muchas gracias

Saludos.

Walterio 25-09-2012 22:05:37

Casimiro, acabo de probarlo y no me funciona.
Pongo el código en el beforePrint, y al debugearlo, veo que sólo pasa por allí una sola vez, en vez de pasar una vez por cada copia a imprimir :

Código Delphi [-]
procedure TStickerRecepcion.StickerBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
   lblNro.Caption := IntToStr(nCopias);
   Inc(nCopias);
end;

lo cual es raro...¿no?

Sigo probando...

Saludos.

Casimiro Notevi 25-09-2012 22:35:21

Yo no conozco el qreport, pero debe tener algún evento que te venga mejor, por el ejemplo el mismo del label que vas a imprimir.

kapcomx 26-09-2012 17:57:54

Walterio
y si pones ese codigo en el before print de la banda no en el before print del quickreport tal vez asi si te funcione el incremento de tu variable.

Saludos...:cool:

Walterio 26-09-2012 19:26:54

Gracias kapcomx por la respuesta.
También lo intenté y no pasó nada.Lo que pude comprobar es que todos los eventos que tiene el reporte no contemplan las copias.Si marco esos puntos para debuggear, veo que sólo pasa una vez por allí, no lo hace tantas veces como copias tenga.Raro, ¿no?

Gracias nuevamente.

Saudos

MartinS 28-09-2012 15:16:39

Hola Walterio: Pregunta?? cada etiqueta corresponde a una hoja o estan las 6 en la misma?.-

Saludos

Casimiro Notevi 28-09-2012 15:19:51

No sé si está claro la forma en que imprimes. No es lo mismo imprimir 6 copias de un informe... que imprimir un informe 6 veces. ¿Cómo imprimes?

juanlaplata 28-09-2012 16:01:00

Hola, como varios de aqui, intuyo cual es el trabajo q intentas hacer.
Continuo, segun mi intuicion, y pregunto:
de donde salen los datos q "llenan" la etiqueta ?
el "llenado" es mediante loop ?
con un dataset-query ?
Solo para poder aportar ideas de donde insertar este dato q necesitas ..

MartinS 28-09-2012 16:16:51

Q
 
Walterio: Creo que la opcion de cantidad de copias es precisamente eso (Copia exacta de cada informe) por lo que no podras modificar nada del "original", salvo que hagas como pregunta casimiro, es decir, si envias seis veces a imprimir ahi podrias incluir un qrlabel que se valla actualizando a medida que vas enviando a imprimir.
Otra opcion es utilizar como en el caso que indicas aqui un Qrcomposite y actuar de la misma manera o bien agregando reportes de acuerdo a la cantidad de copias de la etiqueta que necesitas.-
Hay un par de propiedades que podrian servirte del qreport (Por lo menos en la version 5.05 que yo utilizo) con el Qrcomposite:
StarInNewPage in composite (o algo asi) para crear una nueva pagina cada vez que esta termina y la propiedad Text de un QrsysData (seteado en page number) y despues le escribirias el texto que deseas que aparezca antes del numero de pagina ubicado en el mismo evento (BeforePrint) que el post enunciado. Por Ejemplo

Código Delphi [-]
QrSysData1.Text := 'Etiqueta Nº 2 - Copia ';
y el resultado aparecera como Etiqueta Nº 2 - copia 1 y asi en cada pagina.-

Saludos


La franja horaria es GMT +2. Ahora son las 17:31:01.

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