Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
como poder imprimir en diferentes tamaños de Papel

buenos dias...
esta es una duda que tengo.... (si alguien tiene alguna idea)

Se puede "acomodar" la informacion que se muestra en cualquier Reporte en funcion al tamaño de la pagina???

ejemplo en A4 tengo X cantidad de espacio Caracateres en Portrait y Y cantidad en Landscape... pero si ese mismo reporte lo quisiera usar en un A3 por ejemplo.... como poder utiilzar el espacio de sobra

espero que alguien me haya entendido

gracias
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 23-04-2011
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Usualmente sí; pero ...

Ante todo, no entiendo porque quieres desperdiciar hojas grandes en reportes que caben en unas más pequeñas. En últimas, si es porque ustedes tienen un gran stock de hojas grandes, me parece más práctico simplemente recortarlas después de imprimir y reusar el sobrante para memos, que es lo que usualmente se hace.

Dicho lo anterior, intentaré responder la pregunta con cierto detalle desde el punto de vista técnico.

En teoría, usualmente sí es posible; pero, en la práctica no es precisamente facil, ni los resultados muy buenos.

De entrada, como dices, la idea sería usar papel de tamaño mayor al original porque, si es menor, aunque el reporte puede caber, a menudo resultará ilegible, en especial para quienes no tengan buena vista.

Hay dos maneras de proceder:

1. La más facil es usar la capacidad que para tal fin tenga la impresora, ya que en las más modernas suele haber una opción para imprimir a escala; pero, no todas las impresoras la tendrán. Por otro lado, esta opción es propensa a imprimir en tamaño ilegible, o por lo menos antiestético. A menudo hay que probar bastante para conseguir una buena imágen

2. La otra opción es ajustar las dimensiones por programación y eso depende del reporteador que se tenga. En el caso de Quick Report, parte del trabajo lo hacen automáticamente las propiedades de alineamiento de algunos componentes; pero, en general sería necesario escalar las fuentes y redistribuír las posiciones de ciertos campos.

Para escalar las fuentes, podría escribirse una rutina general que calcule la proporción entre el tamaño original y el tamaño actual, y en base a eso ajustar la fuente de default del reporte; pero, habría también que recorrer todos los componentes porque no puedes garantizar que todos usen la fuente de default.

Ese método funcionaría en teoría; pero, debido a los redondeos necesarios para ajustar los tamaños de fuentes y a la disponibilidad de tamaños de las mismas (en especial porque tampoco puede garantizarse que todas sean true type), aplica lo mismo que he dicho antes : Es probable que el resultado automático no sea satisfactorio.

Lo anterior obliga a hacer frecuentes ajustes personalizados a cada reporte. Como si fuera poco, también tocaría tener en cuenta la posición de campos que no estén centrados en el reporte, ni en los extremos del mismo. y eso si muy dificil de calcular de manera automática

Palabras más, palabras menos, una rutina genérica se puede hacer; pero, a menudo los resultados no serán muy buenos. Mi consejo es no gastarle tiempo a eso; mejor utiliza la solución normal que mencioné al principio
Responder Con Cita
  #3  
Antiguo 27-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por rolandoj Ver Mensaje
Ante todo, no entiendo porque quieres desperdiciar hojas grandes en reportes que caben en unas más pequeñas.
Creo que me explique mal.....
lo que quiero hacer es basicamente 2 reportes uno en hoja A4 landscape y el otro en hoja A3 (el Formulario de donde invoco al reporte tendria opciones como.... Hoja A4 / Hoja A3

pero en lugar de crear 2 unidades, hacerla en una sola, porque los procedimientos (reporte) seria el mismo... aunque para ser sinceros el que se usuaria en A3 tendria mas informacion en columnas

entonces... lo que se me ocurrio era crear un reporte con Labels los cuales cambiaran de valor en el OnPrint de la linea detalle

con esto creo que estaria solucionado, ademas que me ayudaria mucho con un tema que aun esta rondando mi cabeza.. que es el como saber la longitud maxima de un campo para determinar el tamaño del componente QrdbText

no les ha pasado que colocan el componente asociado a un datasource dentro del reporte y en algunas ocasiones o es muy grande o muy chico el espacio que le asignamos al componente?


espero sus comentarios
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 27-04-2011
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
Mejor usa la herencia

Hola,

Si ese es el caso, una mejor solución es usar la herencia:

Simplemente, son dos reportes diferentes; pero, comparten la mayoría de los campos. El padre sería el que tuviera menos campos y el hijo el otro. De esa forma, al crear el formulario hijo, solo tendríasque cambiarle el tamaño a la hoja, adicionarle los campos, y reemplazar los métodos virtuales a que hubiera lugar. Claro, eso en el supuesto que tú reporteador no ponga mayores problemas con el tamaño de la hoja (no sé las versiones más nuevas de QuickReport; pero, como he comentado en varias ocasiones, al menos las versiones viejas tienen problemas con eso).

Esa es la forma standard para desarrollar reportes. De hecho, yo tengo jerarquicamente varios formularios modelos que me permitan, vía herencia, desarrollar rápidamente formularios específicos.

Con respecto al tema del tamaño de los campos y que hacer cuando este es excedido, para eso también hay una metodología; pero, sería un poco más compleja de explicar aquí. Tan solo dire que en QuickReport se basa en el uso de bandas hijas y en la propiedad AutoStretch combinada con AutoSize
Responder Con Cita
  #5  
Antiguo 27-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Tienes un ejemplo que puieda aplicar?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 29-04-2011
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Poder: 18
rolandoj Va por buen camino
No; pero ...

Hola,

La verdad, no tengo ejemplos a la mano porque hace años adopté una metología que no usa los TDataSet. Sin embargo, no es dificil armar un ejemplo conceptual:

Supongamos que tenemos una tabla con los campos CODIGO, NOMBRE y VALOR (dato Currency). Se necesita listar todos los registros y al fin imprimir la suma de la columna VALOR. Digamos que tenemos otra tabla, con los mismos campos y con uno adicional llamado ESTADO, que debe también imprimir la suma de la columna VALOR. Para imprimir ambas tablas, sigue estos pasos :

1, Para la primera, crea un formulario de impresion en la forma usual, colocando una banda detalle y sobre esta los campos CODIGO, NOMBRE y VALOR. Llamalo frmQRTabla1 del tipo TfrmQRTabla1.

2. Agrega una banda resumen y coloca en ella un TQRLabel para imprimir la suma.

3. Implementa la lógica de la suma.

4. Para la segunda crea un formulario heredado de TfrmQRTabla1. Cambia el tamaño de la hoja. Con ello se amplia la banda detalle; sobre ella coloca el campo para ESTADO. Luego cambia la fuente de datos para el QRReport y para los 3 campos. Ya puedes usarlo, sin necesidad de reescribir la lógica de la suma

Analizalo con calma y verás que es muy facil crear modificaciones sencillas a los reportes, sin necesidad de reproducir toda la lógica de un formulario.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
obtener tamaños de papel validos de la impresora hspirit Impresión 2 16-02-2011 23:16:11
Colocar Diferentes Tipo De Letra Ydiferentes Tamaños a Itens De Un Combobox gulder Varios 16 28-11-2008 14:47:40
Imprir en una matricial con tamaños diferentes de letra asegurpe Impresión 3 17-04-2004 15:29:50
que usar o como para poder imprimir? mrmanuel Impresión 4 30-03-2004 09:20:31


La franja horaria es GMT +2. Ahora son las 05:24:27.


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
Copyright 1996-2007 Club Delphi