Texto justificado

Re: Texto justificado

Postby TOTOVIOTTI » Thu Nov 17, 2016 8:53 pm

Hola
retomando este tema... cabrá la posibilidad de Justificar un texto en la impresora, de una sola línea?

Por ejemplo, suponiendo que el texto es un texto variable, en este caso, es:
"FiveTech Software tech support forums"

Y necesito distribuirlo en toda la línea para que quede centrado y justificado a ambos lados....
habrá posibilidad que se pueda realizar esto?
(En otras palabras, que el texto que quiera enviar, ocupe todo el renglón....)

Muchas Gracias!
Roberto
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 410
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Re: Texto justificado

Postby karinha » Fri Nov 18, 2016 12:03 pm

/*
Entrada = Texto a ser justificado

Tamanho em que o texto será justificado

Fonte utilizada

Indicador se o tamanho foi passado em pixels

Sai­da = Texto espaçado/justificado
*/

Code: Select all  Expand view

METHOD JustifyText( cText, nLen, oFont, lPixel ) CLASS TPrinter

   local cAuxi:=ALLTRIM(cText), nLenPixel:=0, nSpace:=1

   local aWords:={}, i:=0, cSubst:="", cSpell:="", lDone:=.T.

   for i = 1 to len(cText)

      cSubst :=  SUBST(cText,i,1)

      if cSubst = " "

         aadd(aWords,cSpell)

         cSpell = ""

      endif

      cSpell +=  cSubst

   next

   if .not.empty(cSpell)

      aadd(aWords,cSpell)

   endif

   if len(aWords)=0 .OR. len(aWords)=1

      return cText

   endif

   if lPixel = nil .or. .not.lPixel

      nLenPixel = Max( 0, ( nLen * 10 * ::nHorzRes() / ::nHorzSize() ) - ::nXoffset )

   else

      nLenPixel = nLen

   endif

   while .T.

      cAuxi = ""

      lDone = .F.

      for i = 1 to len(aWords)

         IF i # len(aWords)

            cAuxi += aWords[ i ] + SPACE(nSpace)

         ENDIF

      next

      IF ::GetTextWidth( cAuxi, oFont ) >= nLenPixel

         lDone = .T.

         EXIT

      ENDIF

      nSpace ++

   enddo

   IF lDone

      cText = cAuxi

   ENDIF

return cText

 


// Exemplo de utilização:
// Ejemplo de como usar

Code: Select all  Expand view

   DEFINE FONT oFT12N NAME "Arial" SIZE 0,-11 OF oPrn

   cFrase = "Quinto Encontro de FiveWiners em Novembro/2007, espero ver todos presentes!"

   nLen = 19 \\ largura do A4 com margens

   cJustificado = oPrn:JustifyText(cFrase,nLen,oFT12N)
 


Code: Select all  Expand view

   oPrn:CmSay(01,01,cJustificado,oFT12N,NIL,CLR_BLACK)
 


Saludos.


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7664
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Texto justificado

Postby TOTOVIOTTI » Fri Nov 18, 2016 8:33 pm

Gracias Joao!
Lo voy a probar!!
Gracias!
Univ@c I.S.I.
Desarrolladores de Software
http://www.elcolegioencasa.edu.ar
User avatar
TOTOVIOTTI
 
Posts: 410
Joined: Fri Feb 05, 2010 11:30 am
Location: San Francisco - Córdoba - Argentina

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: nageswaragunupudi and 68 guests