ListBox Deluxe

Zusammenfassung

Lernen Sie ein Steuerelement kennen, mit dem Sie beispielsweise das Beziehungen-Fenster nachbauen können.

Techniken

FieldList-Steuerelement, VBA, Formulare

Voraussetzungen

Access 2000 und höher

Beispieldateien

FieldListDemo2000.zip (Access 2000 und höher)

Sascha Trowitzsch, Berlin

Ein Handicap für den Entwickler bei der Gestaltung der Benutzeroberfläche von Datenbanken ist die etwas limitierte Zahl von Steuerelementen, die Access mitbringt. Zudem ist auch die Zahl der Eigenschaften dieser Steuerelemente, von den Möglichkeiten der Datenbindung abgesehen, nicht gerade weltbewegend. Andere “richtige” Entwicklungsumgebungen wie Visual Studio, Delphi etc. bieten da einen weitaus größeren Fundus. Abhilfe schaffen da nur zusätzliche ActiveX-Controls, die, soweit sie in guter Qualität vorliegen, meist kostenpflichtig erworben werden müssen und das Problem mit der Weitergabe dieser OCXe mit sich bringen. Access im Unternehmen zeigt, dass diesbezüglich mehr in Access steckt, als man denkt.

In einer normalen Access-Installation sind bereits einige ActiveX-Steuerelemente enthalten, die Microsoft wenig oder gar nicht dokumentiert hat. Neben den Elementen der Microsoft Forms Library (fm20.dll) sind ab Office XP auch die Microsoft Common Controls mit im Boot, die zum Beispiel Treeview- und ListView-Control beherbergen.

Besonders gut versteckt hat Microsoft aber das FieldList-Steuerelement, das sich in der Datei accwiz.dll verbirgt und von den internen Assistenten verwendet wird. Ein Beispiel ist der Dialog des Dokumentierers, den Sie über den Menüpunkt Extras/Analyse/Dokumentierer öffnen. Auch eine Ansicht wie das Beziehungen-Fenster einer Access-Datenbank lässt sich mit diesem Steuerelement nachbilden.

