PDA

Ver la Versión Completa : Original, Duplicado triplicado


tulio
29-09-2008, 14:02:23
Hola Foro

Tengo un problema hace varios dias y no se como solucionarlo, hay que hacer una emision a un negocio de por ejemplo 100 recibos, pero tienen que salir con triplicado, y ponerle en la parte de abajo del recibo 'original' en el primero, 'duplicado' en el segundo y 'triplicado' en el tercero, y no se como hacerlo.
La opcion de poner en printsetting copies = a 3 no me soluciona porque no se como saber cual es el recibo original,duplicado etc

saludos y gracias

duilioisola
29-09-2008, 14:22:45
Y si imprimes tres veces cada recibo?

tulio
29-09-2008, 15:02:36
Primero gracias por responder, probe lo que decis vos, pero como son muchos recibos hay que hacer muchos print y no queda bien, yo queria saber si chequeando alguna variable podia poner desde el reporte la leyenda de original duplicado etc.

Si conocen algun modo se lo agradezco

saludos

mightydragonlor
29-09-2008, 17:36:36
primero que todo deberias decirnos que reporteador estas usando, así es mas probable que te demos una respuesta.

Lepe
29-09-2008, 17:39:19
Sin saber el generador de informe que usas es difícil, pero así a voz de pronto, yo crearía un parámetro donde le mandas el string.


var copias : array [0..2] of string = ('Original', 'Duplicado', 'Triplicado')
...
procedure Imprime;
begin
for i:= low(copias) to high(copias)
begin
report.paramsbyname('copia').AsString := copias[i];
report.print;
end;



El truco estaría en no mostrar progreso mientras se imprime (así no sale el cartelito con la barra de progreso), Tampoco usarías presentación preliminar, simplemente envías a imprimir en segundo plano. Si lo quieres bien, puedes mostrar tu propia ventana que muestre una barra de progreso total.

Saludos

AzidRain
29-09-2008, 19:39:57
Como dicen le falta el reporteador pero creo que tendria que escribir un manejador para el evento BeforePrint del reporte (al menos QuickReport si lo trae) y ahi verificar que numero de copia está imprimiéndose. Vamos es como imprimer el numero de página pero en su lugar poner las leyendas correspondientes.

tulio
29-09-2008, 19:53:29
Gracias a los dos por responder

el reporteador es QuickReport, me gusto lo que dijo azidrain, como es que hay que ponerlo en el beforeprint del reporte, como se hace.

Muchas gracias.

Minio
07-11-2008, 19:08:19
tulio podrías comentar que solucion le diste??? yo trato de hacer algo parecido pero no se bien como.

Gracias.

tulio
11-11-2008, 10:56:40
Hola Minio

lo que termine haciendo fue imprimir tres veces el reporte y antes de cada impresion ponia, Original, Duplicado triplicado. Pero me gusta la propuesta que dio en este tema el compañero azidrain que no lo pude hacer

Saludos y Gracias

tulio

Minio
11-11-2008, 13:15:41
Gracias por responder, al final logre sacarlo. Lo hice en el BeforePrint:


case QuickRep1.PageNumber of
0: QRLabel1.Caption := 'Original factura';
1: QRLabel1.Caption := 'Copia de cortesia';
2: QRLabel1.Caption := 'Copia contabilidad';
3: QRLabel1.Caption := '';
end;


He añadido un QRCompositeReport al que le añado informes según una variable donde guardo la cantidad de copias que quiero. En su evento OnAddReports pongo esto:

var
NCopias: Integer;
begin
NCopias := 0;
while NCopias < Form1.CopiasFactura do
begin
QRCompositeReport1.Reports.Add(Form2.QuickRep1);
NCopias := NCopias + 1;
end;


Y para terminar en el botón imprimir esto:

Application.CreateForm(TForm2, Form2);
QRCompositeReport1.Reports.Clear;
QRCompositeReport1.Prepare;
QRCompositeReport1.ExportToFilter(TQRPDFDocumentFilter.Create('Factura.pdf'));
Form2.Destroy;
ShellExecute(FmFacCli.Handle, nil, PChar('Factura.pdf'),'', '', SW_SHOWNORMAL);


Con esto ultimo genero la factura la guardo como PDF con la ayuda del componente QRPDFFilter y lo abro con Acrobat Reader y me sale directamente, y tengo guardada una copia en disco.

Bueno gracias a todos.