[Lazarus-es] imprimir tickeadora: ticket y testigo

Paola Bruccoleri pbruccoleri en adinet.com.uy
Vie Oct 5 16:07:53 CEST 2012


El 04/10/2012 08:39 p.m., Hilde Hansz escribió:
> 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









More information about the Lazarus-es mailing list