Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-09

imprimir tickeadora: ticket y testigo

22 messages · 6 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola nuevamente..

debo imprimir una factura en una tickeadora (no fiscal) epson TMu-950, tanto en el ticket como en el testigo (el rollito que queda como duplicado). Actualmente lo hago desde otro lenguaje de esta manera: (el testigo se imprime a partir de la columna 40)

antes debo mandar estos caracteres de control para habilitar la impresi�n en los 2 rollos:
// impresion dual en ticket/testigo
@ 0,0 say chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1)

@0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo

@1,0 say PADC(alltrim(i_dir),38)
@1,42 say PADC(alltrim(i_dir),38)

@2,0 say PADC(alltrim(i_emp),38)
@2,42 say PADC(alltrim(i_emp),38)

@3,0 say PADC('RUC:'+alltrim(i_ruc),38)
@3,42 say PADC('RUC:'+alltrim(i_ruc),38)

@4,0 say PADC('IVA AL DIA: Resol. DGI 335/82',38) @4,42 say PADC('IVA AL DIA: Resol. DGI 335/82',38) ----
etc...

ac� en lazarus, tengo las funciones ImprimirCodigoEsc e ImprimirCadenaRaw (funciones creo que de Claudio) donde:

ImprimirCodigoEsc(chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1));
luego pensaba imprimir cada rengl�n:
ImprimirCadenaRaw('RAZON SOCIAL' );

pero tendr� que armar a mano la cadena de 40 m�s la otra de 40 seguido a mano para poder imprimir en los 2?

alguien usa alguna otra forma?
ideas??
mil gracias nuevamente!

//----------------------------------------------------------------------------
procedure ImprimirCadenaRaw(S:String);
//----------------------------------------------------------------------------
const Kenter=CHR(13)+CHR(10);
var  Written: Integer;
begin
   Written:=0;
   S:=S+Kenter;
   Printer.Write(S[1], Length(S), Written);
end;
//----------------------------------------------------------------------------
procedure ImprimirCodigoEsc(S:String);
//----------------------------------------------------------------------------
var Written: Integer;
begin
   Written:=0;
   Printer.Write(S[1], Length(S), Written);
end;

Reply by email

Maxi
to Paola Bruccoleri

El d�a 27 de septiembre de 2012 12:50, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�:

Show quoted text 72 lines
Hola nuevamente.. debo imprimir una factura en una tickeadora (no fiscal) epson TMu-950, tanto en el ticket como en el testigo (el rollito que queda como duplicado). Actualmente lo hago desde otro lenguaje de esta manera: (el testigo se imprime a partir de la columna 40) antes debo mandar estos caracteres de control para habilitar la impresi�n en los 2 rollos: // impresion dual en ticket/testigo @ 0,0 say chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1) @0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo @1,0 say PADC(alltrim(i_dir),38) @1,42 say PADC(alltrim(i_dir),38) @2,0 say PADC(alltrim(i_emp),38) @2,42 say PADC(alltrim(i_emp),38) @3,0 say PADC('RUC:'+alltrim(i_ruc),38) @3,42 say PADC('RUC:'+alltrim(i_ruc),38) @4,0 say PADC('IVA AL DIA: Resol. DGI 335/82',38) @4,42 say PADC('IVA AL DIA: Resol. DGI 335/82',38) ---- etc... ac� en lazarus, tengo las funciones ImprimirCodigoEsc e ImprimirCadenaRaw (funciones creo que de Claudio) donde: ImprimirCodigoEsc(chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1)); luego pensaba imprimir cada rengl�n: ImprimirCadenaRaw('RAZON SOCIAL' ); pero tendr� que armar a mano la cadena de 40 m�s la otra de 40 seguido a mano para poder imprimir en los 2? alguien usa alguna otra forma? ideas?? mil gracias nuevamente! //---------------------------------------------------------------------------- procedure ImprimirCadenaRaw(S:String); //---------------------------------------------------------------------------- const Kenter=CHR(13)+CHR(10); var Written: Integer; begin Written:=0; S:=S+Kenter; Printer.Write(S[1], Length(S), Written); end; //---------------------------------------------------------------------------- procedure ImprimirCodigoEsc(S:String); //---------------------------------------------------------------------------- var Written: Integer; begin Written:=0; Printer.Write(S[1], Length(S), Written); end; _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Fox o Clipper?

La cadena que le pasas son parametros para la impresora, tipo de letra u otras opciones, despues imprimis 2 veces una en la columna 0 y otra en la 42

@0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo

vas a tener que repetir todo por 2 o hace runa funcion que reciba el texto y lo imprima x veces como columnas quieras.

El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html Linux User #495070 http://domonetic.com/blog

Reply by email

Claudio Romero
to Paola Bruccoleri: Hola nuevamente.. debo imprimir una factura en una tickeadora (no fiscal) epson TMu-950,…

Hola Paola
si no entendi mal, imprimes lo misma string en original y duplicado.

yo por ahi hice una funci�n para imprimir los duplicados en laser. Con matricial esta el problema de que hay que dejar espacios a la izquierda, segun el largo de la cadena, pero se resuelve facil.

Ej

procedure ImprimirDuplicadoCadenaRaw(CADENA:string);
CADENA='RAZON';
ImprimirDuplicadoCadenaRaw(CADENA);
Const ComienzoDuplicado=40;

Saldr�a Columna
1
40
RAZON (ComienzoDuplicado-lengh(CADENA) espacios) RAZON

En este ejemplo RAZON tiene 5 carac. dejaria 35 espacios, e imprime el duplicado en la columna 40.

De esta manera usas una sola funci�n para imprimir las lineas con duplicados a la columna 40. Ya que los espacios se calculan en funci�n del largo de la cadena, se adapta a cualquier cadena. Lo hice de memoria, pero recuerdo que funcionaba bien asi- Lo �nico haz un chequeo para evitar que cadenas largas se salgan de la hoja a imprimir, o superen el largo de ComienzoDuplicado, etc.

Si encuentro la funci�n te la paso.

Saludos

Reply by email

Paola Bruccoleri
to Claudio Romero

El 27/09/2012 02:53 p.m., Claudio Romero escribi�:

Show quoted text 30 lines
Hola Paola si no entendi mal, imprimes lo misma string en original y duplicado. yo por ahi hice una funci�n para imprimir los duplicados en laser. Con matricial esta el problema de que hay que dejar espacios a la izquierda, segun el largo de la cadena, pero se resuelve facil. Ej procedure ImprimirDuplicadoCadenaRaw(CADENA:string); CADENA='RAZON'; ImprimirDuplicadoCadenaRaw(CADENA); Const ComienzoDuplicado=40; Saldr�a Columna 1 40 RAZON (ComienzoDuplicado-lengh(CADENA) espacios) RAZON En este ejemplo RAZON tiene 5 carac. dejaria 35 espacios, e imprime el duplicado en la columna 40. De esta manera usas una sola funci�n para imprimir las lineas con duplicados a la columna 40. Ya que los espacios se calculan en funci�n del largo de la cadena, se adapta a cualquier cadena. Lo hice de memoria, pero recuerdo que funcionaba bien asi- Lo �nico haz un chequeo para evitar que cadenas largas se salgan de la hoja a imprimir, o superen el largo de ComienzoDuplicado, etc. Si encuentro la funci�n te la paso.

Hola Claudio..
si, era lo q pensaba hacer m�s o menos..
si llegas a encontrar la funci�n, mejor a�n! .. me ahorro tiempo :) Cuando termine este embrollo de cosas, les cuento como me fu�. chauuuuuuuuuuu

Reply by email

Paola Bruccoleri
to Maxi: El d�a 27 de septiembre de 2012 12:50, Paola Bruccoleri <pbruccoleri en adinet.com.uy>…

El 27/09/2012 02:52 p.m., Maxi escribi�:

Show quoted text 75 lines
El d�a 27 de septiembre de 2012 12:50, Paola Bruccoleri <pbruccoleri en adinet.com.uy> escribi�: > Hola nuevamente.. > > debo imprimir una factura en una tickeadora (no fiscal) epson TMu-950, tanto > en el ticket como en el testigo (el rollito que queda como duplicado). > Actualmente lo hago desde otro lenguaje de esta manera: (el testigo se > imprime a partir de la columna 40) > > antes debo mandar estos caracteres de control para habilitar la impresi�n en > los 2 rollos: > // impresion dual en ticket/testigo > @ 0,0 say chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1) > > @0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket > @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo > > @1,0 say PADC(alltrim(i_dir),38) > @1,42 say PADC(alltrim(i_dir),38) > > @2,0 say PADC(alltrim(i_emp),38) > @2,42 say PADC(alltrim(i_emp),38) > > @3,0 say PADC('RUC:'+alltrim(i_ruc),38) > @3,42 say PADC('RUC:'+alltrim(i_ruc),38) > > @4,0 say PADC('IVA AL DIA: Resol. DGI 335/82',38) > @4,42 say PADC('IVA AL DIA: Resol. DGI 335/82',38) > ---- > etc... > > > ac� en lazarus, tengo las funciones ImprimirCodigoEsc e ImprimirCadenaRaw > (funciones creo que de Claudio) donde: > > ImprimirCodigoEsc(chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1)); > > luego pensaba imprimir cada rengl�n: > ImprimirCadenaRaw('RAZON SOCIAL' ); > > pero tendr� que armar a mano la cadena de 40 m�s la otra de 40 seguido a > mano para poder imprimir en los 2? > > alguien usa alguna otra forma? > ideas?? > mil gracias nuevamente! > > > //---------------------------------------------------------------------------- > procedure ImprimirCadenaRaw(S:String); > //---------------------------------------------------------------------------- > const Kenter=CHR(13)+CHR(10); > var Written: Integer; > begin > Written:=0; > S:=S+Kenter; > Printer.Write(S[1], Length(S), Written); > end; > > //---------------------------------------------------------------------------- > procedure ImprimirCodigoEsc(S:String); > //---------------------------------------------------------------------------- > var Written: Integer; > begin > Written:=0; > Printer.Write(S[1], Length(S), Written); > end; > > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es Fox o Clipper?

clipper (pero en harbour es lo mismo..)
imprimir es muy sencillo; solo indicas fila/col y ya est�.. nada de andar armando cadenas de caracteres!

Reply by email

Claudio Romero
to Paola Bruccoleri
// Aca paso un ejemplo, funciona bien en una matricial Epson FX-870.
// Saludos.
//---------
unit ImpDuplicado_;
{$mode objfpc}{$H+}
interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

  StdCtrls,strutils,printers, PrintersDlgs;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Form1: TForm1;
implementation
{ TForm1 }
procedure ImprimirDuplicadoCadenaRaw(S:String);
const Kenter=CHR(13)+CHR(10);
	ComienzoDuplicado=40;
var  Written: Integer;
begin
	Written:=0;
	S:=S+DupeString(' ',ComienzoDuplicado-Length(S))+S;
	S:=S+Kenter;
	Printer.Write(S[1], Length(S), Written);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
	Printer.PrinterIndex:=0;
	Printer.RawMode := True;    Printer.BeginDoc;
	ImprimirDuplicadoCadenaRaw('RAZON SOCIAL');
	ImprimirDuplicadoCadenaRaw('LOS ALAMOS SEGUROS');
	ImprimirDuplicadoCadenaRaw('25 DE MAYO 1545');
	Printer.EndDoc;
end;
initialization
  {$I unit1.lrs}
end.

Reply by email

Paola Bruccoleri
to Claudio Romero

El 27/09/2012 04:18 p.m., Claudio Romero escribi�:

Show quoted text 44 lines
// Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. // Saludos. //--------- unit ImpDuplicado_; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,strutils,printers, PrintersDlgs; type { TForm1 } TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; implementation { TForm1 } procedure ImprimirDuplicadoCadenaRaw(S:String); const Kenter=CHR(13)+CHR(10); ComienzoDuplicado=40; var Written: Integer; begin Written:=0; S:=S+DupeString(' ',ComienzoDuplicado-Length(S))+S; S:=S+Kenter; Printer.Write(S[1], Length(S), Written); end;

Hola Claudio..
qu� ser�a la funci�n DupeString?
muchas gracias!

Reply by email

José Mejuto
to Paola Bruccoleri: El 27/09/2012 02:52 p.m., Maxi escribi�: clipper (pero en harbour es lo mismo..)…

El 27/09/2012 20:12, Paola Bruccoleri escribi�:

Show quoted text 5 lines
>> // impresion dual en ticket/testigo >> @ 0,0 say chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1) >> >> @0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket >> @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo

[...]

clipper (pero en harbour es lo mismo..) imprimir es muy sencillo; solo indicas fila/col y ya est�.. nada de andar armando cadenas de caracteres!

Hola,

Si usais mucho estas funciones se puede hacer un "driver" de tickeadora que se maneje algo as�:

var
   t: TTickadora;
   Lineas: TStringList;
   j: integer;
begin
   T:=TTickadora.Create(AnchoEnChars);
   T.Write(X,Y,'Prueba 1');
   T.Write(X,Y+1,'Prueba 2');
   T.DuplicateRight;
   T.PrintEverything;
   //O en vez de imprimir directamente
   Lineas:=T.GetLines;
   for j = 0 To Lineas.Count-1
     PrintRaw(Lineas[j]+LineEnding);
   end;
   T.Free;
end;

Reply by email

Paola Bruccoleri
to José Mejuto

El 29/09/2012 09:38 a.m., Jos� Mejuto escribi�:

Show quoted text 37 lines
El 27/09/2012 20:12, Paola Bruccoleri escribi�: >>> // impresion dual en ticket/testigo >>> @ 0,0 say chr(27)+"@"+CHR(27)+"c0"+chr(3)+chr(27)+"!"+chr(1) >>> >>> @0,0 say PADC(alltrim(i_razon),38) // impresi�n en ticket >>> @0,42 say PADC(alltrim(i_razon),38) // impresi�n en testigo [...] > clipper (pero en harbour es lo mismo..) > imprimir es muy sencillo; solo indicas fila/col y ya est�.. nada de > andar armando cadenas de caracteres! Hola, Si usais mucho estas funciones se puede hacer un "driver" de tickeadora que se maneje algo as�: var t: TTickadora; Lineas: TStringList; j: integer; begin T:=TTickadora.Create(AnchoEnChars); T.Write(X,Y,'Prueba 1'); T.Write(X,Y+1,'Prueba 2'); T.DuplicateRight; T.PrintEverything; //O en vez de imprimir directamente Lineas:=T.GetLines; for j = 0 To Lineas.Count-1 PrintRaw(Lineas[j]+LineEnding); end; T.Free; end;

Hola Jos�..
y qu� ventajas obtengo con esta otra forma??
supongo que deber� inventar una clase TTickeadora con sus m�todos duplicateright, etc...
mychas gracias!

Reply by email

José Mejuto
to Paola Bruccoleri

El 01/10/2012 12:52, Paola Bruccoleri escribi�:

Show quoted text 5 lines
Hola Jos�.. y qu� ventajas obtengo con esta otra forma?? supongo que deber� inventar una clase TTickeadora con sus m�todos duplicateright, etc... mychas gracias!

Hola,

Pues que b�sicamente imprimes como si fuera en pantalla, sin tener que rellenar con espacios, pudiendo imprimir la linea 1, luego la 3, luego la 2, etc... Una vez que est� todo el report completo, se imprime de un golpe todo.

Reply by email

Paola Bruccoleri
to José Mejuto

El 01/10/2012 11:46 a.m., Jos� Mejuto escribi�:

Show quoted text 15 lines
El 01/10/2012 12:52, Paola Bruccoleri escribi�: > Hola Jos�.. > y qu� ventajas obtengo con esta otra forma?? > supongo que deber� inventar una clase TTickeadora con sus m�todos > duplicateright, etc... > mychas gracias! Hola, Pues que b�sicamente imprimes como si fuera en pantalla, sin tener que rellenar con espacios, pudiendo imprimir la linea 1, luego la 3, luego la 2, etc... Una vez que est� todo el report completo, se imprime de un golpe todo.

si, est� buena la idea..

pero
t: TTickadora;

TTIckadora ser�a un stringlist o qu�? porque deber�a aceptar el m�todo write..
a no ser que tenga q definir toda la clase ttickadora haciendo esos m�todos tal como los hago ahora, rellenando a mano!

Reply by email

José Mejuto
to Paola Bruccoleri

El 01/10/2012 20:14, Paola Bruccoleri escribi�:

Show quoted text 15 lines
> Pues que b�sicamente imprimes como si fuera en pantalla, sin tener que > rellenar con espacios, pudiendo imprimir la linea 1, luego la 3, luego > la 2, etc... Una vez que est� todo el report completo, se imprime de un > golpe todo. > si, est� buena la idea.. pero t: TTickadora; TTIckadora ser�a un stringlist o qu�? porque deber�a aceptar el m�todo write.. a no ser que tenga q definir toda la clase ttickadora haciendo esos m�todos tal como los hago ahora, rellenando a mano!

Hola,

Ser�a una clase nueva, que dentro almacena las �rdenes de impresi�n bien en un TStringList o bien como �rdenes de escritura, aunque TStringList ser�a m�s c�modo probablemente y luego un par de m�todos para escribir en unas coordenadas dadas, y otro que imprima o devuelva un TStringList con las lineas a imprimir. Si hay que hacer un duplicado por ejemplo, simplemente con ponerle otro m�todo que duplique a la derecha o abajo, ya est�.

Si hubiese que partir el papel con un ESC command, se podr�a hacer:

Tickadora.Print;
Printer.print ESCCommandsCutPaper
Tickadora.Print;
Printer.print ESCCommandsCutPaper

Por ejemplo. B�sicamente guardar�a una copia en memor�a de lo que se ir�a viendo en la tickadora para poder imprimirlo todo junto al final.

Por supuesto deber�a ser ANSI, ya que los UTF8 ocupan a veces 2 o 3 bytes y si no est� preparada la clase, puede pasar cosas raras.

Reply by email

Paola Bruccoleri
to Claudio Romero: // Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. // Saludos.…

El 27/09/2012 04:18 p.m., Claudio Romero escribi�:

// Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. // Saludos.

Hola Claudio..
como has solucionado el problemas con los caracteres acentuados en esas impresoras matriciales?
la bd tiene los caracteres en UTF8, y obviamente al imprimir, esos caracteres salen mal.
La cosa ser�a convertirlos a oem, pero no encuentro la forma... estoy buscando y no he tenido �xito
muchas gracias!
chauuuuuuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

El 04/10/2012 19:49, Paola Bruccoleri escribi�:

Show quoted text 14 lines
El 27/09/2012 04:18 p.m., Claudio Romero escribi�: > // Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. > // Saludos. > Hola Claudio.. como has solucionado el problemas con los caracteres acentuados en esas impresoras matriciales? la bd tiene los caracteres en UTF8, y obviamente al imprimir, esos caracteres salen mal. La cosa ser�a convertirlos a oem, pero no encuentro la forma... estoy buscando y no he tenido �xito muchas gracias! chauuuuuuuuuuuu

Hola,

Mirate la unit lconvencoding de lazutils. Tendr�s que averiguar que codepage usa la tickadora, puede ser que cp850 :-?

Reply by email

Claudio Romero
to José Mejuto

Hola, recuerdo alg�n problema bajo Linux en matriciales no salian bien las �. En Windows sal�an bien. Yo hice una funci�n para pasar a OEM, pero mejor utiliza las que comenta Jos�. (lconvencoding) Ahora en nuestra empresa vamos a ser 2 empleados dedicados 100 % en sistemas y vamos a basar los sistemas con Lazarus :) Asi que de a poco iremos buscando soluciones a estos problemas. Saludos

