LISTVIEW CHECKBOXES
Bom dia pessoal!
alguém sabe me dizer como eu poderia fazer para um listview aceitar apenas um checkboxe marcado.
Tipo assim, qdo eu marcar um ele desmarca o outro, como se fosse um OptionButton.
Grato
alguém sabe me dizer como eu poderia fazer para um listview aceitar apenas um checkboxe marcado.
Tipo assim, qdo eu marcar um ele desmarca o outro, como se fosse um OptionButton.
Grato
Dêem uma olha como eu fiz. So q desmarca tudo, até o que eu selecionei por ultimo
Private Sub ListView_Click()
desmarcaModelos
End Sub
Private Sub desmarcaModelos()
Dim X As Integer, y As Integer
y = ListView.ListItems.Count
If y = 0 Then Exit Sub
For X = 1 To y
If ListView.ListItems.Item(X).Checked = True Then
ListView.ListItems.Item(X).Checked = False
End If
Next
End Sub
Private Sub ListView_Click()
desmarcaModelos
End Sub
Private Sub desmarcaModelos()
Dim X As Integer, y As Integer
y = ListView.ListItems.Count
If y = 0 Then Exit Sub
For X = 1 To y
If ListView.ListItems.Item(X).Checked = True Then
ListView.ListItems.Item(X).Checked = False
End If
Next
End Sub
Private Sub desmarcaModelos()
Dim X As Integer, y As Integer
y = ListView.ListItems.Count
If y = 0 Then Exit Sub
For X = 1 To y
If ListView.ListItems.Item(X).Checked = True Then
ListView.ListItems.Item(X).Checked = False
End If
Next
ListView.SelectedItem.Checked = True
End Sub
ROBIU, dessa forma ele desmarca todos e sempre marca o último :(
Crie uma função booleana e chame ela no evento do cara marcar o checkbox....
Algo assim!
ListView.SelectedItem.Checked = desmarcaModelos
essa função vai retornar true se nao tiver nenhum checkbox marcado e false se tiver algum marcado !
Algo assim!
Private Function desmarcaModelos() as Boolean
Dim X As Integer, y As Integer
y = ListView.ListItems.Count
If y = 0 Then Exit Sub
For X = 1 To y
If ListView.ListItems.Item(X).Checked = True Then
return False
End If
Next
End Sub
ListView.SelectedItem.Checked = desmarcaModelos
essa função vai retornar true se nao tiver nenhum checkbox marcado e false se tiver algum marcado !
Então verifique se colocou no lugar correto. Aqui funciona. Veja exemplo
da forma abaixo resolveu parcialmente
Private Sub desmarcaModelos()
Dim X As Integer, y As Integer, J As Integer
y = ListView2.ListItems.Count
If y = 0 Then Exit Sub
J = ListView2.SelectedItem.Index
For X = 1 To y
If ListView2.ListItems.Item(X).Checked = True Then
ListView2.ListItems.Item(X).Checked = False
End If
Next
ListView2.ListItems.Item(J).Checked = True
End Sub
Quando seleciono um item ele desmarca todos os checkboxes e marca o que eu selecionei por ultimo. Porém se eu clicar diretamente no checkbox ele desmarca todos e marca o último da lista
Private Sub desmarcaModelos()
Dim X As Integer, y As Integer, J As Integer
y = ListView2.ListItems.Count
If y = 0 Then Exit Sub
J = ListView2.SelectedItem.Index
For X = 1 To y
If ListView2.ListItems.Item(X).Checked = True Then
ListView2.ListItems.Item(X).Checked = False
End If
Next
ListView2.ListItems.Item(J).Checked = True
End Sub
Quando seleciono um item ele desmarca todos os checkboxes e marca o que eu selecionei por ultimo. Porém se eu clicar diretamente no checkbox ele desmarca todos e marca o último da lista
:) o seu exemplo ta fazendo igual ao que eu disse acima
OK, agora sim:
Private Sub ListView_ItemCheck(ByVal Item As MSComctlLib.ListItem)
ListView.ListItems(Item.Index).Selected = True
End Sub
Blz!!!! funcionou bem. Vlw
Tópico encerrado , respostas não são mais permitidas