ListView-Steuerelement: Daten bearbeiten

In einem gewissen Rahmen bietet das ListView-Steuerelement auch die Möglichkeit, Daten zu bearbeiten. Dazu können Sie beispielsweise den Inhalt der ersten Spalte anklicken, den Eintrag ändern und die änderung übernehmen. Außerdem können Sie mit dem ListView-Steuerelement ein Kontrollkästchen vor jedem Eintrag anzeigen, um die Einträge auszuwählen oder damit ein Ja/Nein-Feld abzubilden. Wie dies gelingt, zeigt der vorliegende Artikel.

Beispieldatenbank

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

Erste Spalte ändern

Im folgenden Beispiel soll der Benutzer direkt im ListView-Steuerelement die in der ersten Spalte angezeigten Daten ändern können. Das setzt voraus, das die erste Spalte auch Daten anzeigt, die man am ehesten schnell mal ändern möchte. Die Folgerung ist, dass die erste Spalte nun nicht mehr den Primärschlüsselwert der zugrunde liegenden Tabelle anzeigen kann. Dieser soll aber in den meisten Fällen ohnehin nicht erscheinen.

Um den Wert des in der ersten Spalte angezeigten Wertes zu ändern, soll der Benutzer diesen einfachen anklicken, damit er wie etwa ein Dateiname im Windows Explorer zur manuellen Bearbeitung vorbereitet wird (siehe Bild 1). Der Benutzer ersetzt dann den vorhandenen Text durch den gewünschten Text und bestätigt die Eingabe durch das Betätigen der Eingabetaste oder anderweitigem Verschieben des Fokus auf ein anderes Element des Formulars.

ändern der in der ersten Spalte angezeigten Daten

Bild 1: ändern der in der ersten Spalte angezeigten Daten

Damit das Formular frmListViewDatenAendern mit den angezeigten Daten der Tabelle tblKunden gefüllt wird, deklarieren wir zunächst eine Objektvariable, mit der wir auf die Eigenschaften und Methoden des ListView-Steuerelements zugreifen, im Klassenmodul Form_frmListViewDatenAendern:

Dim objLvwKunden As MSComctlLib.ListView

Dieses wird im Ereignis Form_Load mit den benötigten Eigenschaften versehen (weitere Informationen hierzu in den Artikeln Das ListView-Steuerelement – Grundlagen und ListView-Steuerelement mit Daten füllen). Die Prozedur Form_Load legen Sie an, indem Sie die Formulareigenschaft Beim Laden auf [Ereignisprozedur] einstellen und dann auf die Schaltfläche mit den drei Punkten klicken. Füllen Sie die nun erscheinende Prozedur im VBA-Editor wie folgt auf, um die Basiseinstellungen und Spalteneigenschaften vorzunehmen:

Private Sub Form_Load()
     Set objLvwKunden = Me!lvwKunden.Object
     With objLvwKunden
         .View = lvwReport
         .Appearance = ccFlat
         .BorderStyle = ccNone
         .FlatScrollBar = False
         .GridLines = True
         .ColumnHeaders.Clear
         .ColumnHeaders.Add , , "Firma", 4500
         .ColumnHeaders.Add , , "Kundencode", 1500
         .ListItems.Clear
     End With
     ListViewFuellen objLvwKunden
End Sub

Das Füllen des ListView-Steuerelements mit den Daten übernimmt die folgende Prozedur. Diese wird von der Prozedur Form_Load aufgerufen und liest alle Datensätze der Tabelle tblKunden in das Listenfeld ein. Fügen Sie diese Prozedur ebenfalls in das Klassenmodul Form_frmListViewDatenAendern ein (siehe Listing 1).

Private Sub ListViewFuellen(objLvwKunden As ListView)
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim objListitem As MSComctlLib.ListItem
     Set db = CurrentDb
     Set rst = db.OpenRecordset("SELECT KundeID, Firma, Kundencode FROM tblKunden", dbOpenDynaset)
     Do While Not rst.EOF
         Set objListitem = objLvwKunden.ListItems.Add(, "k" & rst!KundeID, rst!Firma)
         With objListitem
             .ListSubItems.Add , "p1" & rst!KundeID, rst!Kundencode
         End With
         rst.MoveNext
     Loop
     rst.Close
     Set rst = Nothing
     Set db = Nothing
End Sub

Listing 1: Füllen des ListView-Steuerelements mit den Daten der Tabelle tblKunden

Inhalt der ersten Spalte ändern

Wenn Sie den Inhalt der ersten Spalte des Listenfeldes ändern möchten, ist dies kein Problem – es muss lediglich die Eigenschaft LabelEdit entweder im Eigenschaften-Dialog des ListView-Steuerelements im Entwurf auf 0-lvwAutomatic einzustellen (siehe Bild 2) oder dies mit der folgenden Zeile in der Prozedur Form_Load durchzuführen:

Eigenschaft für das Verhalten beim ändern der ersten Spalte

Bild 2: Eigenschaft für das Verhalten beim ändern der ersten Spalte

.LabelEdit = lvwAutomatic

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar