Ajouter une colonne à une listview à partir d'une collection (et alterner les forecolor)


Contenu du snippet

Private Sub AddColumn(LV As ListView, oCol As Collection, Header As  String, Width As  Long, Optional  Color1 As OLE_COLOR = vbBlack, Optional  Color2 As OLE_COLOR = vbRed)
    Dim Litem As ListItem, i As Integer, j As Integer, lCol As OLE_COLOR
    i = LV.ColumnHeaders.Count
    
    If i = 0 Then
'       caption/name
        LV.ColumnHeaders.Add 1, , Header
        LV.ColumnHeaders(1).Width = Width
        For i = 1 To oCol.Count
            Set Litem = LV.ListItems.Add(, ,  oCol.Item(i))
            lCol = IIf(i And 1, Color1, Color2)
            LV.ListItems(i).ForeColor = lCol
        Next i
    Else
'       value, on ajoute une  colonne et on la remplie
        LV.ColumnHeaders.Add , , Header
        LV.ColumnHeaders(i + 1).Width = Width
        For j = 1 To oCol.Count
            Set Litem = LV.ListItems.Item(j)
            Litem.SubItems(i) = Trim$(oCol.Item(j))
            lCol = IIf(j And 1, Color1, Color2)
            Litem.ListSubItems(i).ForeColor = lCol
        Next j
    End If
End Sub

'   EXEMPLE  D'UTILISATION
Private Sub Form_Load()
    Dim c1 As New Collection
    Dim c2 As New Collection
    With ListView1
        .LabelEdit = lvwManual
        .FullRowSelect = True
        .View = lvwReport
        .GridLines = True
    End With
    
    c1.Add "voici": c1.Add "une": c1.Add "première": c1.Add "colonne"
    Call AddColumn(ListView1, c1, "Colonne  1", 800)
    c2.Add "et voici": c2.Add "une": c2.Add "deuxième": c2.Add "colonne"
    Call AddColumn(ListView1, c2, "Colonne  2", 900, &H8000&, &HFF0000)
    Set c2 = Nothing
    Set c1 = Nothing
End Sub


Compatibilité : VB6, VBA

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.