Saludos camaradas...
Hace un par de semanas desarrollé un par de aplicaciones para imprimir recibos de nómina, como era un poco complicado y no supe como hacerlo en Rave ni en QuickReport me dí a la tarea de hacerlo imprimiendo directamente sobre el Canvas de TPrinter, la cosa es que primero calculo cuantos pixeles son por cm. y despues hago cálculos para enviarlo en la posición correcta en el canvas de la impresora, la cosa es que no es muy preciso que digamos
... así que creo que estoy haciendo algo mal y pido de su ayuda para encontrar donde está el error, pongo un poco de código explicarme mejor:
Código Delphi
[-]
var
PixelsPerCMX, PixelsPerCMY: Real; MargenX, MargenY: integer; X, Y: integer; ...
PixelsPerCMX:= GetDeviceCaps(Printer.Handle, LOGPIXELSX) / 2.54;
PixelsPerCMY:= GetDeviceCaps(Printer.Handle, LOGPIXELSY) / 2.54;
MargenX:= GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
MargenY:= GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
...
Printer.BeginDoc;
...
X:= Round(PixelsPerCMX * 2.5) - MargenX Y:= Round(PixelsPerCMY * 4.2) - MargenY Printer.Canvas.TextOut(X, Y, 'Texto a 2.5 cm. del eje X y 4.2 cm. del eje Y'); X:= Round(PixelsPerCMX * 22.5) - MargenX Y:= Round(PixelsPerCMY * 14.2) - MargenY Printer.Canvas.TextOut(X, Y, 'Texto a 22.5 cm. del eje X y 14.2 cm. del eje Y'); ...
Printer.EndDoc;
Me imagino que algún error me está afectando, no de Printer sino de como convierto las medidas o de algún cálculo (he leído que es posible imprimir directamente sobre el canvas con mucha precisión).
Me gustaría que me orientaran si estoy haciendo bien mi proceso de impresión o si pudieran sugerirme otra manera de hacerlo...
Desde ya muchas gracias...