Listview (texte couleur)

Description

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

Codes Sources

A voir également

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.