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
![Roll Eyes (Sarcastic)](http://www.clubdelphi.com/foros/images/smilies/rolleyes.gif)
... 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...