PDA

Ver la Versión Completa : Forzar una nueva pagina al llegar a un punto determinado?


URBANO
23-07-2003, 20:23:40
Hola foro, tengo el siguiente problema:
He realizado una factura con qreport y necesito que cuando llegue a un determinado número de líneas salte al siguiente folio.
Yo he utilizado lo siguiente:

procedure TFlisfactura.QRSubDetail1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
linea:=linea+1;
if linea = 24 then
begin
QRSubDetail1.ForceNewPage:=True;
end;

end;

El problema es que cuento el número de veces que se imprime el Qrsubdetail, pero este puede variar de tamaño (el ancho) con lo cual no me vale.
Alguien sabe algun otro método?

delphi.com.ar
23-07-2003, 20:35:29
Prueba cambiando "QRSubDetail1.ForceNewPage:=True;" por "NewPage;", con esto forzarás en ese momento que se cree la nueva página.

Saludos!

jachguate
23-07-2003, 20:42:52
Creo que es importante que leas la guia de estilo (http://www.clubdelphi.com/users/llsoft/Docs/GuiaEstilo.php) y que comprendás que no tiene sentido poner una pregunta en mas de un foro a la vez.

Si nadie responde tu pregunta en un foro, es quizas porque nadie puede ayudarte, porque tu pregunta está mal planteada, o porque la has puesto en el foro equivocado.

Estas son cosas, por supuesto, que debes considerar antes de poner el primer mensaje.

Hasta luego.

;)

URBANO
24-07-2003, 10:00:17
El problema no es que no funcione la creación de la nueva página, esto si lo consigo. Lo que no se como determinar el momento exacto para fozar la página, es decir, si yo quiero que se cree una nueva página y salte ha ella cuando la última linea de detalle que se halla imprimido este a 6 cm del final del folio (A4). ¿como se yo que he llegado que solo me faltan 6 cm?

jachguate, como he esplicado en el foro de SQL, me equivoque al escribir la pregunta en ese foro y como no se como eleminarla, lo único que he hecho es dar la explicación de mi error y comentar que ya había hecho la pregunta en el foro correspondiente. Mi intención no ha sido poner una pregunta en dos foros.

delphi.com.ar
24-07-2003, 16:35:49
Bueno, con Report.NewPage fuerzas en ese preciso instante a que se cree una nueva página, puedes hacerlo cuando estas en un registro X con alguna condición en sus datos.

Saludos!

URBANO
24-07-2003, 18:31:26
Yo cuento las lineas de detalle que se imprimen y cuando llegan a 17 (sería a 6 cm del final del folio, por ejemplo) fuerzo la nueva página (esto funciona). El problema es que esto funciona siempre y cuando en cada detalle solo se imprima una sola linea, ya que si se imprimen mas (que puede pasar muy amenudo, dependiedo del texto que almena) se sigue saltando a la nueva página cuando llega a 17, pero esta última línea ya no se encuentra a 6 cm del final, luego esto no me sirve.

La idea es que independientemente del contenido de las lineas de detalle, cuando una de estas líneas se vayan a imprimir a menos de 6 cm del final del folio, se cree el siguiente folio.

Espero haberme esplicado bien.
Gracias por vuestros comentarios.

delphi.com.ar
24-07-2003, 18:46:56
¿No te sirve modificar el margen inferior del reporte?

hogol
25-07-2003, 11:56:58
Hola buenas

Creo que lo más sencillo y elegante sería poner una banda de pié de página de 6 cm con lo cual en principio te solucionaría el problema.
Si eso no te funciona entonces quizás podrias cambiar el cálculo que haces de lineas impresas por la suma de los anchos impresos. Algo más o menos como esto:

procedure TFlisfactura.QRSubDetail1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
total := total + Qrsubdetail1.height;
if total >= tope then
begin
QRSubDetail1.ForceNewPage:=True;
end;

end;



En fin , es una idea

Hogol

URBANO
25-07-2003, 19:25:12
La idea me ha venido de perlas.
De la manera que me has comentado ya tengo solucionado el problema.

Gracias por vuestros comentarios