LISTVIEW CHECKBOXES

GUILHERMEMFA 03/08/2011 10:39:27
#380671
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
GUILHERMEMFA 03/08/2011 12:38:42
#380685
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
ROBIU 03/08/2011 13:01:12
#380691
Resposta escolhida
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

GUILHERMEMFA 03/08/2011 13:46:35
#380697
ROBIU, dessa forma ele desmarca todos e sempre marca o último :(
RODRIGOFERRO 03/08/2011 13:54:36
#380699
Crie uma função booleana e chame ela no evento do cara marcar o checkbox....

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 !
ROBIU 03/08/2011 14:14:59
#380703
Então verifique se colocou no lugar correto. Aqui funciona. Veja exemplo
GUILHERMEMFA 03/08/2011 14:36:25
#380705
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
GUILHERMEMFA 03/08/2011 14:40:24
#380707
:) o seu exemplo ta fazendo igual ao que eu disse acima
ROBIU 03/08/2011 15:00:38
#380714
OK, agora sim:

Private Sub ListView_ItemCheck(ByVal Item As MSComctlLib.ListItem)
ListView.ListItems(Item.Index).Selected = True
End Sub
GUILHERMEMFA 03/08/2011 15:17:28
#380715
Blz!!!! funcionou bem. Vlw
Tópico encerrado , respostas não são mais permitidas