Texto em posicão específicas na string - Delphi

Delphi

15/11/2022

Pessoal eu procurei aqui no forum e na web, não estou conseguindo formatar, alinhar textos dentro de uma string em uma posição específica: Exemplo:

NOME IDADE KILOS VALOR GENERO
joao 10 20 30 masculino
maria 20 30 41 feminino
toto 30 40 11 Animal

já tentei de tudo e nao consigo! Alguém tem alguma idéia?

O nome começar na posicão 0
Idade na posicao 30
kilos na posicao 40
valor na posicao 50
genero na posicao 60

É só um exemplo de como seria a formatação pra ficar alinhado os dados, ao mostrar a string para o usuário.
Assis Ferreira

Assis Ferreira

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

15/11/2022

siga o raciocínio abaixo (pode ter algum erro de sintaxe porque não testei o código)

nTamNome := 30;
nTamQuilos := 10; nDecQuilos := 2;
nTamValor := 10; nDecValor := 2;
nTamGenero := 10;

strNome := StrUtils.LeftStr([nome]+StrUtils.DupeString(' ',nTamNome),nTamNome);
strQuilos := StrUtils.RightStr(StrUtils.DupeString(' ',nTamQuilos)+SysUtils.FloatToStrF([kilos],ffNumber,nTamQuilos,nDecQuilos),nTamQuilos); 
strValor := StrUtils.RightStr(StrUtils.DupeString(' ',nTamValor)+SysUtils.FloatToStrF([valor],ffCurrency,nTamValor,nDecValor),nTamValor); 
strGenero := StrUtils.LeftStr([genero]+StrUtils.DupeString(' ',nTamGenero),nTamGenero);

strResult := strNome+strQuilos+strValor+strGenero;


GOSTEI 0
Assis Ferreira

Assis Ferreira

15/11/2022

valeu, não ficou 100% mas melhorou bastante! devido ao tamanho das letra e espaços, em certas
colunas ficou com uma diferença de 3 caratecteres a direita ou a esquerda, dependendo dos dados.

Creio que eu deveria usar algo como linha/coluna pra ficar bem alinhado ou algo que posso definir
o local correto de cada dado: exemplo: 'NOME', posição 25 da linha, uma coisa assim.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/11/2022

Quando você apresenta um dado "colunado", você precisa apresentar usando uma fonte com caracteres de largura fixa, como Courier ou Courier New.
Não adianta usar uma fonte como Times New Roman, onde a letra W tem uma largura e a I é muito mais fina. Nunca a apresentação sairá como você espera.



GOSTEI 0
Arthur Heinrich

Arthur Heinrich

15/11/2022

Existe a possibilidade de exibir os dados em um StringGrid, com uma coluna para cada informação, como se fosse no Excel.
GOSTEI 0
Assis Ferreira

Assis Ferreira

15/11/2022

Existe a possibilidade de exibir os dados em um StringGrid, com uma coluna para cada informação, como se fosse no Excel.
sim, mas vc teria que mudar diretamente no fast ou fortes report!
GOSTEI 0
POSTAR