LISTVIEW - COLUNA COM CHECKBOX

CLEVERTON 12/03/2014 15:44:47
#435928
então cara, o listview não tem [Ô]Celulas[Ô] nas colunas, é somente uma linha, o artificio que é realizado que pegar a posição clicada a partir do evento. e compara-lo pelo somatório do tamanho das colunas.

Private Sub ListView1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseDoubleClick

If (e.X > [txt-color=#0000f0](ListView1.Columns(1).Width + ListView1.Columns(2).Width)[/txt-color]) Then [ô]pega a coluna clicada

If (ListView1.SelectedItems(0).SubItems(2).Text = [Ô]P[Ô]) Then

ListView1.SelectedItems(0).SubItems(2).Text = [Ô][Ô]
Else
ListView1.SelectedItems(0).SubItems(2).Text = [Ô]P[Ô]

End If
End If


End Sub



então, a lógica é:

1a coluna
ListView1.Columns(0).Width

2a coluna
ListView1.Columns(0).Width + ListView1.Columns(1).Width

3a coluna
ListView1.Columns(0).Width + ListView1.Columns(1).Width + ListView1.Columns(2).Width

e por ai vai
ELMO01 12/03/2014 16:02:58
#435930
Entendi agora

Obrigado pela dica
ELMO01 12/03/2014 21:40:28
#435960
CLEVERTON, segui o que você propôs acima mas não deu certo, será que você poderia olhar o que estou fazendo de errado, pois quando clico na coluna 3 ele marca a coluna 2, se clico na coluna 2 ele continua a marcar a coluna 3, ou seja, não está marcando a coluna 2 e 3 como eu queria.

Abaixo está a SUB que fiz


Private Sub ListView2_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView2.MouseClick
[ô]If (e.X > (ListView1.Columns(1).Width + ListView1.Columns(2).Width)) Then [ô]pega a coluna clicada
If (e.X > (ListView2.Columns(1).Width + ListView2.Columns(2).Width + ListView2.Columns(3).Width)) Then [ô]pega a coluna clicada
If (ListView2.SelectedItems(0).SubItems(3).Text = [Ô]X[Ô]) Then
ListView2.SelectedItems(0).SubItems(3).Text = [Ô][Ô]
Else
ListView2.SelectedItems(0).SubItems(3).Text = [Ô]X[Ô]
End If
Else
If (e.X > (ListView2.Columns(1).Width + ListView2.Columns(2).Width)) Then
If (ListView2.SelectedItems(0).SubItems(2).Text = [Ô]X[Ô]) Then
ListView2.SelectedItems(0).SubItems(2).Text = [Ô][Ô]
Else
ListView2.SelectedItems(0).SubItems(2).Text = [Ô]X[Ô]
End If
End If
End If
End Sub

Obrigado
CLEVERTON 13/03/2014 11:15:04
#435994
então cara, se vc usou meu código todo daria certo sim.

isso não existe em meu código
   If (ListView2.SelectedItems(0).SubItems(2).Text = [Ô]X[Ô]) Then


no meu código está escrito assim
 ListView1.SelectedItems(0).SubItems(2).Text = [Ô]P[Ô]



utilizei a letra P. usando a fonte [Ô]Wingdings 2[Ô] pra simular um efeito de checkagem.

posta um print pra eu ver como está seu form.
ELMO01 13/03/2014 13:17:26
#436004
CLEVERTON - como você pode reparar foi somente alterado a letra [Ô]P[Ô] que voce colocou pelo [Ô]X[Ô], o restante continua do mesmo jeito que voce propos, mesmo assim não está dando o resultado que desejo.

Elmo
OCELOT 13/03/2014 15:27:17
#436012
Sinceramente você estão complicando uma coisa simples, o ListView já da recursos para detectar onde foi clicado, por exemplo, se você tem o item com 4 colunas e as duas ultimas (subitem 2 e 3) vão ser marcados ou desmarcados com X no clique ficaria assim:

Private Sub ListView1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListView1.MouseClick
Dim ht As ListViewHitTestInfo = ListView1.HitTest(e.Location)
If ht.SubItem IsNot Nothing Then [ô]apenas para ter certeza que existe o subitem
Dim idx = ht.Item.SubItems.IndexOf(ht.SubItem) [ô]pega o indice do subitem clicado
If idx = 2 OrElse idx = 3 Then [ô]verifica se é uma das colunas que queremos tratar
If ht.SubItem.Text = [Ô]X[Ô] Then
ht.SubItem.Text = [Ô][Ô]
Else
ht.SubItem.Text = [Ô]X[Ô]
End If
End If
End If
End Sub


As únicas coisa que precisam ser mudadas no ListView são o View que deve ser Details (o que é bem obvio para mostrar as colunas) e o FullRowSelect deve ser True, ou o evento não é disparado quando se clica nos subitems
CLEVERTON 14/03/2014 09:30:13
#436032
Resposta escolhida
verdade OCELOT

o .Hitest é a forma mais adequada mesmo
ELMO01 14/03/2014 16:43:47
#436058
Agradeço aos dois pelas dicas.

Muito obrigado,
DAMASCENO.CESAR 15/03/2014 13:15:24
#436085
Elmo01, é essa linha mesmo
CLEVERTON 20/04/2014 19:15:50
#437458
Olha cara, o resultado final deve ser igual a esta tela que estou postando...

me mostra um PRINT do seu form pra eu ver o que está saindo.

Lembre-se, a fonte deve ser mudada na coluna que será de checagem.
Página 2 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas