Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Problema Imprimir Ticket con QuickReport (https://www.clubdelphi.com/foros/showthread.php?t=52610)

enecumene 25-01-2008 21:09:07

Problema Imprimir Ticket con QuickReport
 
Ya he buscado por mas de 1,000 hilos en toda la mañana sobre la continuidad de los Tickets de impresion con QuickReport, sucede lo siguiente tengo reporte en quickReport para imprimir los tickets de factura, tiene un tamaño de 75mm x 150mm, pero yo quiero que el reporte sea continua y que no lo tome como una sola hoja, si imprimo un ticket con muchos articulos me imprime en varias hojas, o sea, deja un espacio en blanco y vuelve empieza de nuevo, hay alguna forma de configurarlo para que sea continua?. Espero que me hayan podido entender.

Saludos.

enecumene 25-01-2008 21:11:31

Se me Olvidó decir que tengo una impresora Epson TM-U220D. :D

Saludos.

Caral 25-01-2008 21:13:41

Hola
No se exactamente a que te refieres con continuo?
Yo tengo un reporte en el cual imprimo en mi caso recibos con una impresora de tickest, osea de esas pequeñas y no tengo problemas.
Fijate en la configuracion del la impresora, hay una parte en donde sale el tamaño de la hoja, incluso puedes crear uno propio a la medida.
Saludos

egostar 25-01-2008 21:13:56

Yo te recomiendo que para estos menesteres uses el canvas de impresión, QReport automáticamente te envía el salto de página y no tienes control de la impresión.

Bueno, solo es una sugerencia.

Salud OS

eduarcol 25-01-2008 21:16:12

porq no imprimes al canvas?? en caso de que esta solucion no te guste puedes hacer un trampa, prueba esta configuracion

Bandas,

Title
Detail
Summary

lleva los margenes a Cero (0), con esto no te va a dar continuidad pero da la impresion que si lo hiciera. No lo he probado pero en teoria debe funcionar.

enecumene 25-01-2008 21:23:58

Cita:

Empezado por Egostar (Mensaje 8123)
Yo te recomiendo que para estos menesteres uses el canvas de impresión, QReport automáticamente te envía el salto de página y no tienes control de la impresión.

Bueno, solo es una sugerencia.

Salud OS

Gracias Egostar, si supieras nunca en mi vida he trabajado con canvas y eso que es la primera vez que hago impresiones de este tipo (la de Tickets). Existe algun tutotial o ejemplo?. te lo agradeceria.

Cita:

Empezado por eduarcol (Mensaje 1133)
porq no imprimes al canvas?? en caso de que esta solucion no te guste puedes hacer un trampa, prueba esta configuracion

Bandas,

Title
Detail
Summary

lleva los margenes a Cero (0), con esto no te va a dar continuidad pero da la impresion que si lo hiciera. No lo he probado pero en teoria debe funcionar.

Gracias eduarcol, hare la prueba a ver.

Saludos.

Caral 25-01-2008 21:33:30

Hola
En mi caso lo tengo todo en el detailBand, con esto se puede controlar el tamaño o que sea continuo si se quiere ya que el detail cambiara segun la informacion, como en un reporte cualquiera.
Al usar un title o un sumari cortara la impresion, a mi parecer es mas complicado, salvo que uses el cambas, como te indicaron, pero te toparas con el problema de como lo cuadras al tamaño, creo.
Egostar es el experto en esto, el te pude guiar mejor.
Saludos

enecumene 25-01-2008 21:43:21

Amigo Eduarcol probe tu propuesta pero no me funciono:

Cita:

---------------------------
Debugger Exception Notification
---------------------------
Project SalonPlus.exe raised exception class EAccessViolation with message 'Access violation at address 004BF867 in module 'SalonPlus.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

eduarcol 25-01-2008 21:45:12

pero ese error no tiene nada que ver con lo que te propongo :confused:

de todas formas el salto de pagina con esa configuracion siempre lo vas a tener, la unica forma es imprimiendo directo al canvas

enecumene 25-01-2008 21:49:07

Pues vere en la red algun tutorial sobre la impresion con canvas, ya que nunca lo he usado pero siempre hay una primera vez no?.

Saludos.

eduarcol 25-01-2008 21:53:17

ya buscastes en el foro??

ya he visto unos cuantos ejemplos por alli

enecumene 25-01-2008 22:15:55

Cita:

Empezado por eduarcol (Mensaje 261018)
ya buscastes en el foro??

ya he visto unos cuantos ejemplos por alli

Amigo Eduardo donde estas esos ejemplos que dices? no encuentro uno bueno y completo y ni siquiera en la red, o es que estoy buscando mal?

Saludos.

egostar 25-01-2008 22:18:30

Cita:

Empezado por enecumene (Mensaje 260998)
Gracias Egostar, si supieras nunca en mi vida he trabajado con canvas y eso que es la primera vez que hago impresiones de este tipo (la de Tickets). Existe algun tutotial o ejemplo?. te lo agradeceria.

Bueno, aqui te pongo un pequeño código, pruebalo y adaptalo a tus necesidades

Código Delphi [-]
Uses Printers;

procedure Form1.Imprime;
var 
   I,X,Y,Lineas : Integer;
begin
   with Printer do begin
      Canvas.Font.Size := 10;
      Canvas.Font.Name := 'Courier New';
      Orientation := poLandscape;
      Y := 10;  //Se asigna en que posición se va a comenzar a imprimir 
      X := 100; //Asignamos (en este caso) en que columna se va a imprimir
      Lineas := 100; //Asignamos cuantas lineas vamos a imprimir;
      BeginDoc;
      for I := 1 to lineas do begin
          Canvas.TextOut(X,Y,'LINEA A IMPRIMIR');
          Y := Y + TextHeight('Yy'); //Esto funciona como un ENTER 
      end;
      EndDoc;
   end;
end;

Salud OS

eduarcol 25-01-2008 22:21:58

aqui hay un hilo donde hablan tambien del canvas y del tamaño

http://www.clubdelphi.com/foros/show...imir%2C+canvas

enecumene 25-01-2008 22:24:04

Muchas Gracias Amigo Egostar!, de verdad no se como agradecertelo.

Cita:

Empezado por eduarcol (Mensaje 261040)
aqui hay un hilo donde hablan tambien del canvas y del tamaño

http://www.clubdelphi.com/foros/show...%2C+canvas

ahora mismo lo estoy revisando amigo eduarcol, muchas gracias.

Saludos.

enecumene 13-02-2008 20:26:26

Amigo Egostar, empecé a probar el código que me facilitaste para imprimir con canvas, excelente, me funciona perfecto, pero tengo un par de dudas:

Código Delphi [-]
procedure Imprimir;
var
   I,X,Y,Lineas : Integer;
begin
   with Printer do begin
      Canvas.Font.Size := 10;
      Canvas.Font.Name := 'Courier New';
      Orientation := poLandscape;
      Y := 100;  //Se asigna en que posición se va a comenzar a imprimir
      X := 100; //Asignamos (en este caso) en que columna se va a imprimir
      Lineas := 100; //Asignamos cuantas lineas vamos a imprimir;
      BeginDoc;
      for I := 1 to lineas do begin
          Canvas.TextOut(X,Y,'LINEA A IMPRIMIR');
          Y := Y + Canvas.TextHeight('Yy'); //Esto funciona como un ENTER
      end;
      EndDoc;
   end;
end;

Me imprime desde el inicio hasta al final de la hoja o sea me repite la linea desde la primera linea de la hoja hasta la ultima, me imagino que esa es la función de este pedazo de código:

Código Delphi [-]
for I := 1 to lineas do begin
          Canvas.TextOut(X,Y,'LINEA A IMPRIMIR');
          Y := Y + Canvas.TextHeight('Yy');

y si son nada mas dos lineas?, como saco los valores desde un DBGrid? de la forma normal:

Código Delphi [-]
for I := 1 to lineas do begin
           Canvas.TextOut(X,Y,'+ADOTable.Field[0].asstring+');
           Y := Y + Canvas.TextHeight('Yy');

o desde el mismo DBGrid (eso no lo sabría hacer).

Saludos.

AzidRain 13-02-2008 22:56:48

A reserva de que me mandes por un tubo (o a freir espárragos en España) yo creo que los que te han sugerido usar directamente el canvas tienen toda la razón. QReport no se hizo para este tipo de tareas y por lógica no es lo que hace mejor. Estoy de acuerdo que es la forma más cómoda de hacerlo pero como ya te diste cuenta no es la que te da mejor resultado. Por experiencia propia puedo decirte que vale mas invertirle algunas horas trabajando en algo cuyo resultado no puedes ver de inmediato (como en QReport) pero que al final obtienes un resultado muy bueno. Si te pones a machetearle veras que inclusive puedes crear tu propia clase que se encargue de imprimir directamente el ticket y al final te será mucho más fácil.

luchifer 27-05-2008 17:29:56

Gracias lo probare
 
Pero de entrada esta super sencillo


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

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