Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
Diseño reporte independiente de Impresora

¡Hola!

Les contara, de forma rápida lo que sucede, y sí alguien de ustedes ha dado con una solución.

Sucede, por ejemplo, que se desarrolla un sistema, en este caso, el reporteador que so uso fue crystal reports, con Delphi.

El sistema trabaja en Red.

Y las impresiones salen en un fromato predeterminado, manejando las caídas de acuerdo al formato impreso.


y se imprimen en varias impresoras, por alguna extraña razón el reporte que se desarrollo calculando las caidas en una impresora Laser, es diferente a si se imprime el mismo reportes en una de inyección de tinta. por lo tanto se tuvo que crear una version del reporte apra la de inyección de tinta.

y viceversa.

Ahora, tengo una duda, estoy por desarrollar un sistema, que si todo sale bien en la parte comercial, se va a vender en varios establecimientos.

Y tengo esa duda con los reportes, si se tiene que adaptar a una impresora predeterminada, o se puede crear un informe génerico.

o habrá un reporteador como crystal reports, que te peromita editar el reporte y adapatrlo a una impresora en especial, para en el apquete de instalación guardar una cantidad de reportes iguales pero adaptados a un impresora en especial.


O poder modificar el reporte ya instalado en la maquina del establecimiento y que el propio usario lo reacomode.


alguien que me asesore, me de un norte, una diea.


Gracias por tu Tiempo

Paoti Rios.
Monterrey. N.L. México.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #2  
Antiguo 16-06-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Claro, ese es un problema al que me he enferentado muchisimas veces.

Pues mira, yo como lo he solucionado es usando QuickReporty un procedimiento que cargue desde un archivo de configuración las posiciones de las etiquetas así como el tipo de hoja, impresora a la que se enviará, tamaño tipo y estilo de fuente, etc etc.

O puedes también que a partir de un archivo de configuracion hacer un procedimiento que imprima directamente en el canvas de la impresora.

Bueno, esas son las soluciones que particularmente yo he dato a ese problema.

suerte mi amigo
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 16-06-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
mmmh, seria escribir en el Canvas.....


pero si sedesconoce la impresora destino, que va a usar el cliente, puede ser de cualqueir marca, de cualqueir modelo, o tecnología.


si tengo esa incertidumbre, que sería, crear procedimientos genéricos,

vaya, el formato de la hoja que se a ausar( el impreso) es un estadár, y la aplciación debe ser capaz de que enc ualquier impresora, las caídas den correctas.


como ven!
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #4  
Antiguo 16-06-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Pues si haces que el procemiento defina las caidas e impresora desde un archivo de configruación no tendrías ningún problema.

Por ejemplo, que defina el tamaño del camvas a partir del archivo en cuestion, y el índice de la impresora, y de igual manera que lea que campos y de que tablas mostrará la info y en que posiciones.

si cambian de impresora o de hoja o de formato, pss solo necesitarás reconfigurar el archivito.

:P
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #5  
Antiguo 16-06-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
no sabran cual reporteador, sea algo parecido a Crystal, pero mejor que se pueda incrustar en la aplicación, o un modelador de informes, y que se pueda ajustar el reporte con las caidas, de una forma visual.


Solo tengo experiencia con Qreports, los demas los desconozco!



si no para empezar a trabajar con lo de las caidas y el canvas.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #6  
Antiguo 16-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Yo, lo solucioné asi:

Cree el reporte usando medidas en milimetros para posicionar los campos (un archivo de configuracion +- así:

x,y,Nombrecampo

Luego (con qreport) defino una banda del tamaño máximo de la hoja impresa (menos los márgenes).

Al leer el band.width, band.heigth obtengo el ancho y alto en pixeles del area imprimible (conozco las medidas del papel en mi caso carta 8½ x 11" (no me acuerdo en cm pero pueden multiplicar por 2,54 1" = 2,54cm) con 1cm de margen por cada lado).

Luego con esa información aplico una regla de 3 y determino la ubicación en pixeles de donde debo colocar la impresión.

Espero me entiendas y te sirva
__________________
Sitrico
Responder Con Cita
  #7  
Antiguo 16-06-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
jejejej, sitrico, mi no entender.



¿la regla de ters apra que la usas!!!!?


y con esto, esto lo guardas en un archivo y en el evento before printing vas llamando a las cordenadas y los campos.


me imagino que la solución es para usar el reporte, no importando en que impresora, y volviandoa calcular las nuevas caidas, haciendo prueba y error en el cliente.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #8  
Antiguo 17-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 21
sitrico Va por buen camino
Red face

Te explico algo mejor:

La hoja carta mide: 8,5x11 pulgadas = 21,59x27,94centimetros.

Al crear un reporte pones los márgnes a 1 cm por cada lado.

Te queda un área de impresión de:

21,59-1-1= 19,59 (ancho)
27,94-1-1=25,94 (alto)

Te habia puesto una complicada explicación de las bandas pero probando encontre lo sigiente:

Al asignar el tamaño del papel del reporte el QReport ajusta las propiedades Width y Height (del papel) al tamaño en puntos, así que puedes usar esos valores como base para tus calculos. por ejem:

Código Delphi [-]
// OnBeforePrint
// Page = Letter, portrait
PageWidthPx := Report.Width; //816
PageWidthCm := Report.Page.Width / 10; // 215,4/ 10 = 21,54 (estaba en milimetros)
PageHeightPx := Report.Height; //1056
PageHeightCm := Report.Page.Length / 10; // 279,4 / 10 = 27,94

Entoneces puedes decir que 21,59 cm = 816 px y 27,94 = 1056px
y puedes calcular lo siguiente:

Si quieres imprimir a 5,5cm del borde izquierdo y 3,7 desde el superior aplicas:

Código Delphi [-]
// aqui puedes incluir un factor de ajuste (ver ultima nota)
PosX := ((PageWidthPx * (5,5 - 1)) div PageWidthCm) + FactorAjusteH; //  (-1) por el margen  
PosY := ((PageHeigthPx * (3,7 - 1)) div PageHeightCm) + FactorAjusteV ;
WidthT := (PageWidthPx * (WidthCampo)) div PageWidthCm;

Y así puedes determinas la posición y el ancho en pixeles de cualquier objeto a imprimir.

Para implementarlo luego defines un archivo con las posiciones x,y y ancho de cada campo y usas un loop en onBeforePrint, para colocar los objetos.

También debes considerar que el punto indicado apunta a la esquina superior izquierda del texto por lo que debes hacer los ajustes correspondientes según la alineación.

Si usas varias bandas entonces debes calcular la posición vertical de la banda sumando los "altos" de las bandas impresas.

Un consejo: Calcula los valores de ancho y alto (WidthP y HeithP) en tiempo de ejecución justo antes de imprimir el reporte ya que pueden variar según la impresora seleccionada.

Otro dato: Es posible que debas incluir un factor de "ajuste" de la esquina superior izquieda del papel (sumar ó restar n pixeles) a cada objeto a imprimir ya que posición de la esquina superior izquierda del area de impresión varia siempre de una impresora a otra (especialmente en las de matriz de puntos)

Espero haya quedado más claro.
__________________
Sitrico

Última edición por sitrico fecha: 17-06-2007 a las 18:52:04.
Responder Con Cita
  #9  
Antiguo 18-06-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
podrias usar ReportBuilder o FastReports ambos incluyen componentes para edicion visual de los reportes
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
RAVE - Se pega el reporte cuando utilizo un tipo de impresora Alexander Impresión 0 28-05-2007 16:31:57
procedimiento en un hilo independiente jorodgar Varios 2 04-08-2005 10:18:11
Imprimir con el tamaño definido por el reporte, no de la impresora Alexander Impresión 0 21-07-2005 23:23:28
Form independiente Delfino Varios 0 11-01-2004 01:24:06
Diseño de reporte QuickReport mediante texto acalderonr Impresión 1 24-11-2003 08:45:19


La franja horaria es GMT +2. Ahora son las 11:56:31.


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