Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   ¡Como imprimir columnas que no caben en QR? (https://www.clubdelphi.com/foros/showthread.php?t=77305)

AzidRain 13-01-2012 00:27:27

¡Como imprimir columnas que no caben en QR?
 
Tengo un pequeño problema, aunque ya he pensado en algunas soluciones quisiera ver si a alguien del Club se le ocurre alguna otra cosa.

Tenemos una tabla x con 20 columnas y 8 filas por decir así.

En QReport solo caben 10 columnas aun reduciendo el texto al mínimo aceptable.

Lo que quiero lograr es que se impriman las primeras 10 columnas y sus 8 filas y una vez impresas, en la parte de abajo se impriman las restantes 10.

Algo asi (aunque con 5 columnas):

Código:

          col 1    col 2    col 3    col 4    col 5 
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
 totales

          col 6    col 7    col 8    col 9    col 10 
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
 totales

A ver que ideas salen...saludos

luisgutierrezb 13-01-2012 17:24:02

puede sonar muy trivial, pero no puedes imprimir con la hoja horizontal?? tal vez en tamaño oficio y horizontal puedas completar las 20, en caso de que no, algo que se me ocurre es que hagas 2 reportes, uno con las primeras 10 y luego otro con las siguientes 10, el quickreport tiene un componente para "juntar" reportes, el cual hara como si se hubieran generado de uno solo los 2, no tengo Delphi a la mano para revisar el nombre del componente se llama algo asi como compositereport..

TiammatMX 13-01-2012 17:32:52

Cita:

Empezado por AzidRain (Mensaje 422839)
Tengo un pequeño problema, aunque ya he pensado en algunas soluciones quisiera ver si a alguien del Club se le ocurre alguna otra cosa...

Lo que a mí me ha servido es calcular vía código el espaciamiento entre las columnas, reducir al mínimo el tamaño de la etiqueta justo para que quepan los datos y utilizar el modo apaisado de la página a imprimir...

AzidRain 13-01-2012 17:39:16

El problema a resolver es que aun utilizando la hoja apaisada (horizontal) no caben la totalidad de columnas, lo cual a muchos nos ha sucedido en algún momento. El componente CompositeReport te imprime varios reportes como uno solo, pero no seguidos en la misma página. Es decir, si usamos 2 reportes, uno para las primeras 10 y otro para las otras 10 columnas, saldran en páginas separadas y la idea es que salga todo junto.

Casimiro Noteví 13-01-2012 18:10:15

No entiendo bien, estimado amigo, pero si no cabe... no cabe, habrá que quitar algo :)

Edito: me acaba de salir tu ejemplo, no lo había visto antes.
Está complicado.

kapcomx 13-01-2012 18:15:37

qr
 
y si mandas la informacion tal y como la pusiste en tu ejemplo a un stringgrid y luego asocias ese stringgrid a un quick report en su propiedad OnNeedData...

asi imprimirias solo en cinco columnas

maeyanes 13-01-2012 18:32:23

Hola...

No se si QR soporte subreportes, pero si es así, bien podrías usar esa característica.

Código:

--------------------- Subreporte 1 --------------------------
          col 1    col 2    col 3    col 4    col 5 
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
 totales
-------------------------------------------------------------
--------------------- Subreporte 2 --------------------------
          col 6    col 7    col 8    col 9    col 10 
fila 1
fila 2
fila 3
fila 4
fila 5
fila 6
fila 7
fila 8
---------------------------------------------
 totales
-------------------------------------------------------------


Saludos...

oscarac 13-01-2012 18:47:43

Recuerdo haber hecho esto en FOX !!!
Era un reporte donde mostraba los movimientos de los centros de costos que se utiilzaban dentro de un rango de fechas, como la informacion podria ser variable, incluso podria mostrarse en mas de 2 hojas por titulos

voy a buscarlo para darte la idea de como lo hice

AzidRain 14-01-2012 03:04:42

Me inventé una posible solución aunque no la he implementado, solo hice pruebas en un reporte limpio.

Coloqué 4 QRLoopBands:

1.- Titulos de la primera parte
2.- Filas de la primera parte
3.- Titulos de la segunda parte
4.- Filas de la segunda parte.

Las Bandas de titulos les coloqué la propiedad PrintCount en 1 para que se impriman solo una vez.

Si recordamos QRLoopBand es una banda que se imprime sola el número de veces que indiquemos en su propiedad PrintCount. Lo que hice es armar los labels tal como quiero que quede cada fila (en este caso solo tengo que hacer una) y en el evento BeforePrint de la Banda de filas correspondiente llenar con los datos que correspondan a la fila en cuestion.

En el ejemplo que puse al inicio del hilo, son ocho filas, entonces le indicamos a las 2 bandas de filas que se imprimirán 8 veces. En el beforeprint de ambas bandas tomo los datos del array, grid o tabla que vaya a utilizar en cada caso.

De esta forma ya no me tengo que preocupar por espaciados, saltos de página ni nada, QReport lo hará solito y el reporte siempre saldrá en 2 partes.

Esta tediosón, pero peor es meterse con impresión directa o ir creando los labels. Lo voy a implementar y se los presento como me quedó.

fjcg02 14-01-2012 15:17:57

Otra cosa que puedes hacer es inprimir todo en letra enana y regalarle una lupa al colega!

No te descojones, que yo hacía un informe en el tamaño de letra más pequeño que soportaba una impresora. Yo no conocía a quien consumía el informe, pero cuando a un compañero le pregunté de cuanto reran los aumentos de la lupa que usaba, me preguntó porqué lo sabía. El tío se gastaba un brazo articulado con una lupa gigante ( tipo flexo ) con el que estudiaba el informe.

Otra solución aunqe imagino que ya la has explorado es que le envies a excel la información y automatices la impresión. Excel controla mejor la forma de hacer escalado en la opción de ajustar el informe a x páginas de alto por y páginas de largo.

Un saludo


La franja horaria es GMT +2. Ahora son las 22:15:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi