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 21-01-2008
mtirado mtirado is offline
Miembro
 
Registrado: mar 2007
Posts: 26
Poder: 0
mtirado Va por buen camino
Imprimir en Impresora Epson TM U220D

Hola a todos.
He intentado por todos los medios conocidos de imprimir un comprobante de venta en una impresora del tipo Epson TM U220D, pero la verdad que no puedo. Las dimensiones del papel son de 75 x 75 mm, pero no se cual es el tipo de papel, o al menos no aparece. Lo he probado imprimir en una impresora normal y si que lo hace pero cuando trato de hacerlo en una TM U220D, solo me toma la primera linea, pero ahi se para y no hace nada.
Primeramente imprimi directamente desde el canvas y luego desde el puerto LPT1, la primera forma solo me imprimio la primera linea pero con la 2da nada.
Alguien por favor podria decirme como puedo imprimir eso?
Sera de mucha ayuda.
Gracias.
Responder Con Cita
  #2  
Antiguo 21-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Con el Canvas te tiene que imprimir sin más problemas, por qué no nos pones el código que utilizas para imprimir con el "Canvas", y así ver en donde puede estar el problema.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 21-01-2008
mtirado mtirado is offline
Miembro
 
Registrado: mar 2007
Posts: 26
Poder: 0
mtirado Va por buen camino
sobre codigo.

Hola, mira aca te va un jemplo de como hago para imprimir, pero recuerda que no es desde una impresora normal y corriente, es en una para hacer tickets, perdona si este coentario esta de mas.

Printer.BeginDoc;
Printer.Canvas.TextOut(90, 90, LbComprobanteTexto.Caption);
Printer.Canvas.TextOut(90, 300, LbClienteTexto.Caption + LbCliente.Caption);
.....
Printer.EndDoc;


