Zusammenfassung
Lernen Sie das ListView-Steuerelement kennen, das einige Vorteile gegenüber dem Listenfeld hat, aber auch etwas mehr Programmieraufwand erfordert.
Techniken
ListView-Steuerelement, VBA
Voraussetzungen
Access 2000 und höher
Beispieldateien
André Minhorst, Duisburg
Wer mit Access arbeitet, vermisst manchmal sicher etwas anspruchsvollere Steuerelemente. Beispiel Listenfeld: Dort wäre es doch schön, wenn es eine einfache Möglichkeit zum Sortieren nach den enthaltenen Spalten anbieten würde oder wenn man auch Icons darin unterbringen könnte. Ab der Version 2002 kommt Office standardmäßig mit einigen zusätzlichen Steuerelementen, die Abhilfe schaffen. Ein gutes Beispiel ist das ListView-Steuerelement, das einiges kann, was das Listenfeld nicht bietet.
Die eingebauten Steuerelemente von Access haben den großen Vorteil, dass sie gut auf ihr Einsatzgebiet abgestimmt sind.
So kann man Textfelder, Kombinationsfelder, Listenfelder und andere etwa direkt an Tabellen oder Tabellenfelder binden.
Steuerelemente wie das ListView-Steuerelement sind nicht speziell auf den Einsatz mit Access ausgelegt, aber dennoch für diesen Einsatz mit Access gut geeignet.
Wenn auch beispielsweise das ListView-Steuerelement die Möglichkeit einer direkten Bindung an eine Tabelle oder Abfrage vermissen lässt, bietet es doch so viel mehr Features als das Listenfeld von Access, dass der Aufwand der programmatischen Zuweisung der anzuzeigenden Daten vertretbar erscheint.
Im Vergleich zum Listenfeld können Sie mit dem ListView zum Beispiel Folgendes erledigen:
In diesem Beitrag erwartet Sie eine Einführung in das ListView-Steuerelement. In weiteren Beiträgen erfahren Sie, wie man dieses Steuerelement mit Daten aus einer Tabelle oder Abfrage füttert (ListView-Steuerelement mit Daten füllen, Shortlink 336), Drag and Drop realisiert (Drag and Drop mit dem ListView-Steuerelement, Shortlink 334) und wie man damit Icons oder Bilder anzeigen kann (Images und Icons im ListView-Steuerelement, Shortlink 335).
Das ListView-Steuerelement fügen Sie standardmäßig mit dem Dialog ActiveX-Steuerelement einfügen hinzu, den Sie über den Menüeintrag Einfügen/ActiveX-Steuerelement… öffnen.
Wenn Sie öfter mit diesem Steuerelement arbeiten möchten, fügen Sie einfach einen entsprechenden Eintrag zur Toolbox hinzu (siehe Bild 1).
Nach dem Hinzufügen des Steuerelements geben Sie ihm direkt einen aussagekräftigen Namen wie etwa lvwPersonen.
Bild 1: Einfügen eines ListView-Steuerelements
Wie bei anderen ActiveX-Steuerelementen stellt der VBA-Editor die Eigenschaften und Methoden nicht automatisch per IntelliSense zur Verfügung. Sie müssen zunächst eine passende Objektvariable deklarieren. Damit diese im kompletten Klassenmodul des Formulars zur Verfügung steht, erfolgt die Deklaration außerhalb der Routinen:
Dim objListView As ListView
Füllen lässt sich das ListView-Steuerelement nur via VBA-Code. Zum Füllen des Steuerelements beim öffnen des Formulars eignet sich am besten das Beim Laden-Ereignis. Hier legen Sie zunächst einen Verweis auf das Steuerelement an und weisen diesen der Objektvariablen zu. Anschließend können Sie direkt das erste Element einfügen (s. Quellcode 1).
Hinweis
Wenn Sie nicht auf IntelliSense angewiesen sind, können Sie von vornherein direkt auf das Steuerelement zugreifen, anstatt eine Objektvariable mit einem Verweis auf dieses zu erstellen. Sie haben dann nicht das Problem, dass Sie entweder bei jeder Routine, die das ListView-Steuerelement verwendet, einen neuen Verweis darauf erstellen müssen, oder laufen – wenn Sie nur einmal beim öffnen des Formulars die Zuweisung zu einer Objektvariablen vornehmen – keine Gefahr, dass der Verweis einmal verloren geht. Mit Ausnahme des ersten Beispiels verweisen daher alle weiteren Listings direkt auf das Steuerelement und verwenden keine zusätzliche Objektvariable.
Quellcode 1: Erzeugen eines Verweises auf das ListView-Steuerelement und Hinzufügen eines ersten Elements
Private Sub Form_Open(Cancel As Integer) Dim objListItem As ListItem Set objListView = Me.lvwPersonen.Object With objListView Set objListItem = _ .ListItems.Add(, "a1", "André") End With End Sub
Die Elemente eines ListViews werden in der ListItems-Auflistung des Steuerelements erfasst. Mit der Add-Methode dieser Auflistung fügen Sie ein neues Element hinzu. Als Parameter dienen dabei ein Schlüssel, der mit einem Buchstaben beginnen und eindeutig sein muss, sowie der anzuzeigende Inhalt des Elements. In der Objektvariablen objListItem speichern Sie einen Verweis auf das neue Listenelement – den Grund erfahren Sie weiter unten.
Der erste Blick auf das Steuerelement samt erstem Eintrag in der Formularansicht ernüchtert: Besonders attraktiv ist das nicht geworden (siehe Bild 2).
Bild 2: Das ListView-Steuerelement im Mauerblümchen-Look
Bild 3: Eigenschaftsfenster des ListView-Steuerelements
Natürlich gibt es ausreichend Möglichkeiten, das Aussehen anzupassen – dazu jedoch später mehr. Erstmal fügen Sie dem bestehenden Element weitere Zeilen hinzu.
Und hier kommt die Objektvariable objListItem mit dem Verweis auf das erste Element zum Einsatz: Das ListView-Steuerelement ist nämlich nicht wie beispielsweise das Listenfeld aufgebaut, bei dem jeder Eintrag aus mehreren gleich zu behandelnden Spalten besteht.
Beim ListView-Steuerelement entspricht eine Zeile einem ListItem-Objekt, das selbst nur den Wert für die erste Spalte speichert.
Der Inhalt weiterer Spalten wird in Elementen der ListSubItems-Auflistung des Listenelements verwaltet.
Daher benötigen Sie auch einen Verweis auf das Listenelement, um weitere Spalten hinzuzufügen. Die folgende Anweisung fügt eine zweite Spalte hinzu (in einer Zeile):
objListItem.ListSubItems.Add , , "Minhorst"
Im Vergleich zu den “Hauptlistenelementen” benötigt ein ListSubItem nur die Angabe des enthaltenen Textes. Die anderen Parameter kann man zunächst außer Acht lassen.
Möchte man sich nun den neuen Eintrag in der Formularansicht ansehen, wird man enttäuscht: Das ListView-Steuerelement zeigt nach wie vor nur eine einzige Spalte an.
Nun wird es Zeit, sich um die Eigenschaften des ListView-Steuerelements zu kümmern.
ActiveX-Steuerelemente haben meist ein zusätzliches Eigenschaftsfenster, das sich über das Kontextmenü öffnen lässt. Beim ListView-Steuerelement sieht das wie in Bild 3 aus.
Hier ändern Sie den Wert der Eigenschaft View auf 0-lvwReport, damit die Daten wie etwa in der Dateiliste des Windows Explorers angezeigt werden. In der Formularansicht zeigt das ListView-Steuerelement nun gar keine Daten mehr an.
Der Grund ist, dass auf der Registerseite Spaltenköpfe noch keine Spalten angelegt sind (siehe Bild 4).
Bild 4: Ein frisch eingefügtes ListView-Steuerelement zeigt nur die Basisspalte an. Weitere Spalten muss man erst sichtbar machen.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo