Jump to content
andreycolli

Combobox com separador de itens

Recommended Posts

andreycolli

Pessoal estou desenvolvendo um sistema e queria o seguinte: Um combobox que me traz uma lista igual um treeview exemplo: 

1 Financeiro

           1.1 Aluguel

            1.2 Salario

2 Despesas

           2.1 Manutenção de equipamento

            2.2

Como faço isso em vb.net????? eu dei uma olhada mais só encontrei isso em asp ou c# porem estava muito complexo para eu entender. Alguem pode me dar uma ajuda?

Esses dados eu estarei trazendo do banco de dados. Os número só usei como exemplo para ficar melhor para entender.

Edited by andreycolli

Share this post


Link to post
Share on other sites
Renato MDSP

Olá. Fiz algo parecido com uma TreeView no VBA Excel. Talvez possa te dar alguma ideia para fazer no VB.NET sem o TreeView, caso deseje.

A desvantagem é que não da para recolher os dados igual acontece no TreeView.

Para funcionar você terá que ir no VBE (alt + F11) -> Ferramentas -> Referências -> Microsoft Scripting RunTime

Link da planilha utilizada: https://drive.google.com/open?id=18qZK0et_HuIFRKVmenajs--XubT1Wt5R

Private Sub UserForm_Initialize()
    CarregaComboBoxTreeView Me.ComboBox1
End Sub
Private Sub ComboBox1_Click() 'retira o espaço usado para criar o treeview
    Me.ComboBox1.Text = Replace(Me.ComboBox1.List(Me.ComboBox1.ListIndex, 0), vbTab, "")
End Sub
Sub CarregaComboBoxTreeView(campo As MSForms.ComboBox)

Dim categorias          As New Scripting.Dictionary
Dim lista_despesas      As Variant
Dim linha_categoria     As Long
Dim nr_categoria        As Long
Dim nr_item             As Long
Dim nr_subitem          As Long

lista_despesas = Planilha1.Range("A1").CurrentRegion.Offset(1).Resize(Planilha1.Range("A1").CurrentRegion.Rows.Count - 1).Value
nr_categoria = 1
nr_item = 1
nr_subitem = 1

For linha_categoria = 1 To UBound(lista_despesas) 'lista as categorias unicas
    categorias.Item(lista_despesas(linha_categoria, 2)) = ""
Next

For Each categoria In categorias.Keys
    Me.ComboBox1.AddItem nr_categoria & ". " & categoria 'add categoria
    nr_categoria = nr_categoria + 1
    For yy = 1 To UBound(lista_despesas)
        If categoria = lista_despesas(yy, 2) Then
            Me.ComboBox1.AddItem vbTab & nr_item & "." & nr_subitem & ". " & lista_despesas(yy, 1) 'add itens da categoria
            nr_subitem = nr_subitem + 1
        End If
    Next
    nr_subitem = 1
Next

End Sub

 

Edited by Renato MDSP

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.