assignFile(Impresora, 'LPT1');
Write(Impresora, #27);
Writeln(Impresora, LbComprobanteTexto.Caption);
.....
CloseFile(Impresora);

Espero que esto sirva de ayuda para que me puedan entender y ayudar haber que es lo que puede ocurrir. Lo que creo que sea es que debo de poner el tamaño del papel, este debe ser de 75 x 75 mm.
Si alguien ha hecho algo parecido con este tipo de impresora por favor ayudenme.
Salduos.
Responder Con Cita
  #4  
Antiguo 21-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure SetPaperSize (intAlto,intAncho : Integer);
{aqui se define el tamaño del papel}
var
   ADevice, ADriver, APort : array [0..255] of Char;
   ADeviceMode : THandle;
   DevMode : PDevMode;
begin
   with Printer do
      begin
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         SetPrinter (ADevice, ADriver, APort, 0);
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         DevMode := GlobalLock(ADeviceMode);
         if not Assigned(DevMode) then
            ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
         else
            begin
               with DevMode^ do
                  begin
                     dmPaperSize:= DMPAPER_User;
                     dmPaperLength := intAlto;
                     dmPaperWidth:= intAncho;
                     dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLength or DM_PAPERWidth;
                  end;
               GlobalUnLock(ADeviceMode);
               SetPrinter(ADevice, ADriver, APort, ADeviceMode);
           end;
      end;
end;

procedure Imprimir_Alb_Fact(n:Integer);
var
Imprime_Pie:Boolean;
Imprimir:Boolean;
begin
Imprime_Pie:=False;
Imprimir   :=True;
//1 Albarán
//2 Factura
DmPan.Cli.IndexName:='';

SetPaperSize(DmPan.ImpresoraLargoPapel.Value, DmPan.ImpresoraAnchoPapel.Value);
Printer.Canvas.Font.Name:=DmPan.ImpresoraLetra.Value;
Printer.Canvas.Font.Size:=DmPan.ImpresoraTallaLetra.Value;

Case n of
1:begin
    if DmPan.AlbaContado.Value = True then
    Imprime_Pie:=True
    else
    Imprime_Pie:=False;

    if DmPan.UsuNivel.Value = '1' then
    begin
      if Application.MessageBox('¿Seguro que desea imprimir el Albarán?','Atención',mb_OkCancel +
      mb_IconQuestion)= idOk then
      Imprimir:=True
      else
      Imprimir:=False;
    end;

  end;
2:Imprime_Pie:=True;
end;

  if imprimir = True then
  begin

   With Printer.canvas do
   begin
    Printer.BeginDoc;

        Imprimir_Cabecera(n);
        Imprimir_Detalle(n);

        if Imprime_Pie = True then
        begin
        Imprimir_Pie(n);
        Imprimir_Total_Final(n);
        end;

    Printer.EndDoc;
   end;
  end;
end;

Con este ejemplo ves como puedes mandarle el tamaño del ticket a la impresora.

Veo que de 90 pasas a 300, no estará esa situación de línea fuera del ticket y por eso no se ve.

Las coordenadas normalmente sumándole 30 logras el cambio de fila, pero de 90 pasar a 300, creo que ya estás fuera del ticket.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 21-01-2008
mtirado mtirado is offline
Miembro
 
Registrado: mar 2007
Posts: 26
Poder: 0
mtirado Va por buen camino
Gracias por el codigo.
El ejemplo que te puse fue hipotetico, es decir es ese mismo codigo pero solo tome algunas lineas, no todas, para que supieras como lo hacia, o que utilizaba.
En el ejemplo que me pones, como pudo ponerle el tamanno al papel, es decir, en mi caso que el papel debe medir de 75 mm por 75 mm, el valor que le entro es un integer, pero imagino que deba convertir (75). Imagina que lo que quiero es imprimir los datos de un cliente con los pedidos de productos que ha realizado, la anchra debe ser de 75 mm pero el largo va a depender de la cantidad de productos que ha seleccionado. Como puedo hacer eso? Disculpame pero es que nunca me he dedicado a imprimir.
En el codigo que me envias no veo el codifo de las funciones Imprimir_Cabecera(n); Imprimir_Detalle(n); me seria de ayuda para ver como lo mandas a imprimir, y que coordenadas utilizas.
Muchas gracias por todo.
Un abarzo.
Yunier.
Responder Con Cita
  #6  
Antiguo 21-01-2008
mtirado mtirado is offline
Miembro
 
Registrado: mar 2007
Posts: 26
Poder: 0
mtirado Va por buen camino
sobre tamanno

En la funcion que le pasas el tamanno le pasas dos integer, que debo hacer para ajustar los 75 por 75 mm al valor integer.
Por otro lado la variable DMDin o algo asi es una clase que contiene las caracteristicas de la impresion?
Gracias.
Responder Con Cita
  #7  
Antiguo 21-01-2008
mtirado mtirado is offline
Miembro
 
Registrado: mar 2007
Posts: 26
Poder: 0
mtirado Va por buen camino
Impresion y tamaño papel.

Hola nuevamente.
En mi tema anterior les comentaba que necesitaba imprimir un comprovante de venta con los datos del cliente y los productos que compro. El tique debe ser de una medida de 75 por 75 mm.
El moderador me dio un codigo donde podia entrar el tamanno del papel, pero lo que le paso son dos integer, como puedo hacer para llevar estas medidas en milimetros a integer?
El codigo es:
Código Delphi [-]
procedure SetPaperSize (intAlto,intAncho : Integer);
{aqui se define el tamaño del papel}
var
   ADevice, ADriver, APort : array [0..255] of Char;
   ADeviceMode : THandle;
   DevMode : PDevMode;
begin
   with Printer do
      begin
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         SetPrinter (ADevice, ADriver, APort, 0);
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         DevMode := GlobalLock(ADeviceMode);
         if not Assigned(DevMode) then
            ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
         else
            begin
               with DevMode^ do
                  begin
                     dmPaperSize:= DMPAPER_User;
                     dmPaperLength := intAlto;
                     dmPaperWidth:= intAncho;
                     dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLength or DM_PAPERWidth;
                  end;
               GlobalUnLock(ADeviceMode);
               SetPrinter(ADevice, ADriver, APort, ADeviceMode);
           end;
      end;
end;

Por otra parte, a la hora de pasarle al canvas lo que quiero imprimir, que copordenas les debo pasar para que se ajusten a mi papel. En caso de que la linea sobrepase la hoja que ocurre? Da un salto de linea o me corta lo que deseo escribir???
Por jemplo: Printer.Canvas.TextOut(90, 90, LbComprobanteTexto.Caption);

Muchas gracias a todos.
Yunier.

Última edición por marcoszorrilla fecha: 21-01-2008 a las 20:36:28. Razón: Etiquetas Delphi
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
Como configurar una impresora TM U220D ivaylo Impresión 1 16-01-2008 15:27:16
Imprimir ticket con una Epson TM U220D mtirado Impresión 2 13-01-2008 00:05:42
Imprimir Tickets con impresora Epson rcor Impresión 1 03-11-2006 14:35:22
Resetear una Impresora Epson FX-880 AGAG4 Impresión 4 04-03-2005 19:09:47
Fuente impresora epson Novás Impresión 1 26-06-2004 18:58:12


La franja horaria es GMT +2. Ahora son las 15:10:29.


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