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:
Was nicht möglich 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.
Die erste Informationsquelle, wenn man es mit einer fremden ActiveX-Datei zu tun hat, ist der Objektkatalog. Aus ihm kann man die Klassen, Eigenschaften, Methoden und Ereignisse der Objekte erfahren. Haben Sie ein FieldList-Steuerelement in ein Formular eingefügt, so findet sich automatisch die zugehörige Bibliothek AccWizObjects im Objektkatalog. Außerdem wurde ein Verweis auf die Microsoft Access Wizzard Control Library gesetzt.
Auf den ersten Blick scheint das Objektmodell dieser Bibliothek recht spartanisch ausgestattet. Das liegt daran, dass die meisten Objekte ausgeblendet sind. Rechtsklicken Sie also irgendwo in den Objektkatalog und aktivieren Sie den Eintrag Verborgene Elemente anzeigen des Kontextmenüs; schon füllt sich die Liste der Klassen mit vielen neuen Elementen.
Bild 4: Beispielformular zum Experimentieren mit den Möglichkeiten des FieldList-Steuerelements
Für das FieldList-Steuerelement sind nur die folgenden Klassen von Bedeutung:
Das FieldList-Objekt steuert eigentlich nur zwei wesentliche Eigenschaften: Die Bildliste (Picture) für die Icons der Listboxen und das Erscheinungsbild des Cursors (SetCursor). Ob Scrollbars für die Containerfläche angezeigt werden, lässt sich im Eigenschaftsfenster des Formulars festlegen, nicht aber per Code.
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