Listenfeldbeschriftung per Assistent

André Minhorst, Duisburg

Die Beschriftung von Listenfeldern ist erforderlich, sobald die Anzahl der angezeigten Felder größer als eins ist. Um ein solches Feld zu beschriften, gibt es zwei Möglichkeiten: Entweder Sie verwenden die eingebaute Funktion zur Anzeige von überschriften oder Sie legen selbst Hand an und erstellen entsprechende Bezeichnungsfelder oberhalb des Listenfeldes. In welchen Fällen dies erforderlich ist und wie Sie sich die Arbeit auf Dauer durch Verwendung eines Assistenten wesentlich vereinfachen können, zeigt Ihnen der vorliegende Beitrag.

Die Beschriftung eines Listenfeldes kann auf zwei Arten erfolgen. Das Listenfeld selbst enthält die Eigenschaft Spaltenüberschriften. Wenn Sie ihren Wert auf Ja setzen, fügt Access dem Listenfeld eine Zeile mit überschriften hinzu (s. Abb. 1). Dabei verwendet Access die Feldnamen bzw. eventuell vorhandene Alias-Namen aus der Datensatzherkunft des Listenfeldes.

Abb. 1: Listenfeld mit eingebauten überschriften

Die zweite Möglichkeit ist die Platzierung eigener überschriften oberhalb des Listenfeldes (s. Abb. 2). Die Methode ist z. B. sinnvoll, wenn die Formatierung der überschriften des Listenfeldes dem Design der übrigen Steuerelemente entsprechen soll.

Wenn Sie schon einmal Formulare mit vielen Steuerelementen optisch aufbereitet haben, wissen Sie, dass dies eine recht mühselige Arbeit sein kann. Die manuelle Beschriftung von Listenfeldern ist da keine Ausnahme, ganz im Gegenteil: Die überschriften müssen genau an die in der Eigenschaft Spaltenbreiten angegebenen Maße angepasst werden. Und ob Sie nun die entsprechenden Maße für die Eigenschaften Links und Breite der einzelnen Bezeichnungsfelder eintragen oder die Bezeichnungsfelder nach Augenmaß positionieren: spätestens nach dem Hinzufügen einer Spalte zum Listenfeld ist die ganze Arbeit für die Katz.

Abb. 2: Listenfeld mit manuell erstellten überschriften

Wesentlich angenehmer wäre die Aufgabe, wenn sie mit wenigen Knopfdrücken zu erledigen wäre. Und da Sie im Beitrag Assistenten und Add-Ins mit Access in der vorliegenden Ausgabe von Access im Unternehmen ohnehin nachlesen können, wie Sie einen Assistenten in Access integrieren, erstellen Sie sich einen eigenen Assistenten zum Beschriften von Listenfeldern.

Hinweis

Den fertigen Listenfeldbeschrifter finden Sie auf der Heft-CD unter den Dateinamen Listenfeldbeschrifter97.mda und Listenfeldbeschrifter2000.mda.

Wenn Sie einen Assistenten selbst programmieren, können Sie auch selbst seinen Funktionsumfang bestimmen. Das ist der große Vorteil gegenüber fertigen Assistenten und Add-Ins, die entweder so viele Funktionen haben, dass Sie den überblick verlieren, oder die entscheidenden Funktionen vermissen lassen.

Genauso ist es beim Funktionsumfang des Assistenten, der im Rahmen des vorliegenden Beitrags vorgestellt wird: Er wird möglicherweise nicht hundertprozentig Ihren Wünschen entsprechen, aber Sie können ja ohne weiteres Funktionen hinzufügen oder überflüssige entfernen.

