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
Texto justificado
- TOTOVIOTTI
- Posts: 430
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
- Has thanked: 5 times
- karinha
- Posts: 7942
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 3 times
- Contact:
Re: Texto justificado
/*
Entrada = Texto a ser justificado
Tamanho em que o texto será justificado
Fonte utilizada
Indicador se o tamanho foi passado em pixels
Saida = Texto espaçado/justificado
*/
// Exemplo de utilização:
// Ejemplo de como usar
Saludos.
Entrada = Texto a ser justificado
Tamanho em que o texto será justificado
Fonte utilizada
Indicador se o tamanho foi passado em pixels
Saida = Texto espaçado/justificado
*/
Code: Select all | Expand
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
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
oPrn:CmSay(01,01,cJustificado,oFT12N,NIL,CLR_BLACK)
Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- TOTOVIOTTI
- Posts: 430
- Joined: Fri Feb 05, 2010 11:30 am
- Location: San Francisco - Córdoba - Argentina
- Has thanked: 5 times