Das ListView-Steuerelement

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

ListView.mdb, MSCOMCTL.msi

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:

  • per Mausklick nach einzelnen Spalten sortieren,
  • Icons anzeigen,
  • Bilder anzeigen,
  • umfangreiche Anpassungen am Aussehen vornehmen,
  • die Spaltenbreite manuell zur Laufzeit verändern,
  • Drag and Drop verwenden
  • und (zumindest) den Inhalt der ersten Spalte manuell ändern.
  • 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

    Schreibe einen Kommentar