Problema con QuickReport
Hola, tengo un problema con los QuickReport y la verdad es que me urge bastante solucionar esto, a ver si alguien puede ayudarme. En mi aplicaci贸n tengo un QuickReport con un QRBand de tipo Detail. En este QRBand voy insertando de forma din谩mica QRLabels. El problema es que cuando inserto muchos QRLabels y me paso del tama帽o de p谩gina, los QRLabels que "se pasan de largo" los pierdo, quiero decir, el QuickReport no me los pone en una p谩gina nueva.
El c贸digo que uso para insertar los QRLabels es parecido a esto:
int top_anterior=0;
for(int i=0; i<4000; i++)
{
TQRLabel * etiqueta=new TQRLabel(QRBCuerpo);
etiqueta->Left=30;
etiqueta->Top=top_anterior+20;
top_anterior+=20;
etiqueta->Caption="Hola";
etiqueta->Visible=true;
etiqueta->Parent=QRBCuerpo;
}
Nota: QRBCuerpo es el nombre del QRBand en el que inserto los QRLabels
He intentado solucionarlo con el m茅todo NewPage() del QuickReport, pero siempre que lo llamo me sale una excepci贸n de Violaci贸n de Acceso, independientemente del n煤mero de QRLabels que haya insertado.
El c贸digo que uso para insertar los QRLabels es parecido a esto:
int top_anterior=0;
for(int i=0; i<4000; i++)
{
TQRLabel * etiqueta=new TQRLabel(QRBCuerpo);
etiqueta->Left=30;
etiqueta->Top=top_anterior+20;
top_anterior+=20;
etiqueta->Caption="Hola";
etiqueta->Visible=true;
etiqueta->Parent=QRBCuerpo;
}
Nota: QRBCuerpo es el nombre del QRBand en el que inserto los QRLabels
He intentado solucionarlo con el m茅todo NewPage() del QuickReport, pero siempre que lo llamo me sale una excepci贸n de Violaci贸n de Acceso, independientemente del n煤mero de QRLabels que haya insertado.
Pues a mi se me ocurre una cosilla a ver si lo solucionas. Hay tres eventos en todo informe con QuickReport:
AfterPrint, BeforePrint, OnStartPage.
Declara una variable en tu informe, en la parte privada de tu unidad, que se llame por ejemplo LineasImpresas y que sea del tipo Integer.
En el evento OnStartPage inicializa tu variable a 0 (LineasImpresas = 0).
En el evento AfterPrint incrementa de uno en uno el valo de LineasImpresas (Inc(LineasImpresas)).
Y en el evento BeforePrint escribe la condicion que haga que si se han impreso tantas lineas fuerce a QuickReport a empezar una nueva pagina:
if LineasImpresas = 30 then NewPage;
Espero que te sea de ayuda. Saludos al foro.
AfterPrint, BeforePrint, OnStartPage.
Declara una variable en tu informe, en la parte privada de tu unidad, que se llame por ejemplo LineasImpresas y que sea del tipo Integer.
En el evento OnStartPage inicializa tu variable a 0 (LineasImpresas = 0).
En el evento AfterPrint incrementa de uno en uno el valo de LineasImpresas (Inc(LineasImpresas)).
Y en el evento BeforePrint escribe la condicion que haga que si se han impreso tantas lineas fuerce a QuickReport a empezar una nueva pagina:
if LineasImpresas = 30 then NewPage;
Espero que te sea de ayuda. Saludos al foro.
