Como Adicionar Tabs a uma ListBox no Visual Basic

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! 🚀

Posts Similares