Home > Artikel > Ausgabe 11/2012 > ListView-Steuerelement: Kontrollkästchen nutzen

ListView-Steuerelement: Kontrollkästchen nutzen

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Im Gegensatz zum in Access eingebauten Listenfeld-Steuerelement kann das ListView-Steuerelement auch ein Kontrollkästchen vor jeder Zeile anzeigen. Das ist eine wirklich praktische Funktion, wenn Sie Datensätze für verschiedene Aktionen auswählen möchten oder einfach einen bestimmten Status darstellen wollen. Dieser Artikel zeigt, welche Varianten es zur Darstellung des Kontrollkästchens gibt und wie Sie dieses aktivieren oder deaktivieren und es an Daten eines Feldes binden.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1211_ListView.mdb.

Kontrollkästchen anzeigen

Für das erste Beispiel fügen Sie einfach einem Formular ein ListView-Steuerelement hinzu und stellen seine Eigenschaft Name auf den Wert lvwKontrollkaestchen ein (siehe Formular frmKontrollkaestchenEinfach in der Beispieldatenbank).

Die Eigenschaften stellen wir, da sich das ListView-Steuerelement ohnehin nur per VBA-Code füllen lässt, direkt komplett per VBA ein – das Eigenschaftsfenster dieses Steuerelements lassen wir damit außen vor. Wenn Sie das Formular in der Entwurfsansicht öffnen, wählen Sie im Eigenschaftsfenster den Eintrag Formular aus, stellen für die Eigenschaft Beim Laden den Wert [Ereignisprozedur] ein und klicken auf die Schaltfläche mit den drei Punkten.

Die nun im VBA-Editor erscheinende leere Prozedur ergänzen Sie wie folgt und tragen außerdem die Deklarationszeile für das Objekt zum Referenzieren des ListView-Steuerelements oben im Modul ein:

Dim objLvwKontrollkaestchen As MSComctlLib.ListView

Private Sub Form_Load()

     Set objLvwKontrollkaestchen = _

         Me!lvwKontrollkaestchen.Object

     With objLvwKontrollkaestchen

         .View = lvwReport

         .Appearance = ccFlat

         .BorderStyle = ccNone

         .FlatScrollBar = False

         .GridLines = True

         .ColumnHeaders.Clear

         .Checkboxes = True

         .ColumnHeaders.Add , , "Listeneinträge", 5000

         .ListItems.Clear

         .ListItems.Add , , "Eintrag 1"

         .ListItems.Add , , "Eintrag 2"

         .ListItems.Add , , "Eintrag 3"

     End With

End Sub

Ein Wechseln in die Formularansicht liefert nun das ListView-Steuerelement aus Bild 1. Die Prozedur stellt dazu beim Laden des Formulars zunächst einige Eigenschaften zur Definition des Aussehens ein und legt die Anzahl der Spalten sowie die Spaltenüberschrift und -breite fest.

Kontrollkästchen und erstes Feld in einer Spalte

Bild 1: Kontrollkästchen und erstes Feld in einer Spalte

Danach folgt bereits die entscheidende Eigenschaft: Mit .Checkboxes = True aktivieren Sie die Anzeige der Kontrollkästchen in der linken Spalte. Danach fügt die Prozedur noch drei Beispieleinträge zum ListView-Steuerelement hinzu.

Kontrollkästchen per Code aktivieren

Wenn Sie gleich beim Öffnen des Formulars einen Eintrag ankreuzen möchten, müssen Sie den betroffenen Eintrag mit einer wie folgt deklarierten Objektvariablen referenzieren:

Dim objListItem As MSComctlLib.ListItem

Dieser Variablen weisen Sie den Eintrag dann gleich beim Anlegen zu:

Set objListItem = .ListItems.Add(, , "Eintrag 1")

Damit können Sie dann schließlich die Checked-Eigenschaft auf den Wert True einstellen, um den Eintrag anzuhaken:

objListItem.Checked = True

Um den Eintrag wieder zu deaktivieren, stellen Sie die gleiche Eigenschaft auf False ein:

objListItem.Checked = False

Checkbox-Zustand ermitteln

Wie finden Sie nun heraus, ob die Checkbox eines Eintrags angehakt ist oder nicht? Im Direktfenster gelingt dies beispielsweise wie folgt, wenn Sie nur den Index des betroffenen Eintrags kennen (der Index beginnt mit der Zahl 1):

Forms!frmKontrollkaestchenEigeneSpalte!lvwKontrollkaestchen.ListItems(2).Checked

Diese Anweisung prüft beispielsweise die Checked-Eigenschaft des zweiten Eintrags des ListView-Steuerelements.

Kontrollkästchen in eigener Spalte

Vielleicht gefällt Ihnen die Ansicht nicht, in der die Checkbox in der gleichen Spalte wie der erste Wert angezeigt werden. In diesem Fall reservieren Sie eine eigene Spalte für das Kontrollkästchen, sodass das Ergebnis wie in Bild 2 aussieht (siehe auch Formular frmKontrollkaestchenEigeneSpalte in der Beispieldatenbank). Dort wurde der Code der Prozedur Form_Load nur am Ende angepasst:

Kontrollkästchen in eigener Spalte

Bild 2: Kontrollkästchen in eigener Spalte

.ColumnHeaders.Add , , "Markiert", 750

.ColumnHeaders.Add , , "Listeneinträge", 5000

.ListItems.Clear

Set objListItem = .ListItems.Add()

objListItem.Checked = True

objListItem.ListSubItems.Add , , "Eintrag 1"

Set objListItem = .ListItems.Add()

objListItem.ListSubItems.Add , , "Eintrag 2"

Set objListItem = .ListItems.Add()

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!