PDA

Ver la Versión Completa : TQuickReport y los saltos de página.


TiammatMX
21-02-2012, 18:37:56
Jóvenes ilustres...

Resulta que tengo un reporte que NO ESTÁ LIGADO A DATOS mediante NINGÚN componente de manejo de bases de datos, en el cual estoy ingresando vía la creación de una etiqueta por renglón (a la vieja usanza COBOL, Clipper, etc.) de cada uno de los registros de ciertas tablas, mediante un contador que hace las veces de posicionador dentro de un renglón de la banda de detalle, de ésta manera:

procedure EtiquetaReporte(qrReporte : TqckrprtDerivacionPaciente; iRenglon : integer; sContenido : string);
begin
with TQRLabel.Create(qrReporte.DetailBand1) do
begin
Parent := qrReporte.Bands.DetailBand;
Left := 0;
Top := iRenglon;
Alignment := taLeftJustify;
AutoSize := True;
Caption := sContenido;
end;
end;

El punto es que ahora, cuando el contador de renglón llegue a un cierto número (o condicionamiento) debo ejecutar alguna instrucción (la cual desconozco por el momento y gracias a su valiosa colaboración conoceré) y entonces reiniciar el contador de renglón hasta el punto en que se cumpla la condición y así.

Jóvenes, requiero saber qué instrucción debo enviar a TQuickReport para que agregue una nueva página al reporte, agradeciendo de antemano su colaboración.

kapcomx
21-02-2012, 18:59:05
mmm hay una propiedad en la banda que es forcenewpage, tal vez te pueda funcionar

tubanda.forcenewpage:=true;

de momento no se me ocurre algo mas.
saludos...:cool:.

P.D. por que te gusta complicarte la vida jeje

TiammatMX
21-02-2012, 19:04:12
tubanda.forcenewpage:=true;


Ésto ya lo probé, funciona solamente para indicarle a la banda en la que te encuentras que deberá efectuar un salto de página ANTES de imprimirse.


P.D. por que te gusta complicarte la vida jeje
Según lo veo yo, nuestra misión como desarrolladores de sistemas es complicarnos infinitamente la vida para simplificar la del usuario.

juanlaplata
24-02-2012, 17:30:12
Si la propiedad forcenewpage:=true; te salvara la vida con un salto de pagina DESPUES de imprimirse, lo que puedes hacer, es colocar otra banda (vacia, sin componentes, con height = 0 y forcenewpage = true ), por debajo de la qrReporte.DetailBand1.
Lo q deberias probar es de que tipo sera dicha banda, BandType = ...
El cual creo q SubDetail funcionaria bien.

TiammatMX
29-02-2012, 18:16:22
...El cual creo q SubDetail funcionaria bien.
Pues nada, que ya solucioné ésto y comparto cómo lo hice.

Existe para QuickReport un componente que crea un área para imprimir datos a partir de un TStringGrid, y me dije a mí mismo, "mí mismo, debemos probarlo"...


Añadir un TStringGrid completamente vacío a su forma a partir de la que se controlará la llamada del reporte.
En su TQuickReport (o derivado de alguna clase de reporte) añada un TQRStringgridReport e identifíquelo.
Ligue el componente recién depositado al reporte, en la propiedad "QuickRep" asigne el nombre del reporte contenedor.
Ligue el componente recién depositado al TStringGrid que contendrá los datos.
Para añadir líneas al reporte, éstas deben ser añadidas al TStringGrid, mismo que se imprimirá en un área de detalle especialmente creada para tal fin dentro del reporte en tiempo de ejecución.
Sazone, administre y disfrute su nuevo reporte.
Servidos, jóvenes.

AzidRain
29-02-2012, 18:39:14
Yo hice algo similar, pero utilice un Loopband con un varios Labels que contendrán los datos que quiero imprimir por cada línea. Recordemos que Loopband se imprime automáticamente el número de veces que queramos. En este caso, el número de veces será el número de registros. Luego en el Evento BeforePrint relleno los labels con lo que corresponda y listo. El paginado lo maneja automáticamente el reporte, únicamente tengo que ir alimentando los labels con los datos que quiero imprimir. En el Loopband nos sirven la propiedad Count que indica cuantas veces queremos imprimir la banda y la propiedad PrintCount, que es el contador de impresiones.