vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
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:     [ Jetzt bewerten ]Views:  25.600 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8 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!
 

Dieser Tipp wurde bereits 25.600 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2014 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel