Rubrik: Controls · ListView | VB-Versionen: VB4, VB5, VB6 | 11.09.02 |
ListView einfärben Eine Universalroutine, mit der sich die Spalten- und Zeilen eines ListView-Controls einfärben lassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 40.601 |
www.tools4vb.de | System: 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:
- eine Spalte einer bestimmten Zeile "einfärben"
- alle Spalten einer bestimmten Zeile "einfärben"
- eine Spalte innerhalb aller Zeilen "einfärben"
- alle Spalten innerhalb aller Zeilen "einfärben"
Wichtig!
Nach dem Hinzufügen neuer List-Items muss die Prozedur lvw_SetColor erneut aufgerufen werden!