PDA

Ver la Versión Completa : Imprimir nro. de copia con QReport.


Walterio
25-09-2012, 20:43:24
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 (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:
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:
case nCopias of
1: lblTipoCopia.Caption := '1';
2: lblTipoCopia.Caption := '2';
3: lblTipoCopia.Caption := '3';
4: lblTipoCopia.Caption := '4';
end;
Inc(nCopias);

O resumiendo:
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 :
(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 :


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
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 (http://www.clubdelphi.com/foros/showthread.php?p=443419) 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

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

Saludos