El d�a 4 de octubre de 2012 16:13, Jos� Mejuto <joshyfun en gmail.com> escribi�:

Show quoted text 29 lines
El 04/10/2012 19:49, Paola Bruccoleri escribi�: > El 27/09/2012 04:18 p.m., Claudio Romero escribi�: >> >> // Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. >> // Saludos. >> > Hola Claudio.. > como has solucionado el problemas con los caracteres acentuados en esas > impresoras matriciales? > la bd tiene los caracteres en UTF8, y obviamente al imprimir, esos > caracteres salen mal. > La cosa ser�a convertirlos a oem, pero no encuentro la forma... estoy > buscando y no he tenido �xito > muchas gracias! > chauuuuuuuuuuuu > Hola, Mirate la unit lconvencoding de lazutils. Tendr�s que averiguar que codepage usa la tickadora, puede ser que cp850 :-? _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Paola Bruccoleri
to José Mejuto: El 04/10/2012 19:49, Paola Bruccoleri escribi�: Mirate la unit lconvencoding de…

El 04/10/2012 04:13 p.m., Jos� Mejuto escribi�:

Show quoted text 21 lines
El 04/10/2012 19:49, Paola Bruccoleri escribi�: > El 27/09/2012 04:18 p.m., Claudio Romero escribi�: >> // Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. >> // Saludos. >> > Hola Claudio.. > como has solucionado el problemas con los caracteres acentuados en esas > impresoras matriciales? > la bd tiene los caracteres en UTF8, y obviamente al imprimir, esos > caracteres salen mal. > La cosa ser�a convertirlos a oem, pero no encuentro la forma... estoy > buscando y no he tenido �xito > muchas gracias! > chauuuuuuuuuuuu > Hola, Mirate la unit lconvencoding de lazutils. Tendr�s que averiguar que codepage usa la tickadora, puede ser que cp850 :-?

Hola Jos� y Claudio..
bueno, perdonen la torpeza pero no encuentro a las lazutils! sigo con esta versi�n: Lazarus 0.9.31 r30432 FPC 2.5.1 i386-win32-win32/win64 Y no tengo ni idea del codepage! en los manuales q tengo no dice nada; seguir� buscando..

byeeeeeeeeee

Reply by email

Hilde Hansz
to Paola Bruccoleri

Hola Paola, la unidad que debes usar es C:\lazarus\lcl\lconvencoding.pas y utilizar el c�digo de caracteres que usa tu impresora. Dependiendo de los modelos, las matriciales tienen seteos f�sicos.
hilde

Earlier message 36 lines
-----Mensaje original----- De: Paola Bruccoleri [mailto:pbruccoleri en adinet.com.uy] Enviado el: jueves, 04 de octubre de 2012 06:13 p.m. Para: Spanish version of Lazarus List Asunto: Re: [Lazarus-es] imprimir tickeadora: ticket y testigo El 04/10/2012 04:13 p.m., Jos� Mejuto escribi�: > El 04/10/2012 19:49, Paola Bruccoleri escribi�: >> El 27/09/2012 04:18 p.m., Claudio Romero escribi�: >>> // Aca paso un ejemplo, funciona bien en una matricial Epson FX-870. >>> // Saludos. >>> >> Hola Claudio.. >> como has solucionado el problemas con los caracteres acentuados en >> esas impresoras matriciales? >> la bd tiene los caracteres en UTF8, y obviamente al imprimir, esos >> caracteres salen mal. >> La cosa ser�a convertirlos a oem, pero no encuentro la forma... estoy >> buscando y no he tenido �xito muchas gracias! >> chauuuuuuuuuuuu >> > > Hola, > > Mirate la unit lconvencoding de lazutils. Tendr�s que averiguar que > codepage usa la tickadora, puede ser que cp850 :-? > Hola Jos� y Claudio.. bueno, perdonen la torpeza pero no encuentro a las lazutils! sigo con esta versi�n: Lazarus 0.9.31 r30432 FPC 2.5.1 i386-win32-win32/win64 Y no tengo ni idea del codepage! en los manuales q tengo no dice nada; seguir� buscando.. byeeeeeeeeee

