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 02-08-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
imprimir tickets

Buenas de nuevo,

He conseguido, gracias vosotros, foreros, imprimir en impresora de tickets cargando las impresoras asignando la impresora con printer.printers y luego con

Código Delphi [-]
with Printer do
    begin
      PRINTER.PrinterIndex:=COMBOBOX1.ItemIndex;
      r := Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
      BeginDoc;
      Canvas.Brush.Style := bsClear;
      for i := 0 to IMPRIMIR.Count -1 do
       Canvas.TextOut(200,200 + (i *
                   Canvas.TextHeight(IMPRIMIR.Strings[i])),
                   IMPRIMIR.Strings[i]);

      Canvas.Brush.Color := clBlack;
      Canvas.FrameRect(r);
      EndDoc;

Pero tengo el problema que si imprimo una o dos lineas por ejemplo, me saca la tira completa.
Hay alguna forma de sacar el ticket justo?.
Responder Con Cita
  #2  
Antiguo 02-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola anubis.

Habria que hacer pruebas sobre la ticadora para estar seguro...

Así a simple vista, estas dibujando un rectángulo determinado por el total del alto de la página,
Código Delphi [-]
  R:= Rect(200,200,(Pagewidth - 200),(PageHeight - 200));
me parece que por ahí viene el asunto.

Yo intentaría ir sumando las sucesivas alturas de las líneas para ajustar el alto del rectángulo a ese valor; algo similar a:
Código Delphi [-]
...
var
  R: TRect;
  i: Integer;
  TotHeight: Integer;
begin
  with Printer do
  begin
    BeginDoc;
    TotHeight:= 0;
    for i := 0 to IMPRIMIR.Count -1 do
    begin
      TotHeight:= Canvas.TextHeight(IMPRIMIR.Strings[i]) * i;
      Canvas.TextOut(200, 200 + TotHeight, IMPRIMIR.Strings[i]);
      Inc(TotHeight, TotHeight);
    end;
    R:= Rect(200, 200, (Pagewidth - 200), (TotHeight - 200));
    Canvas.Brush.Style := bsClear;
    Canvas.Brush.Color := clBlack;
    Canvas.FrameRect(R);
    EndDoc;
  end;
  ...
No probé el código por que desconozco algunos datos, pero creo que en líneas generales tendría que funcionar.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-08-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Gracias por contestar .

Lo probaré y ya os cuento.
Responder Con Cita
  #4  
Antiguo 22-08-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Hola,

El codigo si funciona pero la primera vez, las siguientes en vez de las letras aparecen recuadros negros.

De momento lo estoy probando con una impresora virtual pdf y asi sale, con el otro codigo que puse no aparecia eso.
Le quite
Código Delphi [-]
Canvas.Brush.Style := bsClear;     Canvas.Brush.Color := clBlack;     Canvas.FrameRect(R);
y ya funciona bien. Ahora me queda probarlo en la impresora de tickets, pero la impresion, al menos en pdf, si funciona.
Responder Con Cita
  #5  
Antiguo 27-08-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
hola de nuevo,

Ya probe la impresion, hasta le he quitado mas cosas y he dejado
Código Delphi [-]
 BeginDoc;
      TotHeight:= 0;
          for i := 0 to IMPRIMIR_ticket.Count -1 do
          begin
            TotHeight:= Canvas.TextHeight(IMPRIMIR_ticket.Strings[i]) * i;
            Canvas.TextOut(200, 100 + TotHeight, IMPRIMIR_ticket.Strings[i]);
            //Inc(TotHeight, TotHeight);
          end;
         // r:= Rect(200, 100, (Pagewidth - 200), (TotHeight - 100));
          //Canvas.Brush.Style := bsClear;
         // Canvas.Brush.Color := clBlack;
        // Canvas.FrameRect(R);
          EndDoc;
        end;

Imprimir imprime bien, pero, si imprimo 3 lineas me saca la tira completa, no se para despues de las 3 lineas.
Esto alguno sabe como se evita en una impresora de tickets que mande un LF (creo que se llama asi).

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
imprimir en impresora de tickets en con reportbuilder ingmichel Impresión 4 25-07-2012 00:33:22
imprimir acentos en impresora de tickets Er_Manué Impresión 3 18-04-2012 23:03:19
Imprimir tickets en TM-300 Epson el-mono Impresión 4 16-04-2009 12:10:32
Imprimir Tickets con impresora Epson rcor Impresión 1 03-11-2006 15:35:22
Imprimir tickets con Epson TM J2100 Sotrono Impresión 1 10-11-2004 11:14:50


La franja horaria es GMT +2. Ahora son las 20:12:15.


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