Nos casos em que houver necessidade de células com conteúdo alinhado à direita, recomenda - se não efetuar o tratamento adicionando espaços à esquerda e mantendo o alinhamento da célula a esquerda. Nesta situação, visualmente o resultado pode parecer idêntico, porém em casos que o usuário personalizar o relatório com fontes que não sejam mono espaçadas (ex.: Arial) ocorrerá desalinhamento do texto, pois cada caractere pode ter um tamanho especifico conforme exemplo abaixo:

Fonte Courier New (fonte mono espaçada), com espaços à esquerda:

Devido ao mono espaçamento, visualmente os textos são exibidos alinhados à direita.


Fonte Arial (Fonte com espaçamento variável), com espaços à esquerda:

Devido a fonte possuir espaçamento variável, apesar da quantidade de caracteres ser a mesma, visualmente não ocorrerá o alinhamento à direita.


Exemplo adicionando espaços à esquerda (não recomendado):

Exemplo adicionando espaços à esquerda
//Instancia a célula indicando alinhamento à ESQUERDA
TRCell():New( oSection1, "SALDOANT" ,,STR0030, , TAM_VALOR+5,,,,,"RIGHT",,,.F.)


//Tratamento com PADL adicionando espaços à esquerda
oSection1:Cell("SALDOANT"):SetBlock( { || PadL(cValToChar(cArqTmp->SALDOANT),TAM_VALOR+5) } )


Exemplo com alinhamento à direita (implementação correta):

Para o correto funcionamento, deverá ser indicado o alinhamento à direita na definição da célula (Método New() da TRCell) em conjunto com a chamada do método SetRightAlignPrinter(), conforme o exemplo abaixo:

Exemplo com alinhamento à direita
//Parametriza o TReport para alinhamento a direita 
oReport:SetRightAlignPrinter(.T.)

//Instancia a célula indicando alinhamento à direita
TRCell():New( oSection1, "SALDOANT" ,,STR0030, , TAM_VALOR+5, , , "RIGHT",,"RIGHT",,,.F.)

//Definição do conteúdo
oSection1:Cell("SALDOANT"):SetBlock( { || cValToChar(cArqTmp->SALDOANT) } )



Comportamento com SetRightAlignPrinter()


Método SetRightAlignPrinter() disponível a partir da LIB Label 20211004. Mais informações na documentação: TReport



  • Sem rótulos