Ir ao conteúdo
  • Cadastre-se

VB selecionar 2 listview


ramonlmf

Posts recomendados

Bom tenho duas listviews e gostaria que ao clicar em cada item de cada listview ficassem selecionas

Bom eu fiz isso com duas listbox


Private Sub Form_Load()
List1.AddItem "ddddddd"
List1.AddItem "aaaaaaaaaaa"
List2.AddItem "dddd"
List2.AddItem "ssssss"
End Sub

Private Sub List1_Click()
a = List1.ListIndex
List1.Selected(a) = True
End Sub

Gostari de fazer isso acima mas com duas listviews alguem poderia me ajudar com um exemplo? :(

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Deixa ver se entendi: ao selecionar um item qualquer em um ListView, você quer que o item correspondente seja selecionado automaticamente em outro ListView, é isso?

Bom, o ListView é um tanto problemático para esse tipo de coisa. Não adianta tentar usar a propriedade "Index" do objeto "ListItem", assim não funciona.

Você precisa de algo que dispare o método "EnsureVisible" e a propriedade "Selected" do objeto "ListItem".

Você até poderia usar o evento "ItemClick" aproveitando o retorno do argumento "Item", mas o ListView tem um bug que impede que o método "EnsureVisible" e a propriedade "Selected" funcionem para outro ListView, à não ser o que disparou o evento. Isso faz o foco se manter no controle de origem do evento, o que anula o efeito que você quer.

Então o jeito é usar o evento "Click" conforme o exemplo abaixo.

Apenas coloque dois ListView num Form (não precisa renomear nem ajustar propriedades), e coloque o código abaixo:

Postado Originalmente por Exemplo ListView

Private Sub Form_Load()

    Dim ItemLista As ListItem

    With ListView1

        .ColumnHeaders.Add , , "Coluna 1", 2000, lvwColumnLeft

        .View = lvwReport

        Set ItemLista = .ListItems.Add(1, , "Banana")

        Set ItemLista = .ListItems.Add(2, , "Maçã")

        Set ItemLista = .ListItems.Add(3, , "Laranja")

        Set ItemLista = .ListItems.Add(4, , "Melancia")

        Set ItemLista = .ListItems.Add(5, , "Limão")

        Set ItemLista = .ListItems.Add(6, , "Tangerina")

        Set ItemLista = .ListItems.Add(7, , "Pêra")

        Set ItemLista = .ListItems.Add(8, , "Melão")

        Set ItemLista = .ListItems.Add(9, , "Mamão")

    End With

    With ListView2

        .ColumnHeaders.Add , , "Coluna 1", 2000, lvwColumnLeft

        .View = lvwReport

        Set ItemLista = .ListItems.Add(1, , "Banana")

        Set ItemLista = .ListItems.Add(2, , "Maçã")

        Set ItemLista = .ListItems.Add(3, , "Laranja")

        Set ItemLista = .ListItems.Add(4, , "Melancia")

        Set ItemLista = .ListItems.Add(5, , "Limão")

        Set ItemLista = .ListItems.Add(6, , "Tangerina")

        Set ItemLista = .ListItems.Add(7, , "Pêra")

        Set ItemLista = .ListItems.Add(8, , "Melão")

        Set ItemLista = .ListItems.Add(9, , "Mamão")

    End With

End Sub

Private Sub ListView1_Click()

    Dim ItemEncontrado As ListItem, Texto As String

   

    If Not ListView1.ListItems.Count = 0 Then

       

        If Not ListView1.SelectedItem Is Nothing Then Texto = ListView1.SelectedItem.Text

   

        If Not Texto = "" Then

            Set ItemEncontrado = ListView2.FindItem(Texto, lvwText, , lvwPartial)

   

            If Not (ItemEncontrado Is Nothing) Then

           

                Indice = ItemEncontrado.Index

   

                With ListView2

                    .ListItems(Indice).EnsureVisible

                    .ListItems(Indice).Selected = True

                    .SetFocus

                End With

           

            End If

   

        End If

   

    End If

End Sub

Note que eu usei o método "FindItem" para buscar por string: isso evita erros se por acaso o Index do Item for alterado, ou algum Item for deletado, etc...

Só fiz o exemplo do ListView da esquerda para o da direita, o resto é com você.

[]'s

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...