Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresora punto matriz, como alinear los valores tipo dinero ? (https://www.clubdelphi.com/foros/showthread.php?t=21428)

Jorge Taveras 17-05-2005 13:04:53

Impresora punto matriz, como alinear los valores tipo dinero ?
 
Buenas tengan amigos foristas.
Tengo una impresora star sp 512 y hasta ahora todo ha ido bien.
Es un punto de venta que imprime una factura de compra. El problema me surge cuando intento alinear los valores tipo dinero. Me explico

leche de vaca 100.00
jamon cosido 900.00
lampara 1,100.00
---------------
total 2.100.00

Imprimo directamente a impresora. Al intentar formatear de la siguiente forma
no me corrige el alineamiento:
formatfloat(' ##,##0.00',Adodataset0.fieldbyname'Precioventa').value)

el format float solo me funciona si coloco ceros en lugar de numeros
formatfloat(' 00,000.00',Adodataset0.fieldbyname'Precioventa').value) , pero los resultados son muy feos además de que traen confusión.


leche de vaca 00,100.00
jamon cosido 00,900.00
lampara 01,100.00
---------------
total 02.100.00

He visto estas facturas muy bien cuadradas. Estoy seguro que es falta de conocimiento personal... Trabajo en una linea de 40 caracteres. Espero me puedan ayudar, con la gracias de primera mano, jorge

eduarcol 17-05-2005 13:49:47

ok si trabajas en una linea de 40 caracteres me imagino que debes tener un limite para la descripcion, supongamos 25, lo que tienes que hacer en este caso es que antes de imprimir la variable la lleves al numero maximo de caracteres rellenandolo con espacios en blanco ( ' ' ).

Espero que te funcione cualquier duda pregunta

lroblesco 19-05-2005 01:08:30

cuadrar
 
yo he impreso en una star sp200 de 42 caracteres, lo que hago como dice el compañero eduardocol, es que te hagas una funcion para aumentar o recortar la cadena de caracteres de la descripcion.

Código:

    function rellena(var S:string;n:byte):string; 
    var
      long,i:byte;
      begin
      long:=length(s);
      for i:=1 to n-long do
          s:=s+' ';
      rellena:=s;
  end;

Código:

  //una llamada de un detalle
  writeln(F,'******************************************');
  for i:=0 to lstVentas.Items.Count-1 do
    begin
      str1:=lstVentas.Items[i].SubItems.Strings[2];
      rellena(str1,2);
      str2:=lstVentas.Items[i].SubItems.Strings[0];
      rellena(str2,25);
      str3:=lstVentas.Items[i].SubItems.Strings[3];
      writeln(F,str1+' '+str2,format('%8.2f',[strtofloat(str3)]));
    end;

Esta funcion lo que hace es recibe una cadena de hasta 255 caracteres y un numero entero(n), este el que indicara la longitud que deba tener, en este caso la descripcion, yo utilizo 25 caracteres para la descipcion.

Espero te sirva


La franja horaria es GMT +2. Ahora son las 18:43:19.

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