
Función para quitar caracteres especiales...
#21
Escrito 26 noviembre 2008 - 11:14
Saludos.
#22
Escrito 26 noviembre 2008 - 01:16
Igual y generalmente, este tipo de documentos no se muestran en vista previa sino que se envian directamente a la impresora; me imagino de que ella se encarga de organizar los parámetros que se pasan desde el canvas print para que el documento finalmente salga como deba ser.
Saludos
#23
Escrito 26 noviembre 2008 - 01:19
procedure ImprimirFactura(dsCabeza, dsDetalles: TKbmMemTable; Avance: Integer); var DeviceMode: THandle; Device, Driver, Port: array[0..1023] of char; ms: Integer; //margen superior nLineas: Integer; procedure SaltarLinea; begin ms := ms + Sistema.Espaciado; end; procedure ImprimirLinea(Linea: String); begin Printer.Canvas.TextOut(Sistema.MargenDerecho, ms, Linea); SaltarLinea; end; begin //Configura la impresora Printer.GetPrinter(Device, Driver, Port, DeviceMode); Printer.SetPrinter(PAnsiChar(Sistema.Impresora), Driver, Port, DeviceMode); Printer.Title := 'Factura de Venta'; with Printer do begin SetMapMode(Printer.Handle,MM_LOMETRIC); BeginDoc; Canvas.Font.Size:= Sistema.TamayoLetra; Canvas.Font.Name := 'TAHOMA'; //------------Datos del encabezado //Empresa ImprimirLinea(dsCabeza.fieldbyName('NombreEmpresa').AsString); //Factura ImprimirLinea(dsCabeza.FieldbyName('Tipo').AsString + ': ' + Sistema.NumeroSerie + '-' + dsCabeza.fieldbyname('Factura').AsString); //Datos del Cliente ImprimirLinea('RIF: ' + dsCabeza.fieldbyName('Rif').AsString + ' ' + dsCabeza.fieldbyname('FECHA').AsString); ImprimirLinea('CLIENTE: ' + dsCabeza.fieldbyName('ClienteNombre').AsString); ImprimirLinea('DIRECCION: ' + dsCabeza.fieldbyName('ClienteDireccion').AsString); SaltarLinea; //Encabezado ImprimirLinea('Can Descripcion Unitario Total'); //Imprime los detalles nLineas := 0; dsDetalles.First; while not dsDetalles.Eof do begin ImprimirLinea(RPad(dsDetalles.FieldbyName('Cant').AsString, ' ', 4) + RPad(dsDetalles.FieldbyName('Descripcion').AsString, ' ', 10) + LPad(FormatFLoat('#,##0.00', dsDetalles.FieldbyName('PrecioSInIva').asFloat), ' ', 9) + LPad(FormatFLoat('#,##0.00', dsDetalles.FieldbyName('Total').asFloat), ' ', 9)); Inc(nLineas); dsDetalles.Next; end; while nLineas < Sistema.Lineas do begin SaltarLinea; Inc(nLineas); end; //Rellena el numero de las lineas faltantes //Imprime el cierre de la factura ImprimirLinea('SubTotal: ' + FormatFLoat('#,##0.00', dsCabeza.FieldbyName('SubTotal').AsFloat)); ImprimirLinea('Desc Lineas: ' + FormatFLoat('#,##0.00', dsCabeza.FieldbyName('DescLineas').AsFloat)); ImprimirLinea('Descuento: ' + FormatFLoat('#,##0.00', dsCabeza.FieldbyName('Descuentos').AsFloat)); ImprimirLinea('IVA (' + dsCabeza.FieldbyName('PORCIVA').AsString + '%): ' + FormatFLoat('#,##0.00', dsCabeza.FieldbyName('IVA').AsFloat)); ImprimirLinea('Total: ' + FormatFLoat('#,##0.00', dsCabeza.FieldbyName('Total').AsFloat)); ImprimirLinea('PAGADO'); ImprimirLinea(dsCabeza.FieldbyName('FormaPago').AsString); ImprimirLinea(dsCabeza.FieldbyName('Coletilla').AsString); if Avance > 0 then begin ms := ms + Avance; ImprimirLinea('-'); end; EndDoc; end; end;
En este caso el ticket saldria justificado a la izquierda.
#24
Escrito 26 noviembre 2008 - 01:25
nop, en el casa de impresión por canvas tu debes dar las coordenadas para que salga ordenada la factura, aqui un ejemplo que adpate, no recuerdo si lo facilito Seoane o Egostar:
Pues te lo facilité yo una vez

#25
Escrito 26 noviembre 2008 - 01:29
Pues te lo facilité yo una vez
Ahhh no, me equivoqué, bueno el caso es que una vez te facilité algún canvas de impresión.

#26
Escrito 26 noviembre 2008 - 01:32

#27
Escrito 26 noviembre 2008 - 01:50
Y algunos tickets se ven asi...
---------------------------------
l FACTURA
l
l 11/26/2008 3:00 Pm
l 000000001 Caja 04
l
l PROCUCTO CANT. VALOR
l Articulo1 2 $ 200
l
l **TOTAL 2 $ 200
l
---------------------------------
Conclusion y recomendacion con las TMU : Canvas Print

#28
Escrito 26 noviembre 2008 - 02:15
#29
Escrito 26 noviembre 2008 - 02:39
Pues hasta ahora todo muy bien... ya aclare mis dudas; ¿llegará el momento en que tenga que profundizar mas en el tema? tal vez...si tu duda ha sido solucionada, colocale la estrellita para futuras referencias, con el codigo que me dio seoane ya consigo lo que quiero (*)

Lo de la estrella ¿quien y/o como se hace?

[Editado]
#30
Escrito 26 noviembre 2008 - 02:40
Saludos.
#31
Escrito 26 noviembre 2008 - 08:26
#32
Escrito 27 noviembre 2008 - 07:04
[img]http://tbn2.google.com/images?q=tbn:fQPOx3L80toS4M:http://www.scansmart.com/images/u950-lg.jpg[/img]
Siempre he querido programar una de esas, pero por los momentos nadie la ha necesitado