O ListBox padrão do Visual Basic não suporta colunas, mas podemos contornar essa limitação utilizando a função API SendMessage do Windows. Isso permite organizar os itens da ListBox em colunas utilizando tabulações.
Passo a Passo para Criar Colunas na ListBox
– Adicione uma ListBox ao formulário e nomeie-a como lstCapitais.
– Crie um módulo (arquivo .BAS) para armazenar a constante necessária.
– Utilize a API SendMessage para configurar os espaçamentos das colunas.
– Insira os dados formatados na ListBox utilizando vbTab.
Código Completo
No Módulo (.BAS), adicione a constante e declare a API
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Public Const LB_SETTABSTOPS = &H192
No Formulário, insira o seguinte código
Private Sub Form_Load()
Dim lngRet As Long
' Define a posição da tabulação (espaço entre colunas)
lngRet = SendMessage(lstCapitais.hwnd, LB_SETTABSTOPS, 1, ByVal CLng(40))
' Chama o procedimento para adicionar os itens formatados
Call AdicionarCapitais
End Sub
Private Sub AdicionarCapitais()
With lstCapitais
.Clear ' Garante que a ListBox está vazia antes de adicionar itens
.AddItem "Estado" & vbTab & "Capital"
.AddItem "-----------------" & vbTab & "-----------------"
.AddItem "São Paulo" & vbTab & "São Paulo"
.AddItem "Rio de Janeiro" & vbTab & "Rio de Janeiro"
.AddItem "Minas Gerais" & vbTab & "Belo Horizonte"
.AddItem "Pernambuco" & vbTab & "Recife"
End With
End Sub
Explicação do Código
– SendMessage → Define os espaços das colunas dentro da ListBox.
– LB_SETTABSTOPS → Configura os pontos de tabulação para alinhar os itens.
– vbTab → Insere a tabulação entre os dados.
– lngRet → Armazena o valor retornado pela API.
– AdicionarCapitais → Insere os dados na ListBox já formatados.
– .Clear → Limpa a ListBox antes de adicionar novos itens.
Aprimorando a Visualização
– Linha de separação entre títulos e dados.
– Título “Estado | Capital” para melhor organização.
– Tabulação configurada para manter alinhamento adequado.
Agora sua ListBox exibe colunas organizadas de forma profissional, sem precisar usar um ListView! 🚀