Jump to content

(Resolvido)Clicar na chechbox da Listview (VB6)


vbtipo

Recommended Posts

O meu problema é o seguinte:

Eu tenho uma listview que é carregada pelos dados vindos da base de dados mas esta não está ligada a ela.

Agora deparo com a seguinte situação:

1 - Quando mando ordenar o número de registo que está juntamente com a checkbox e clico nele ele muda a cor dos dados que essa linha tem.

Ex: 1,2,3 (faz bem)

2 - Quando faço outra ordenação qualquer e se a numeração ficar por ex: assim 1,3,2 (já faz errado).

Ao clicar na checkbox onde está o registo 3 ele vai alterar a côr onde está o registo 2, o mesmo acontece registo3 e se clicar no registo 1 já altera bem a côr.

Existe solução para este caso bicudo.

E o código onde me acontece isto é este:

Private Sub ListView_ItemCheck(Index As Integer, ByVal item As MSComctlLib.ListItem)

If ListView(Index).ListItems(Val(item)).Selected = True Then
   'ListView(Index).ListItems((Val(item)).Index).ForeColor = vbRed
   ListView(Index).ListItems(Val(item)).Selected = True
   ListView(Index).ListItems(Val(item)).ForeColor = vbRed
Else
   ListView(Index).ListItems(Val(item)).ForeColor = vbBlack
End If
End Sub

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

Mostra o código completo, para te poder entender.

Dica : Podes usar o Perseve na variavel para guardares o valor de cada iten

Até+

Programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Este é o código completo que tenho para pintar o registo de uma outra côr, ou seja, se a checkbox fôr seleccionada pinta de vermelho em senão pinta em preto.

Private Sub ListView_ItemCheck(Index As Integer, ByVal item As MSComctlLib.ListItem)

If ListView(Index).ListItems(Val(item)).Selected = True Then
   ListView(Index).ListItems(Val(item)).ForeColor = vbRed
Else
   ListView(Index).ListItems(Val(item)).ForeColor = vbBlack
End If
End Sub

E este daqui é o código que me vai ordenar os campos:

Private Sub ListView_ColumnClick(Index As Integer, ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With ListView(Index)
    Static ilast As Integer, icur As Integer
    icur = ColumnHeader.Index - 1
    If icur = ilast Then
      If .SortOrder = 1 Then
         .SortOrder = 0
       Else
         .SortOrder = 1
       End If
     End If
    .SortKey = icur
    ilast = icur
End With
End Sub

Não tenho mais código relacionado à ordenação e ao checkbox.

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
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.