Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 17-06-2007
Avatar de sitrico
[sitrico] sitrico is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 295
Poder: 24
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
 



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 09:17:42.


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