Reply by email

Martin Gomez
to Paola Bruccoleri: El 04/10/2012 04:13 p.m., Jos� Mejuto escribi�: Hola Jos� y Claudio.. bueno,…

2012/10/4 Paola Bruccoleri <pbruccoleri en adinet.com.uy>

Y no tengo ni idea del codepage! en los manuales q tengo no dice nada; seguir� buscando..

en el manual de la impresora, la selecci�n de Code Page normalmente est� en la secci�n de los DIP Switches.
Si no lo encuentras, prueba con 850, es la de USA y normalmente vienen preconfiguradas as�.

Try not to become a man of success but rather to become a man of value. *Albert Einstein* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20121005/966cd6f0/attachment.html>

Reply by email

Paola Bruccoleri
to Hilde Hansz: Hola Paola, la unidad que debes usar es C:\lazarus\lcl\lconvencoding.pas y utilizar el…

El 04/10/2012 08:39 p.m., Hilde Hansz escribi�:

Show quoted text 5 lines
Hola Paola, la unidad que debes usar es C:\lazarus\lcl\lconvencoding.pas y utilizar el c�digo de caracteres que usa tu impresora. Dependiendo de los modelos, las matriciales tienen seteos f�sicos. hilde

Hola Hilde y todos!
Esto de los caracteres me va a terminar de enloquecer.. les cuento lo raro que pasa. Al final con la funci�n UTF8ToCP850 logr� resolver bastante. Aclaro que la tabla de la bd tiene todas las descripciones en may�sculas

Como les coment�, uso 2 programas que cargan datos en la misma bd.

Por una cuesti�n de est�tica del "programa2", muestro las descripciones de los art�culos en unos botones q se generan al vuelo usando la primera letra may�scula y las dem�s min�sculas usando la funci�n que les coment� hace d�as, AMinusc, donde me sugirieron hacer esto: utf8Copy(sCadena,1,1) + UTF8LowerCase(utf8Copy(sCadena,2,200)). En pantalla se ve TODO BIEN.
Grabo por ej 2 art�culos q tienen tildes y � (queda todo bien grabado en la tabla) y cuando hago la consulta para imprimir en la impresora correspondiente, las � y tildes salen con ?
imprimo as�:
ImprimirCadenaRaw(qryPedidos.FieldByName('cantidad').AsString+' '+UTF8ToCP850(qryPedidos.FieldByName('descripcion').AsString));

Voy al programa1 (que es el de gesti�n principal). All� veo cargados
correctamente esos 2 art�culos, con las � y tildes bien.
Desde all� imprimo el ticket factura, e incre�blemente esos mismos
art�culos salen impresos CORRECTAMENTE!!! y uso la MISMA funci�n
       sCant:= AlineaDer(qry.FieldByName('cantidad').AsString, 6);
       sDesc:=
AlineaIzq(UTF8ToCP850(qry.FieldByName('descripcion').AsString), 17);
       sPrecio:=
AlineaDer(Format('%n',[qry.FieldByName('total').AsFloat]),10);
       ImprimirDuplicadoCadenaRaw(sCant+' '+sDesc+'    '+sPrecio);

Lo �nico diferente es que en el ticket NO uso la impresi�n de duplicado (ImprimirDuplicadoCadenaRaw) porque no lo necesito, y en la factura si.

esperen que pruebo de usarla x las dudas..
.....
si.. efectivamente esa funci�n me hace imprimir correctamente los tildes y �!!!

(esto ya parece novela)

la cosa estaba en la funci�n ImprimirCadenaRaw que ten�a (lo que coment�)

   Written:=0;
   ///S:=Utf8toAnsi(S+Kenter);
   S:=S+Kenter;
   Printer.Write(S[1], Length(S), Written);

Bueno, disculpen pero lo fui esccribiendo a medida que hac�a pruebas! espero le sirva a alguien..
byeeeeeeeeeeeee

Reply by email