Neben dem Listenfeld gibt es noch ein weiteres Steuerelement zur Anzeige von Listen: das ListView-Steuerelement. Dieses Steuerelemente ist allerdings kein in Access integriertes Steuerelement, sondern ein ActiveX-Steuerelement. Sie fügen es auf etwas anderem Wege zu einem Formular hinzu und füllen es nicht durch einfaches Zuweisen einer Datensatzherkunft, sondern per VBA. Darüber hinaus bietet es allerdings eine Reihe Möglichkeiten, die das herkömmliche Listenfeld nicht aufweist.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1207_ListView.mdb.
Eigenschaften des ListView-Steuerelements
Das ListView-Steuerelement bietet die folgenden Möglichkeiten:
- Anzeigen von Icons und Texten
- Anzeigen von Bildern
- ändern der Spaltenbreite zur Laufzeit
- Verwendung von Drag and Drop
- Manuelles ändern des Inhalts (nur erste Spalte)
- Sortierung per Mausklick
In dieser Artikelreihe sehen wir uns diese und weitere Techniken rund um das ListView-Steuerelement an.
ListView-Steuerelement anlegen
Das ListView-Steuerelement fügen Sie über den Eintrag ActiveX-Steuerelement der Liste der Steuerelemente hinzu. Dies öffnet den Dialog aus Bild 1, wo Sie den Wert Microsoft ListView Control, version 6.0 auswählen. Das ListView-Steuerelement wird zunächst recht klein angelegt (siehe Bild 2), sodass Sie dieses zunächst auf die gewünschte Größe ziehen. Vergeben Sie gleich einen Namen für das neu hinzugefügte Steuerelement. In diesem Beispiel wollen wir die Daten der Tabelle tblPersonal im ListView-Steuerelement anzeigen, also nennen wir das Steuerelement lvwPersonal.
Bild 1: Auswählen des ListView-Steuerelements
Bild 2: Ein ListView-Steuerelement direkt nach dem Hinzufügen
Handhabung des ListView-Steuerelements unter VBA
Einer der wichtigsten Unterschiede zwischen eingebauten Steuerelementen und ActiveX-Steuerelementen ist folgender: Wenn Sie unter VBA mit einem eingebauten Steuerelement arbeiten und dieses etwa mit Me!txtVorname referenzieren, können Sie über IntelliSense gleich auf alle Eigenschaften zugreifen, die für dieses Steuerelement vorgesehen sind. Bei ActiveX-Steuerelementen sieht dies etwas anders aus. Wenn Sie etwa mit Me!lvwPersonal auf das soeben angelegte ListView-Steuerelement zugreifen und dann einen Punkt eintippen, zeigt IntelliSense nur die Eigenschaften an, die alle ActiveX-Steuerelemente gemeinsam aufweisen (siehe Bild 3). Um per VBA und IntelliSense direkt auf die ListView-spezifischen Eigenschaften zuzugreifen, sind einige zusätzliche Schritte nötig. Der erste ist, dass Sie im Klassenmodul des Formulars eine Objektvariable deklarieren, die genau den Typ des ListView-Steuerelements aufweist – etwa so:
Bild 3: Standardeigenschaften von ActiveX-Steuerelementen
Dim objLvwPersonal As MSComctlLib.ListView
Diese Variable müssen Sie nun nur noch mit einem entsprechenden Verweis füllen. Das erledigen Sie direkt beim öffnen des Formulars, aber nicht in der Ereignisprozedur, die durch das Ereignis Beim öffnen ausgelöst wird, sondern im Ereignis Beim Laden. Beim öffnen ist möglicherweise zu früh, gegebenenfalls führt der Zugriff auf ein ActiveX-Steuerelement zu diesem Zeitpunkt zu Problemen. Also legen Sie eine Ereignisprozedur an, die durch das Ereignis Beim Laden des Formulars ausgelöst wird. Dieser Prozedur fügen Sie zunächst nur eine einzige Zeile hinzu, welche die Zuweisung übernimmt:
Private Sub Form_Load() Set objLvwPersonal = Me!lvwPersonal.Object End Sub
Im Gegensatz zu den eingebauten Steuerelementen, bei denen die Zuweisung einfach über einen Verweis wie Me!txtVorname erfolgt, wird der Verweis hier gezielt über die Eigenschaft Object des ActiveX-Steuerelements hinzugefügt. Danach können Sie dann per IntelliSense auf die eigentlichen Eigenschaften des ListView-Steuerelements zugreifen (siehe Bild 4).
Bild 4: Spezielle Eigenschaften des ListView-Steuerelements
Einträge zum ListView-Steuerelement hinzufügen
Nachdem dies erledigt ist, fügen Sie den ersten Eintrag zum ListView-Steuerelement hinzu – zunächst noch nicht auf Basis der Tabelle tblPersonal, sondern durch übergabe eines Literals mit dem Namen. Fügen Sie dazu die folgenden Zeilen zur obigen Prozedur hinzu:
With objLvwPersonal .ListItems.Add 1, "a1", "André Minhorst" End With
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: