Post: Dicas clássicas: ListBox VCL Múltiplas Colunas

Alessandro Medeiros

Este artigo é uma tradução do artigo: http://blog.marcocantu.com/blog/2019-march-classictips-multicolumn-listbox.html

Ao usar uma caixa de listagem clássica do Windows (usando o VCL TListBox), como você pode ter várias colunas de dados? O sistema operacional oferece duas maneiras alternativas, e isso pode ser confuso.

O controle de caixa de lista do Windows (um dos controles user.dll primitivos e clássicos) geralmente exibe uma única lista de seqüências de caracteres. Eles podem ter dados associados, mas esse é um tópico separado. Desde as primeiras versões do Windows, o sistema operacional oferece algumas configurações especiais para permitir caixas de listagem de várias colunas. Eles são disponibilizados usando estilos específicos ao criar o controle e mensagens específicas do Windows (como LB_SETCOLUMNWIDTH e LB_SETTABSTOP) para passar dados. A boa notícia é que o controle TListBox da VCL envolve esses recursos, tornando-os fáceis de usar. A má notícia é que a documentação não é tão precisa e demorada que os desenvolvedores do Delphi podem não saber como conseguir isso.

A primeira opção é criar uma caixa de listagem com conteúdo fluindo em várias colunas. A caixa de listagem ainda tem uma lista de strings, uma vez no final do espaço disponível, em vez de rolar verticalmente, os dados são adicionados a uma nova coluna e possivelmente rolados horizontalmente se não couberem. Para isso, você usa a propriedade Columns e a VCL fará com que a largura de cada coluna seja igual à largura do controle dividida pelo número de colunas. Este é um trecho de código de amostra:

ListBox1.Columns := 3;
  for var I := 0 to 30 do
    ListBox1.Items.Add('hi');

Se você pressionar o botão uma vez (com o tamanho do controle na primeira imagem abaixo), ele preencherá as duas primeiras colunas e parte da terceira. Ao pressionar o botão novamente, você obtém mais conteúdo com uma barra de rolagem horizontal (segunda imagem).

Outra abordagem completamente diferente, é definir a propriedade TabWidth para obter uma caixa de listagem na qual linhas individuais podem ser exibidas em colunas, contanto que elas usem guias em seu texto. Isso é exibido na terceira imagem acima e pode ser obtido com um código como o seguinte (o aviso nº 9 é o caractere de tabulação):

ListBox1.TabWidth := 50;
ListBox1.Items.Add('hi' + #9 + 'lo');
ListBox1.Items.Add('foo' + #9 + 'bar');
ListBox1.Items.Add('ki' + #9 + 'mo');

Agora você pode se perguntar por que isso não é mais usado, e a razão é que, se o texto não couber na guia, a formatação se torna totalmente inconsistente – ao contrário de um ListView com configuração de relatório ou uma grade. Ainda assim, tendo um conjunto de strings você pode calcular a largura de exibição de cada um deles com a fonte especificada e definir a largura da tabulação de acordo …

Assim como essa e outras técnicas você pode encontrar em um dos meus treinamentos, o de Técnicas avançadas de Delphi, neste treinamento reúne algumas das minhas melhores aulas onde apresento técinicas avançadas no Delphi que poucas pessoas usam ou exporam, você receberá um mix de conhecimentos dobre padrões de projeto, MVC, POO, Arquitetura de software, refatoração e muito mais.

CLIQUE AQUI PARA SABER MAIS SOBRE O TREINAMENTO TÉCNICAS AVANÇADAS DE DELPHI







Faça sua busca

CATEGORIAS

POSTS RECENTES

E caso você tem interesse de conhecer mais sobre Dicas clássicas: ListBox VCL Múltiplas Colunas, acesse o nosso portal do CLUBE DE PROGRAMADORES EM DELPHI
Você não terá só conteúdos relacionados ao Dicas clássicas: ListBox VCL Múltiplas Colunas, mas uma quantidade enorme de conteúdos que poderá lhe ajudar muito no seu dia a dia, é uma verdadeira NETFLIX para os programadores Delphi.
Gostou?
Compartilhe:

Embarque no foguete com milhares de devs para aprender desenvolvimento, evoluir de forma contínua e se manter relevante no mercado.

Dúvidas
Cadastre-se em nossa lista

Para ter acesso em primeira mão, a tudo que acontece na Academia do Código, basta se cadastrar em nossa lista

Grupo Thulio Bittencourt | Academia do Código

#FaçaPartedaHistória

Copyright © 2024 – Todos os direitos reservados