Zum FieldList-Steuerelement gibt es weder eine Dokumentation von Microsoft noch andere Beschreibungen im Internet – mit der Ausnahme einer Beispieldatenbank von Stephen Lebans (http://www.lebans.com/vb_listbox.htm).

In diesem Artikel lernen Sie dieses Steuerelement und seine Möglichkeiten kennen. Die Eigenschaften, Methoden und Parameter des Steuerelements sind experimentell ermittelt worden. Dieser Beitrag kann nicht die komplette Beschreibung dieses Steuerelements liefern; aus der Beispieldatenbank FieldList.mdb geht jedoch alles Weitere hervor.

Die Datei accwiz.dll wird bei jeder Access-Installation seit Version 97 automatisch im Office-Verzeichnis gespeichert. Das gilt ebenso für Runtime-Installationen.

Das darin unter anderem enthaltene FieldList-Steuerelement steht somit unter Access grundsätzlich zur Verfügung, ohne dass zusätzliche Komponenten installiert werden müssten.

Das FieldList-Steuerelement stellt komplexe Listenfelder bereit, die in Erscheinung und Funktion recht flexibel sind und Drag and Drop-Operationen ermöglichen.

Steuerelement öffentlich machen

Um ein ActiveX-Steuerelement in ein Access-Formular einzufügen, bedient man sich des Menüs Einfügen/ActiveX-Steuerelement… und wählt das entsprechende Steuerelement aus. Standardmäßig findet man in der Liste des Dialogs aber keinen Eintrag namens FieldList. Microsoft hat es, aus welchen Gründen auch immer, versteckt. Mit einem kleinen Eintrag in der Registry kann man das aber ändern: Doppelklicken Sie die auf der Heft-CD befindliche Datei accwiz.reg und fügen Sie so ein Branding des Controls als verfügbares Steuerelement hinzu. Danach finden Sie das Steuerelement in der Liste der ActiveX-Steuerelemente unter dem Eintrag FieldListCtrl.1 Object.

Funktionen des FieldList-Steuerelements

In ein Formular eingefügt sieht man außer einer grauen Fläche erstmal gar nichts von dem Steuerelement. Diese Fläche ist nur ein Container für darauf zu platzierende Listboxen.

Das Steuerelement kann nämlich eine beliebige Zahl von Listboxen auf dieser Containerfläche erzeugen; diese lassen sich ja nach den Anforderungen auch auf der Containerfläche verschieben.

Bedauerlicherweise geschieht das ausschließlich über VBA-Code; das Anklicken des von ActiveX-Steuerelementen bekannten Buttons mit den Pünktchen im Eintrag Benutzerdefiniert des Eigenschaftsfensters fördert nur eine Fehlermeldung zutage – das Steuerelement enthält keine Property Pages für weitere Einstellungen.

Im überblick zunächst einige der Möglichkeiten des Controls:

  • Anzeige mehrerer Listboxen.
  • Zwischen den Listboxen können Zeilen per Drag and Drop verschoben werden (allerdings unter Zuhilfenahme von etwas VBA-Code).
  • Die erzeugten Listboxen können auf der Containerfläche frei mit der Maus verschoben werden. Alternativ kann man sie aber auch mit der Einstellung einer Eigenschaft “festsetzen”.
  • Die Größe der Listboxen kann mit der Maus beliebig verändert werden, genau so, wie das mit anderen Windows-Fenstern möglich ist.
  • Zwischen den einzelnen Listboxen beziehungsweise deren Einträgen können beliebig viele Verbindungslinien gezogen werden. Sie kennen das aus dem Beziehungsfenster von Access oder dem Abfrageneditor.
  • Die Listboxen kennen drei Darstellungsmodi (siehe Abbildungen weiter unten).
  • Die Einträge werden bei Bedarf auf mehrere Spalten umgebrochen.
  • Die Einträge der Listboxen können Checkboxen und benutzerdefinierte Icons enthalten.
  • Es gibt diverse Einstellungen für die Listboxen, die Aussehen, Hintergrundfarbe, Schrift verändern können.
  • Einige Eigenschaften der Schrift können für die Zeilen einer Listbox einzeln festgelegt werden (normal, fett, kursiv).
  • Was nicht möglich ist:

  • Die Schriftart ist nicht variabel. Es ist offenbar MS Sans Serif in 8-Punkt-Größe fest eingestellt.
  • Eine Listbox kann im Gegensatz zur Access-Listbox nur eine Spalte darstellen.
  • Das Steuerelement speichert seine eingestellten Eigenschaften nicht beständig ab. Das heißt, dass dies gegebenenfalls per Code zu erledigen ist.
  • Erscheinungsbild des Steuerelements

    Um eine Vorstellung zu bekommen, wie das Steuerelement aussehen kann, schauen Sie sich Abb. 1, Bild 2 und Abb. 3 an.

    Bild 1: Das FieldList-Steuerelement mit nackten Einträgen, mit Symbolen, mit Kontrollkästchen und mit beidem

    Bild 2: Die obigen Varianten gibt es auch ohne Titelleiste und sogar ohne Rahmen.

    Bild 3: Weitere Varianten des FieldList-Steuerelements

    Besonders interessant ist die Möglichkeit, Benutzeroberflächen im Stil des Beziehungen-Fensters von Access nachzubauen. Eine Spielwiese zum Ausprobieren der unterschiedlichen Einstellungen liefert das Formular frmFieldList (siehe Bild 4).

    Wie dort gut zu erkennen ist, lassen sich mehrere Listboxen auf der Fläche des Steuerelements positionieren. Außerdem ist das Verbinden verschiedener Einträge wie im Beziehungen-Fenster möglich.

    Es fehlt noch die Darstellung der verschiedenen Cursorformen, die das FieldList-Steuerelement anzeigen kann. Sie sind vor allem für Drag and Drop-Operationen nützlich, weil sie in etwa den Cursors entsprechen, die auch beim Ziehen von Feldern im Abfrageeditor erscheinen.

    Wie Sie diese Ansichten des Steuerelements erzeugen können, erfahren Sie teilweise im nächsten Abschnitt. Die vollständige Dokumentation finden Sie in der Beispieldatenbank FieldList.mdb und dort im kommentierten Code des Formulars frmFieldList.

    Das Objektmodell des FieldList-Steuerelements

    Vorbemerkung: Wenn Sie beabsichtigen, Ihre Datenbank mit enthaltenem FieldList-Steuerelement auch auf anderen Rechnern einzusetzen, dann sollten Sie beim Entwickeln möglichst dieselbe Office-Version verwenden.

    Das Steuerelement ist zwar seit Access 97 weitgehend unverändert geblieben, hat aber unter Access 2003 die Versions-ID 8.1, davor war es immer die 8.0. Eine mit Access 2000 erstellte Datenbank zeigt deshalb unter Umständen das Steuerelement auf einem System mit Access 2003 nicht korrekt an.

    Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

    TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

    Schreibe einen Kommentar