Die als Beispieldatenbank auf der Heft-CD befindliche Add-In-Datenbank enthält die folgenden Funktionen:

  • Auswahl des gewünschten Formulars und Listenfeldes
  • Auswahl von Schriftgröße, -farbe, -format
  • Abb. 3: Benutzeroberfläche des Listenfeldbeschrifter-Dialogs

  • Auswahl von Hintergrundfarbe und -art
  • Auswahl der Rahmenfarbe und -art
  • wahlweise übernahme oder Anpassung des Feldnamens, der als überschrift dienen soll
  • automatische überprüfung, ob die Zeichenkette zu lang für die Spaltenbreite ist
  • Der hier vorgestellte Assistent besteht im Wesentlichen aus einem Formular, das als Dialog zur Einstellung der gewünschten Eigenschaften der Listenfeldbeschriftungen dient (s. Abb. 3). Sie können den Assistenten nach der Fertigstellung und Registrierung über den Eintrag Extras/Add-Ins/Listenfeldbeschrifter aktivieren.

    Der obere Bereich des Assistenten enthält eine Beispielbeschriftung zur Vorschau auf die aktuellen Einstellungen. Die beiden Kombinationsfelder dienen zur Auswahl des Formulars und des Listenfeldes. Alle anderen Steuerelemente dienen zur Einstellung der verschiedenen Eigenschaften.

    Dabei verwendet der Assistent – soweit möglich – vom System zur Verfügung gestellte Dialogfenster. Das ist bei der Auswahl der Schriftart und bei der Rahmen- und der Hintergrundfarbe der Fall.

    Nach dem Festlegen der Einstellungen und einem Mausklick auf die Schaltfläche Fertig stellen erfolgt die Erstellung der Bezeichnungsfelder. Der Assistent verwendet die Namen oder – falls vorhanden – die Alias-Namen der Felder der Datensatzherkunft des Listenfeldes.

    Der Assistent zeigt für jede überschrift eine Inputbox zur übernahme oder zur Anpassung der überschrift an. Nach der übernahme der überschrift überprüft der Assistent, ob die Breite des zu erstellenden Bezeichnungsfeldes größer als die Breite der entsprechenden Spalte des Listenfeldes ist, und fragt ggf. nach einer kürzeren überschrift.

    In den folgenden Abschnitten erfahren Sie, wie Sie das Formular mit den Steuerelementen zur Festlegung der Eigenschaften der Listenfeldbeschriftungen erstellen und welche Funktionalität sich dahinter verbirgt.

    Hinweis

    Der Quellcode ist aufgrund seines Umfangs teilweise verkürzt dargestellt. Die ungekürzte Version des Quellcodes finden Sie in den entsprechenden Datenbanken auf der beiliegenden Heft-CD.

    Das FormularfrmListenfeldbeschrifter

    Neben einigen VBA-Modulen ist das Formular frmListenfeldbeschrifter das einzige Objekt der Datenbank (s. Abb. 4).

    Abb. 4: Das Formular frmListenfeldBeschriften in der Entwurfsansicht

    Anzeige einer Beispielbeschriftung

    Das Bezeichnungsfeld lblBeschriftung bietet dem Anwender eine Vorschau einer überschrift mit den aktuellen Einstellungen.

    Auswahl des Formulars

    Das Kombinationsfeld cboFormular soll alle Formulare der Datenbank anzeigen, die den Assistenten aufruft.

    Normalerweise können Sie als Datenherkunft des Kombinationsfeldes einfach eine auf der Tabelle MSysObjects basierende Abfrage verwenden. Die Tabelle MSysObjects enthält alle Objekte einer Access-Datenbank. Wenn das Feld Type dieser Tabelle den Wert -32768 hat, handelt es sich bei dem Objekt um ein Formular.

    Hier ruft allerdings eine Datenbank (die Datenbank mit dem anzupassenden Listenfeld) eine Funktion einer anderen Datenbank (der Add-In-Datenbank) auf. Wenn im Klassenmodul des Formulars frmListenfeldbeschrifter der Add-In-Datenbank nun eine auf einer Systemtabelle basierende Abfrage ausgeführt wird, bezieht sich diese Abfrage logischerweise auf die Tabelle MSysObjects der Add-In-Datenbank.

    Das können Sie umgehen, indem Sie das Kombinationsfeld per Code füllen. Dazu stellen Sie zunächst die Eigenschaft Herkunftstyp auf Wertliste ein. Den Rest übernimmt die Prozedur aus Quellcode 1, die beim öffnen des Formulars frmListenfeldbeschriftung aufgerufen wird.

    Interessant ist in diesem Fall der erste Teil bis zur Zuweisung der Wertliste an die Eigenschaft RowSource des Kombinationsfeldes. Die Prozedur verwendet die CurrentDB-Funktion, um die aktuell im Datenbankfenster angezeigte Datenbank zu ermitteln, und füllt anschließend das Recordset rst mit den Namen aller Formulare dieser Datenbank. In einer Do While-Schleife durchläuft die Prozedur alle Einträge und setzt einen String zusammen, der eine Liste der durch Semikola getrennten Formularnamen der Datenbank enthält.

    Praxis-Tipp

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

    Workplace

    Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar