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):
//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:
//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