S'adresse à des débutants comme moi, qui se demandent comment changer la couleur du texte à chaque nouvelle ligne dans une listview.
Remarquez, on pourrait, de la même façon, changer la couleur cellule par cellule.
le code peut se résumer à la fonction suivante et est utilisable en vb ou vba:
Source / Exemple :
Public Function lstadd(lst As ListView, lstvaleur As Variant, Optional lstcolor As String = "-1", Optional lstheaderisgiven As Boolean, Optional lstheader As Variant)
'#### fonction qui ajoute séquentiellement des enregistrements
'#### dans une listview avec une couleur donnée (lstcolor)
'exemple de syntaxe pour l'appel:
'Call lstadd(ListView1, lstvaleur, lstcolor, True, lstheader) = specification des noms de colonne et de la couleur de la ligne
'Call lstadd(ListView1, lstvaleur, lstcolor) = ligne de couleur lstcolor
'Call lstadd(ListView1, lstvaleur) = couleur noire par défaut
'#### Vous devez vous assurer qu'il y a suffisamment
'#### de colonnes definies(lstheader)
'#### pouvant supporter la liste de valeurs entrante(lstvaleur)
'#### precisez lstheaderisgiven = true si vous créez
'#### vos propres colonnes par le biais de ce code
'#### lstcolor varie de &h000000 à &hFFFFFF (BLEU-VERT-ROUGE)
Dim lst_header_is_checked As Boolean
Dim lst_m As Integer
Dim lst_mm As Integer
Dim lst_header_exist As Boolean
Dim lst_column_index As Integer
'retire le tri actif pour ajouter séquentiellement
lst.Sorted = False
'y a t'il une couleur spéciale?
If lstcolor = "-1" Then
lstcolor = "0"
End If
'faut il tenir compte des entetes de colonne (option)
If lstheaderisgiven = True Then
lst_header_is_checked = True
Else
lst_header_is_checked = False
End If
'si option entete des colonnes,
'alors créer tous les entetes de colonnes absents
If lst_header_is_checked = True Then
For lst_m = 1 To UBound(lstheader)
lst_header_exist = False
lst_column_index = -1
For lst_mm = 1 To lst.ColumnHeaders.Count
If lst.ColumnHeaders(lst_mm).Text = lstheader(lst_m) Then
lst_header_exist = True
Exit For
End If
Next lst_mm
If lst_header_exist = False Then
lst.ColumnHeaders.Add , , lstheader(lst_m)
End If
Next lst_m
End If
'ajout des données
'doit on tenir compte de la liste des header
If lst_header_is_checked = True Then
For lst_m = 1 To UBound(lstvaleur)
For lst_mm = 1 To UBound(lstheader)
If lstheader(lst_m) = lst.ColumnHeaders(lst_mm).Text Then
lst_column_index = lst_mm
Exit For
End If
Next lst_mm
If lst_column_index = 1 Then
lst.ListItems.Add , , lstvaleur(lst_m)
lst.ListItems.Item(lst.ListItems.Count).ForeColor = (lstcolor)
Else
lst.ListItems(lst.ListItems.Count).SubItems(lst_column_index - 1) = lstvaleur(lst_m)
lst.ListItems.Item(lst.ListItems.Count).ListSubItems(lst_column_index - 1).ForeColor = (lstcolor)
End If
Next lst_m
'ajout des données
'dans l'ordre des lstvaleurs
Else
For lst_m = 1 To UBound(lstvaleur)
If lst_m = 1 Then
lst.ListItems.Add , , lstvaleur(lst_m)
lst.ListItems.Item(lst.ListItems.Count).ForeColor = (lstcolor)
Else
lst.ListItems(lst.ListItems.Count).SubItems(lst_m - 1) = lstvaleur(lst_m)
lst.ListItems.Item(lst.ListItems.Count).ListSubItems(lst_m - 1).ForeColor = (lstcolor)
End If
Next lst_m
End If
End Function
Conclusion :
--------------------------------------
source origine:
--------------------------------------
ZTPdiffusion>
http://www.vbfrance.com/forum.v2.aspx?ID=196570
---------------------------------------
source supplémentaire:
---------------------------------------
modListView6 Module
Kevin Wilson>
http://www.TheVBZone.com ( The VB Zone )
http://www.TheVBZone.net ( The VB Zone .net )
---------------------------------------
Autre source :
---------------------------------------
Astalavista>
http://vbfrance.com/code.aspx?ID=21072
http://vbfrance.com/code.aspx?ID=21062
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.