Page 1 of 1

Justificado de texto

Posted: Wed Mar 07, 2007 6:46 pm
by Mike Serra
Buenas foro!!

Me han planteado una cosilla que no se como solucionar, y es que con la función memoline voy escribiendo un texto en un listado de un cliente, entonces el texto que son lineas de 40 caracteres me lo imprime perfectamente, pero el cliente quiere que el texto salga justificado, pero no quiere que use el tipo de letra Courier New( :( ). ¿Podéis orientarme?

MUCHAS GRACIAS,

Fw 2.8 + xHarbour

Posted: Thu Mar 08, 2007 11:21 am
by Antonio Linares
Podrias ir añadiendo espacios al texto y llamando al método oPrinter:GetTextWidth( cText, oFont ) hasta que devuelva el ancho deseado

Posted: Thu Mar 08, 2007 7:03 pm
by Alfredo Arteaga
Aquí el código a colocar en el método Say() de TPrinter:

IF nPad=PAD_BOTH .AND. " "$cText // Justificado a ambos lados
nP:=1
DO WHILE ::GetTextWidth( cText, oFont ) < nWidth
FOR nI=nP TO Len(cText)
nP++
cC:=SubStr(cText,nI,1)
IF cC=" "
cText:=Substr(cText,1,nI)+Substr(cText,nI,Len(cText))
nI:=Len(cText)+1
nP++
ENDIF
NEXT nI
IF nP>=Len(cText)-1
nP:=1
ENDIF
ENDDO
ENDIF