FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#3
|
|||
|
|||
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; Espero te sirva
__________________
No siempre el mas veloz es el que gana la carrera Última edición por lroblesco fecha: 19-05-2005 a las 01:10:04. Razón: editar |
|
|
|