Texto em posicão específicas na string - Delphi
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.
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
Curtidas 0
Respostas
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
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.
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
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.
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
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
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