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

 
 
Herramientas Buscar en Tema Desplegado
  #17  
Antiguo 09-06-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 23
AzidRain Va camino a la fama
Post

Yo estoy a punto de iniciar un proyecto que incluira estas impresoras y lo había pensado mucho por el problema que tiene nuestro amigo el cual me resulta una completa ironía: Es mas díficil imprimir de la forma más simple.

Por ahí vi que te recomendaro usar secuencias de escape, lo cual me parece es tu mejor solución pero tienes que considerar que:

- con el Writeln de Delphi las secuencias de escape (#27) se descartan antes de llegar a la impresora (más bien lo hace windows) por lo que no importa que tantas secuencias mandes antes del texto, a la impresora solo llega el texto "pelón".

-Tendrás que imprimir directamente a la impresora, pero sin pasar por Windows

Lo puedes hacer de esta forma:
Código Delphi [-]

Procedure PWrite(s:String);
var PT :Integer;
     P   :Pchar;
Begin
   PT := FileOpen('lpt1',fmOpenWrite ); // Abrimos la impresora como un     archivo
   P   := PChar( s ); //convertimos la  cadena a un PChar
   FileWrite(PT,P^,length( s )); //escribimos a la impresora
   FileClose(PT);//cerrar el archivo de la impresora
end;

Uso:

// ..
// Definimos algunas constantes para las secuencias  de escape
const pNewLn    = #10 +#13;      // Salto de linea
         pBold       = #27 + 'E';       // Activar negrita
        pBoldOff     = #27 + 'F';      //Desactivar negrita
        pDouble     = #27 + 'W' +'1';  //Activar doble Ancho
        pDoubleOff = #27 + 'W' +'0'; //Desactivar doble ancho
        pFormSize  = #27 + 'C' +#10;//Definir tamaño de la hoja en líneas (en este caso es 10, pero se puede cambiar por el que necesitemos
        pFF= #12; // Salto de página

begin
  PWrite( pForm );
  PWrite( pBold + 'Pagina 1 ' +pBoldOff);
end;

Es un código muy simple pero de esta forma las secuencias de escape si son pasadas tal cual a la impresora. Ojo, como no estamos usando Windows para ello, no tenemos ninguna función del driver disponible por lo que tendremos que checar por nuestra cuenta si hay papel, tinta, etc. Pero para el caso de impresoras de ticket no es tan dificil.

La colocación de coordenadas la puedes usar con la secuencia de escape correspondiente (no me acuerdo ahorita cual es) hay una para mover la cabeza en X y otra en Y, tambien puedes simular esto enviando saltos de línea para las Y e imprimiendo espacios en blanco para las X.

A mi me funcionó de maravilla y para este tipo de impresión se me hace la forma mas sencilla. Además no importa si tienes el driver o no, de hecho funciona aunque no tengas ninguno instalado en Windows.

Ojala te sirva
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
 


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
Problema con el Canvas de Impresion Delphi 5 cesarlopez Impresión 2 05-02-2006 18:41:07
Impresion de Tickets nasedo Impresión 2 14-06-2005 08:46:36
Problema al cerrar ventana de impresion salvanano Impresión 4 04-06-2005 20:21:20
impresion de tickets ronson Impresión 3 10-03-2004 06:46:03
Impresión de Tickets jmoran Impresión 4 04-02-2004 16:40:56


La franja horaria es GMT +2. Ahora son las 03:52:36.


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