Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Qreport, composite y cambios en qrlabel (https://www.clubdelphi.com/foros/showthread.php?t=80315)

Walterio 18-09-2012 13:11:25

Qreport, composite y cambios en qrlabel
 
Hola gente.
Estoy usando Delphi 6 y QReport.
Lo que quiero hacer es lo siguiente:
Tengo un reporte que ocupa media página A4 de la cual necesito hacer cuatro copias del reporte, es decir, dos copias del reporte en una hoja, por lo que tendría dos hojas con cuatro copias del reporte.Hasta ahi todo sale bien, el problema es que necesito poner al pié de cada reporte, un qrlabel, o lo que sea necesario con la leyenda, "Original","Copia", "Duplicado" y "Triplicado".
El problema es que con el composite, no puedo "tocar" previamente cada reporte antes de agregarlo al composite, ¿se entiende?.
No estoy en la oficina en este momento como para adjuntar el código donde hago el composite, pero creo que es claro lo que necesito y la pregunta es cómo hacerlo, pero si es necesario, adjunto mi código.

Desde ya, muchas gracias.

MartinS 18-09-2012 16:01:26

Hola Walterio: No tengo idea cuales son los Qreport que estas usando pero suponiendo que es uno solo que se repite cuatro veces podrias hacer asi:

Defini una variable (yo lo puse copia).
Aqui le asignas el valor a la variable

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  Copia := 1;
end;

Aqui se agregan el mismo Qreport (QuickRep1) una y otra vez... Ojo no se si usas solo uno repetido o varios

Código Delphi [-]
procedure TForm2.QRCompositeReport1AddReports(Sender: TObject);
begin
   QRCompositeReport1.Reports.Add(QuickRep1);
   QRCompositeReport1.Reports.Add(QuickRep1);
   QRCompositeReport1.Reports.Add(QuickRep1);
   QRCompositeReport1.Reports.Add(QuickRep1);
end;

Antes de imprimir (Evento del Qreport), en este caso como es por QrComposite, antes de enviar al composite, miro el valor de copia y le asigno el texto correspondiente al Qrlabel

Código Delphi [-]
procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  case Copia of
    1: QRLabel1.Caption := 'Original';
    2: QRLabel1.Caption := 'Copia';
    3: QRLabel1.Caption := 'Duplicado';
    4: QRLabel1.Caption := 'Triplicado';
  end;
end;

Despues que lo envio (Siempre del Qreport) incremento el valor de la variable copia

Código Delphi [-]
procedure TForm2.QuickRep1AfterPrint(Sender: TObject);
begin
  Inc(Copia);
end;

Saludos.-

PD: No se si es la mejor forma de hacerlo pero hice una pequeña prueba y mas o menos se adapta a lo que solicitas de acuerdo a mi imaginacion... :p:p Espero que te sirva y si no con mas datos veremos que podemos hacer.- ^\||/

Walterio 18-09-2012 16:42:09

Muchas gracias MartinS por la respuesta.
Tu ejemplo me solucionó el problema (no sé porqué no se me pasó por la cabeza usar el BeforePrint, era simple).
Efectivamente, como suponés, son cuatro copias de un mismo reporte que me entran dos por página.
El único cambio que tuve que hacer es poner el Inc(Copia) después del Case del BeforePrint :

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);

ya que en el AfterPrint (quién sabe el porqué) no se ejecuta.

Al imprimir sale todo bien, pero me pareció ver que en el Preview no funciona como deberia ya que me mostró las 4 etiquetas iguales.
Pruebo nuevamente y comento, pero al menos las impresiones resultaron exitosas.

Nuevamente, muchísimas gracias.

Saludos.

MartinS 18-09-2012 17:13:33

Hola nuevamente:
lo acabo de probar poniendo el incremento despues del case y funciona igual. El unico detalle es que la banda donde tengo la etiqueta que te muestra los resultados es del tipo summary (no se si tendra algo que ver) y la variable copia la asigno cuando se crea el formulario que soporta al Qreport.-

Saludos

Edito: Leo con detenimiento tu mensaje y dice que esta solucionado así que no tomes en cuenta lo que escribí arriba :D :D . Suerte!!

Walterio 18-09-2012 17:24:58

Hola MartinS.
La famosa etiqueta yo la tengo en una banda del tipo child de la banda del tipo summary que la uso como pié del reporte, habría que probarlo, pero está funcionando perfectamente.De todas formas, lo pruebo según me decís así me saco la duda, pero ya está funcionando correctamente.

Mil gracias nuevamente.

Saludos.


La franja horaria es GMT +2. Ahora son las 08:33:21.

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