Club Delphi  
    Paypal   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 28-01-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Como lo prometido es deuda, vamos a "destripar" a QReport. La primera pregunta es ¿ y porque QReport ?.


Mi respuesta es: ¿ Y por qué no ?. Hasta la versión 7 de Delphi, Borland ha dado soporte a este generador de informes. Se compenetra muy bien con Delphi ( solo faltaba, esta escrito en Delphi) y puede hacer casi lo mismo que cualquier otro.

He trabajado con Cristal Report y no lo cambio por Qreport. Por lo menos en ambiente Delphi.

Una de los inconvenientes que mas se oye, es que no permite al usuario final diseñar sus informes, pero esto no es cierto... por lo menos en la versión profesional.

Ocurre que ( lo mismo con TeeChart) que la versión ofrecida gratis con Delphi es la versión light. Supongo que será un problema de costos y de no querer encarecer Borland su producto.

Politicas comerciales a parte, si se quiere hacer algo mas serio, yo recomiendo que se adquiera la versión profesional. Trae los fuentes o lo que es lo mismo, nos da la oportunidad de "retocarlo" a nuestro gusto.

De paso, podemos apreciar lo bien que programan los de QSoft. Como profesional, me quito el sombrero ante ellos y les digo "chapeau". Es una delicia leer sus fuentes. Las definiciones de clases, como utilizan la herencia, etc.

Si te gusta la OOP, solo por eso, deberias adquirir la versión profesional.

Las siguientes explicaciones se refieren a la versión Qrepor Pro 3.6.2.

Como siempre, espero que funciones en otras versiones pero no lo puedo asegurar porque no lo he probado.

saludos.
Responder Con Cita
  #2  
Antiguo 28-01-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Para cada papel, Qreport debe terner definido su nombre y sus dimensiones. Por ejemplo: A4 tiene por dimensiones 210 por 297 mm.

Además a cada papel, le asigna un numero o código que es el que le pasa a la impresora, para que esta lo utilice.

En todo este proceso, estamos asumiendo que la impresora reconoce el tamaño de papel que queremos usar.

Por eso, al principio, construimos un driver de impresora genérico y comprobamos, por medio de Word u otro procesador de texto, que funcionaba, esto es, que nuestra impresora reconocía ese tamaño.

El problema esta en que no conocemos de antemano que codigo tiene ese tamaño de papel.

En la pagina web de qsoft www.qusoft.com, puedes ver a la izquierda una columna con el titulo

DIY Fixes.

Pulsando te aparecen una serie de respuestas a problemas.

Localiza "Adding new paper formats".

Prácticamente te explica todo el proceso.

Debes comenzar por bajarte el programa printercheck. Una vez descomprimido, te aparecerá PRDrive.exe.

Esta utilidad, mediante llamadas al API de Windows te indica el codigo del papel que queremos usar.

De paso, puedes leerte los fuentes y aprenderás mucho sobre el manejo de impresoras, etc. Lo recomiendo.

Para el papel que hemos definido, llamado cheque, en mi impresora matricial y con el driver genérico/solo texto, obtuve el código 123.

Naturalmente, este código variará en función de la impresora, driver y tipo de papel.

Con este dato, ya podemos retocar los fuentes.

Saludos.
Responder Con Cita
  #3  
Antiguo 28-01-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
No hace falta decir, que antes de retocar ningún fuente, debemos hacer unas buenas copias de seguridad por aquello de la Ley de Murphy.

Abrimos Delphi y cargamos el paquete qrpt70.bpl.

Me estoy refiriendo a la versión de Delphi 7.0 y a Qreport Pro 3.6.2.

Debo suponer, que será igual o muy parecido con otras versiones, pero yo no lo he hecho.

Desde el cuadro package, cargamos qr3const.pas

Al principio de la unidad podemos encontrar:

Código PHP:
resourcestring
  SqrPaperSize0 
'Default size';
  
SqrPaperSize1 'Letter 8 1/2 x 11 in';
  
SqrPaperSize2 'Letter Small 8 1/2 x 11 in';
  
SqrPaperSize3 'Tabloid 11 x 17 in';
  
SqrPaperSize4 'Ledger 17 x 11 in';
  
SqrPaperSize5 'Legal 8 1/2 x 14 in';
  
SqrPaperSize6 'Statement 5 1/2 x 8 1/2 in';
  
SqrPaperSize7 'Executive7 1/2 x 10 in';
  
SqrPaperSize8 'A3 297 x 420 mm';
  
SqrPaperSize9 'A4 210 x 297 mm';
  
SqrPaperSize10 'A4 Small 210 x 297 mm';
  
SqrPaperSize11 'A5 148 x 210 mm';
  
SqrPaperSize12 'B4 250 x 354 mm';
  
SqrPaperSize13 'B5 182 x 257 mm';
  
SqrPaperSize14 'Folio 8 1/2 x 13 in';
  
SqrPaperSize15 'Quarto 215 x 275 mm';
  
SqrPaperSize16 '10x14 in';
  
SqrPaperSize17 '11x17 in';
  
SqrPaperSize18 'Note 8 1/2 x 11 in';
  
SqrPaperSize19 'Envelope #9 3 7/8 x 8 7/8';
  
SqrPaperSize20 'Envelope #10 4 1/8 x 9 1/2';
  
SqrPaperSize21 'Envelope #11 4 1/2 x 10 3/8';
  
SqrPaperSize22 'Envelope #12 4 \276 x 11';
  
SqrPaperSize23 'Envelope #14 4 \276 x 11';
  
SqrPaperSize24 'C size sheet';
  
SqrPaperSize25 'D size sheet';
  
SqrPaperSize26 'E size sheet';
  
SqrPaperSize27 'Custom Size';
  
SqrPaperSize28 'Cheque';     // Esto es lo que añadimos. 
Por supuesto que en la unidad hay muchisimas mas constantes. Si queremos, podemos traducirlas a nuestro idioma, pero lo fundamental es que hemos añadido una nueva etiqueta para nuestro papel.
Responder Con Cita
  #4  
Antiguo 28-01-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Mas complejos son los cambios a realizar en la unidad QRPrntr.pas, pero también secillos.


Código PHP:
type
  
All the known paper sizes }
  
TQRPaperSize = (Default,
                  
Letter,
                  
LetterSmall,
                  
Tabloid,
                  
Ledger,
                  
Legal,
                  
Statement,
                  
Executive,
                  
A3,
                  
A4,
                  
A4Small,
                  
A5,
                  
B4,
                  
B5,
                  
Folio,
                  
Quarto,
                  
qr10X14,
                  
qr11X17,
                  
Note,
                  
Env9,
                  
Env10,
                  
Env11,
                  
Env12,
                  
Env14,
                  
CSheet,
                  
DSheet,
                  
ESheet,
                  
Cheque// Este es el nuevo tipo definido
                  
Custom); 

Posteriormente definimos esta constante:

Código PHP:
const
.
.
dmpaper_cheque 123// Nuestro codigo para nuestro papel 
Ahora definimos las dimensiones:
Código PHP:
 
   cQRPaperSizeMetrics 
: array[Letter..Cheque0..1of extended =
      ((
215.9279.4), { Letter }
       (
215.9279.4), { Letter small }
       (
279.4431.8), { Tabloid }
       (
431.8279.4), { Ledger }
       (
215.9355.6), { Legal }
       (
139.7215.9), { Statement }
       (
190.5254.0), { Executive }
       (
297.0420.0), { A3 }
       (
210.0297.0), { A4 }
       (
210.0297.0), { A4 small }
       (
148.0210.0), { A5 }
       (
250.0354.0), { B4 }
       (
182.0257.0), { B5 }
       (
215.9330.2), { Folio }
       (
215.0275.0), { Quarto }
       (
254.0355.6), { 10X14 }
       (
279.4431.8), { 11X17 }
       (
215.9279.0), { Note }
       (
98.43225.4), { Envelope #9 }
       
(104.8241.3), { Envelope #10 }
       
(114.3263.5), { Envelope #11 }
       
(101.6279.4), { Envelope #12 - might be wrong !! }
       
(127.0292.1), { Envelope #14 }
       
(100.0100.0), { CSheet }
       (
100.0100.0), { DSheet }
       (
100.0100.0), { ESheet }
       (
175.0,  76.2)  { Cheque // Esta es nuestra definición
        
); 
Por último definimos el array para trasladar los tamaños del papel al codigo de la impresora


Código PHP:
   cQRPaperTranslate : array[Default..Customof integer =
       (
0,
       
dmpaper_Letter,
       
dmpaper_LetterSmall,
       
dmpaper_Tabloid,
       
dmpaper_Ledger,
       
dmpaper_Legal,
       
dmpaper_Statement,
       
dmpaper_Executive,
       
dmpaper_A3,
       
dmpaper_A4,
       
dmpaper_A4Small,
       
dmpaper_A5,
       
dmpaper_B4,
       
dmpaper_B5,
       
dmpaper_Folio,
       
dmpaper_Quarto,
       
dmpaper_10X14,
       
dmpaper_11X17,
       
dmpaper_Note,
       
dmpaper_Env_9,
       
dmpaper_Env_10,
       
dmpaper_Env_11,
       
dmpaper_Env_12,
       
dmpaper_Env_14,
       
dmpaper_CSheet,
       
dmpaper_DSheet,
       
dmpaper_ESheet,
       
dmpaper_cheque, { obtenemos este valormirando en el codigo de la impresora 
       $
100); 
Ya solo nos falta retocar la función :

Código PHP:
function QRPaperName(Size TQRPaperSize) : string;
const
  
Names : array[Default..Customof string = (
   
SqrPaperSize0SqrPaperSize1SqrPaperSize2SqrPaperSize3,
   
SqrPaperSize4SqrPaperSize5SqrPaperSize6SqrPaperSize7,
   
SqrPaperSize8SqrPaperSize9SqrPaperSize10SqrPaperSize11,
   
SqrPaperSize12SqrPaperSize13SqrPaperSize14SqrPaperSize15,
   
SqrPaperSize16SqrPaperSize17SqrPaperSize18SqrPaperSize19,
   
SqrPaperSize20SqrPaperSize21SqrPaperSize22SqrPaperSize23,
   
SqrPaperSize24SqrPaperSize25SqrPaperSize26SqrPaperSize27SqrPaperSize28 Esto eslo nuevo} );
 
begin
  Result 
:= Names[Size];
end

Recompilamos la libreria y la instalamos como de costumbre.
Responder Con Cita
  #5  
Antiguo 28-01-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Si todo el trabajo se ha hecho bién, al diseñar un informe, usando la clase TQuickRep, en el inspector de objetos, en el apartado Page, podremos seleccionar el tamaño de papel definido por nosotros ( cheque en nuestro ejemplo).


Deberá tener las dimensiones definidas a nuestro gusto y además, un código que será entendido por nuestra impresora matricial.

Con ello, ya podremos usar tamaños de papel definidos por el usuario.

Saludos.
Responder Con Cita
  #6  
Antiguo 29-01-2005
Avatar de vic_ia
vic_ia vic_ia is offline
Miembro
 
Registrado: ene 2004
Posts: 238
Poder: 23
vic_ia Va por buen camino
mi más sincera felicitación...!!!

una de las explicaciones mas simples y entendibles de las que he ledido aqui y en otros foros y sitios de programacion...

siempre he lidiado con escribir directamente al puerto por que no le hallaba por donde atacar el problema...

he llegado apenas a la definición del papel (excepcional por lo sencillo), y espero, el fin de semana completar los pasos y tener asi, la opcion de mejorar mis viejos y proximos proyectos...

gracias por la ayuda....
Responder Con Cita
  #7  
Antiguo 09-03-2005
Mass Mass is offline
Registrado
 
Registrado: mar 2005
Ubicación: Mazatlán, Sinaloa, México
Posts: 1
Poder: 0
Mass Va por buen camino
Unhappy Lo hice y no me funciono.

Hola que tal, soy Jorge y soy nuevo en este foro, mas bien nunca he estado en uno, soy mexicano y tengo un problema bastante serio.

Tengo un sistema que diario imprime hasta 1000 folios a 1/3 de carta y lo hacia bastante bien con QR y con la impresora en tamaño del papel CUSTOM, hasta que por necesidades de la empresa actualizan equipos y estos traen instalados XP, ahí mi problema, no puedo personalizar el tamaño del papel, me encontre con tu articulo y me parecio bastante logico y muy bueno, pero hice todo hasta que llegue a probarlo con word y no me funciono, configuro la pagina con un formato llamado ABONO que mide 1/2 carta y si me muestra ese tamaño en la pantalla, pero al momoemtnode mandar imprimir se salta hacia la otra hoja, no se detiene al finalizar el documento. saludos espero y puedas ayudarme.
Responder Con Cita
  #8  
Antiguo 25-07-2006
JODELSA JODELSA is offline
Miembro
 
Registrado: may 2003
Posts: 89
Poder: 24
JODELSA Va por buen camino
Como modificar los fuentes de Qreport

Eres la persona que mas domina este tema y mira que he luchado mucho con este problema hasta el punto que me siente desesperado.

Yo pude crear la impresora y el formulario con las medida que necesito, tambien lo probé en Word y todo funiciono perfecto. lo que no he podido hacer es retocar los fuentes de QReport.

Si no es mucha molestia me podria explicar mejor como cargo el paquete
qrpt70.bpl

Nota: Uso delphi 7.0 y la version de Qreport que viene con este.




Cita:
Empezado por jlmelida
Si todo el trabajo se ha hecho bién, al diseñar un informe, usando la clase TQuickRep, en el inspector de objetos, en el apartado Page, podremos seleccionar el tamaño de papel definido por nosotros ( cheque en nuestro ejemplo).


Deberá tener las dimensiones definidas a nuestro gusto y además, un código que será entendido por nuestra impresora matricial.

Con ello, ya podremos usar tamaños de papel definidos por el usuario.

Saludos.
Responder Con Cita
  #9  
Antiguo 20-08-2006
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Hola JODELSA:

Perdona el retraso en contestar, pero es que como ya dije tengo muy poco tiempo y mis entradas al foro suceden de tarde en tarde.

Antes de seguir, recuerda que es necesario que tengas la versión profesional que es la que trae los fuentes.
Normalmente los tendras en un subdirectorio de Delphi7. El nombre por defecto es quickrpt.
Cargas Delphi, y ante de nada, borras todo lo que tengas. ( Menu File y luego Close All). Así se queda "limpio" el Ide de Delphi. Luego, otra vez con el mismo menu : File, Open y te dirijes al directorio quickrpt. Veras que los paquetes ( Packages) aparecen con iconos distintos. Para la version de Qreport 4 son QR4RunD7 y QR4DesignD7. Para la version 3 son qrpt70.bpl y dclqr70.bpl.

Si remarcas el package qrpt70 ( y tienes los fuentes ) te aparecerá en una ventana Package qrpt70, las unidades y
las que requiere. El aspecto es el clásico de un TreeView o arbol como el del explorador de windows.

Otra vez doble click sobre el fuente que quieras retocar y despues de escribir el nuevo código, terminas dandole al menú install.

Tu nuevo paquete retocado, habrá sustituido al antiguo. Acuerdate de sacar unas buenas copias de seguridad antes de empezar.

Cualquier duda que tengas, me la comunicas y prometo contestarla antes de fin de año.

Saludos.
Responder Con Cita
  #10  
Antiguo 10-11-2007
ldmar3 ldmar3 is offline
Registrado
 
Registrado: nov 2007
Posts: 9
Poder: 0
ldmar3 Va por buen camino
nesesito ayuda para imprimir

oye nesesito una pequeña ayuda mira es que no se como imprimir en delphi tan solo serian unos campos en donde podria desplazarme facilmente para ingresar datos y luego imprimirlos no se si pasarlos a un dbgrid primeramente y despues imprimirlo pues ya que como me di cuenta desde el qreport se puede imprimir me darias una idea o me ayudarias por favor ya que vi que tu si te la sabes y pues seria chido que me ayudaras.. gracias



estare en contacto
Responder Con Cita
  #11  
Antiguo 10-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Hola, Bienvenido a ClubDelphi, como a todos, te recomiendo leas la guia de estilo, te ayudará a redactar tus preguntas.

-En delphi, File New -> Other -> QReport
-Necesitas un TQuery (TIBQuery, TMdoQuery, etc) para extraer los datos.
-En el quickreport, tienes su propiedad Bands, pon a true en el inspector de objetos el HasDetail.
- Enlaza el QuickReport con la query.
-Añade varios qrDBText, configura el dataset y el FieldName
- boton derecho y pulsa sobre Preview.

Podrás ver los resultados.

Si tienes dudas, abre un hilo nuevo, ya que aquí no va muy bien este tema.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 13-11-2007
ldmar3 ldmar3 is offline
Registrado
 
Registrado: nov 2007
Posts: 9
Poder: 0
ldmar3 Va por buen camino
otra duda

oye no me funciono ese procedimiento porque no tengo tquery o los otros objetos que me señalaste tal vezs porque tengo deplhi 5.0 o nada que ver
espero respuesta
Responder Con Cita
  #13  
Antiguo 13-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Como ya dije, tu duda no tiene nada que ver con impresoras matriciales, así que continuamos aquí. Por favor, responde en ese hilo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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


La franja horaria es GMT +2. Ahora son las 14:33:20.


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