changer couleur ligne ListView

Baboune

XLDnaute Nouveau
Bonsoir le Forum,

Je voudrais que lorsque je click sur un élément de ma ListView, cette ligne change de couleur.
Puis lorsque je sélectionne une deuxième ligne, elle change de couleur comme la première et la première reprenne sa couleur d'origine.

Avec ce code j'arrive a changer de couleur, mais lorsque je click sur un autre élément, le premier élément ne retrouve pas sa couleur d'origine.

Private Sub ListView1_Click()
Dim wItem As ListItem
Dim C As Byte

Set wItem = ListView1.SelectedItem

ListView1.ForeColor = RGB(1, 0, 0)

wItem.ForeColor = RGB(0, 0, 255)

For C = 1 To ListView1.ColumnHeaders.Count
wItem.ListSubItems(C).ForeColor = RGB(0, 0, 255)
Next

End Sub

Quelqu’un aurai une idée sur la correction à apporter ?

Message édité par: Baboune, à: 11/11/2005 22:13
 

Hervé

XLDnaute Barbatruc
Bonjour baboune

La seule combine que j'ai trouvé c'est de reboucler sur chaque item avant pour les remettres en noir.

j'ai ajouté un repaint, car bizarrement chez moi les changements de couleurs ne se faisaient pas sans.



Private Sub ListView1_Click()
Dim wItem As ListItem
Dim C As Byte
Dim i As Byte
With ListView1
       
For i = 1 To .ListItems.Count
               
For C = 1 To .ColumnHeaders.Count
                        .ListItems(i).ForeColor = RGB(1, 0, 0)
                        .ListItems(i).ListSubItems(C).ForeColor = RGB(1, 0, 0)
               
Next C
       
Next i
       
Set wItem = .SelectedItem
        wItem.ForeColor = RGB(0, 0, 255)
       
For C = 1 To .ColumnHeaders.Count
                wItem.ListSubItems(C).ForeColor = RGB(0, 0, 255)
       
Next C
End With
Me.Repaint
End Sub

salut
 

Baboune

XLDnaute Nouveau
Bonjour Hervé, bonjour le Forum

J'ai une erreur d'exécution '35600'
Index hors limite avec le code proposé par Hervé.

avec la ligne :

.ListItems(i).ListSubItems(C).ForeColor =<index hors limite>

Y a t'il un probleme de déclaration avec 'i' et 'c' ou c'est 'RGB (1,0,0)' qui pose probléme. J'ai modifier la déclaration de 'i' et 'c' en long, integer ... sans résultat.


une idée ?
 

MichelXld

XLDnaute Barbatruc
bonjour Baboune , bonjour cher Hervé

tu peux tester


Private Sub ListView1_Click()
Dim wItem As ListItem
Dim C As Byte
Dim i As Byte
With ListView1
For i = 1 To .ListItems.Count
For C = 1 To .ColumnHeaders.Count - 1
.ListItems(i).ForeColor = RGB(1, 0, 0)
.ListItems(i).ListSubItems(C).ForeColor = RGB(1, 0, 0)
Next C
Next i
Set wItem = .SelectedItem
wItem.ForeColor = RGB(0, 0, 255)
For C = 1 To .ColumnHeaders.Count - 1
wItem.ListSubItems(C).ForeColor = RGB(0, 0, 255)
Next C
End With
Me.Repaint
End Sub



bonne journée
MichelXld
 

Hervé

XLDnaute Barbatruc
re baboune, salut ami michel :)

Completement d'accord avec michel, il faut que tu ajustes tes boucles.

en pièce jointe petite démo du résultat obtenu.

salut
[file name=treeviewcouleur.zip size=21871]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/treeviewcouleur.zip[/file]
 

Pièces jointes

  • treeviewcouleur.zip
    21.4 KB · Affichages: 577

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib