vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls · ListView   |   VB-Versionen: VB4, VB5, VB611.09.02
ListView einfärben

Eine Universalroutine, mit der sich die Spalten- und Zeilen eines ListView-Controls einfärben lassen.

Autor:   Dieter OtterBewertung:  Views:  40.601 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit nachfolgender Prozedur lassen sich die Einträge eines ListView-Controls in einer bestimmten Farbe darstellen. Die Prozedur erwartet drei Parameter, die jetzt kurz beschrieben werden sollen.

  • lvw: ListView-Control
  • lColor: Farbwert
  • lColumn: Spalte, die "gefärbt" werden soll oder 0 für alle Spalten
  • lRow: Zeile-Index oder 0 für alle Zeilen

Und hier die Prozedur

' ListView-Spalte farbig darstellen
Public Sub lvw_SetColor(lvw As ListView, _
  ByVal lColor As Long, ByVal lColumn As Long, _
  Optional ByVal lRow As Long = 0)
 
  Dim itemX As ListItem
  Dim iCols As Integer
  Dim i As Integer
 
  ' Anzahl Spalten ermitteln
  iCols = lvw.ColumnHeaders.Count
 
  If lRow > 0 Then
    ' nur bestimmte Zeile berücksichtigen
    If lRow <= lvw.ListItems.Count Then
      Set itemX = lvw.ListItems(lRow)
      If lColumn = 0 Then
        ' gesamte Spalten "einfärben"
        itemX.ForeColor = lColor
        For I = 1 To iCols - 1
          itemX.ListSubItems(I).ForeColor = lColor
        Next I
      Else
        ' bestimmte Spalte "einfärben"
        If lColumn = 1 Then
          ' 1. Spalte
          itemX.ForeColor = lColor
        Else
          ' SubItem
          itemX.ListSubItems(lColumn - 1).ForeColor = lColor
        End If
      End If
    End If
 
  Else
    ' alle Zeilen berücksichtigen
    For Each itemX In lvw.ListItems
      If lColumn = 0 Then
        ' gesamte Spalten "einfärben"
        itemX.ForeColor = lColor
        For I = 1 To iCols - 1
          itemX.ListSubItems(I).ForeColor = lColor
        Next I
      Else
        ' bestimmte Spalte "einfärben"
        If lColumn = 1 Then
          ' 1. Spalte
          itemX.ForeColor = lColor
        Else
          ' SubItem
          itemX.ListSubItems(lColumn - 1).ForeColor = lColor
        End If
      End If
    Next
  End If
 
  ' Wichtig! Neuzeichnen
  lvw.Refresh
End Sub

Wenn man sich die Parameter etwas näher anschaut, so sind folgende Kombinationen möglich:

  1. eine Spalte einer bestimmten Zeile "einfärben"
  2. alle Spalten einer bestimmten Zeile "einfärben"
  3. eine Spalte innerhalb aller Zeilen "einfärben"
  4. alle Spalten innerhalb aller Zeilen "einfärben"

Wichtig!
Nach dem Hinzufügen neuer List-Items muss die Prozedur lvw_SetColor erneut aufgerufen werden!
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.