Nuevamente con problemas en los reportes, utilizando la clase TReport
El problema surge cuando cambio de impresora, y creo que es por el calculo del valor de nLogPixY
Tengo un reporte (FACTURA) y segun la impresora imprime:
- PDFCreator: 10 lineas EN UNA SOLA HOJA!!!!
Canon IP1700: 8 lineas (impresora Chorro de tinta)
Canon LPB300: 7 lineas (impresora Laser)
Epson LX300+: 8 lineas (impresora matricial)
- PDFCreator: 600 (estandar definido por windows)
Canon IP1700: 600 (estandar definido por windows)
Canon LPB300: 600 (estandar definido por windows)
Epson LX300+: 180
La relacion de RESOLUCION por impresora (obtenido con oRpt:oDevice:nVertRes()) es:
- PDFCreator: 6600
Canon IP1700: 6411
Canon LPB300: 6360
Epson LX300+: 1920
- PDFCreator: 600
Canon IP1700: 582
Canon LPB300: 578
Epson LX300+ 174
PROBANDO:
para cambiar el valor de oRpt:nLogPixY hago:
Code: Select all
oRpt:bInit := {|oRpt| oRpt:nLogPixY := oRpt:oDevice:nVertRes()/11,; //recalculo nLogPixY
oRpt:Margin( 2, RPT_TOP, RPT_INCHES ),; //recalculo margen superior
oRpt:Margin( 3, RPT_BOTTOM, RPT_INCHES ) } //recalculo margen inferior
En base a esto, sera posible cambiar la clase TReport() ????
- Claro que sera algo dificil porque el tamaño de papel es variable (en este ejemplo es de 11 pulgadas)
- El tamaño se lo podria obtener con ::oDevice:SetSize() o ::oDevice:SetPage() o con loa funcion PrnGetSize( ::hDC ) ya que no se lo especifica en ninguna parte de TReport()
Notese tambien, que en este ejemplo solo se corrigio los margenes inferior y superior y cualquie otro valor que se calcule en oRpt:Stabilize (), pero no asi los Fonts y Pen que se recalculan en el metodo oRpt:New()
Bueno, espero tener respuesta de alguien (ya que anteriormente puse 3 o mas post y ninguno me fue respondido)
Atentamente,
Rolando
Cochabamba, Bolivia