Buscaré explicarlo de la mejor manera, para darme a entender...
Utilizo desde hace años oPrn:CmSay() muy bien para imprimir todo, a través de la clase tPrinter. Siempre utilizo como parametros las coordenadas en centimetros, el string que se imprimira y la fuente, y listo todo ! Imprime de maravilla.
Aqui viene el cambio: he tenido la necesidad de utilizar otro parametro que NUNCA había tenido necesidad. Para una rutina de imprimir texto justificado en ambos márgenes, se requiere tambien utilizar EL ANCHO DE LA LINEA (nWidth), que no esta mal, porque imprime de maravilla tambien, PERO.... sucede que en el ALTO de la linea hay un problema: Cuando se imprime en mayusculas, o cuando se imprimen letras que no tienen "rabo" hacia abajo (p.e. las letras a,b,c,d,e,f) no hay problemas. Cuando se imprime las letras g,j,q,p (o sea, que si tienen un "rabo" hacia abajo), esta parte es cortada.
Localice el problema, y está en el método SAY de la clase tPrinter (linea 558):
Code: Select all
ExtTextOut( ::hDCOut, nRow, nTemp,;
{ nRow, nCol, nRow+oFont:nHeight, nCol+nWidth },;
cText, ETO_CLIPPED )
Lo que no se es como solucionarlo....
¿Alquien me ayuda?
¿Antonio?
¿Es que ya se planteo esto?
Gracias anticipadas...