Vertikale Menüleisten

Switchboards oder Menü- und Symbolleisten und nun auch Ribbons sind die gebräuchlichen Mittel zur Navigation in Datenbankanwendungen. Switchboards sind nicht sonderlich übersichtlich, weil sie immer wieder von Formularen oder Berichten überlagert werden. Menüleisten wiederum haben einen kleinen Nachteil: Sie dehnen sich horizontal aus und nehmen damit in der Vertikalen Raum ein, der ergonomischer etwa für die Anzeige einer zusätzlichen Reihe Datensätze verwendet werden könnte. Auf Webseiten hingegen dürfte ein seitliches Menü die häufigste Navigationsmethode sein. Ist das, was dort möglich ist, nicht auch unter Access machbar

Menü zur Seite

Es ist etwas paradox: Der für die eigentlichen Inhalte zur Verfügung stehende Raum wird immer kleiner. Nehmen wir etwa ein aktuelles Notebook mit der üblichen Bildschirmauflösung von 1280 x 800 Pixel und ein installiertes Office 2007.

Das Ribbon nimmt, wenn die Schnellstartleiste unten angedockt ist, bereits 170 Pixel Höhe ein. Ist für Formulare und Tabellen die Registerkartenansicht aktiviert – plus 20 Pixel für die Reiter – und soll auch die Statusleiste (22 Pixel) angezeigt werden, dann bleibt für die Datenblattanzeige abzüglich ihrer Navigationsleiste (22 Pixel) und der meist unten angedockten Taskleiste (26 Pixel) gerade noch eine Höhe von 540 Pixel vertikal übrig. Das steht im Gegensatz zur Tatsache, dass sich Tabellen und Listen eher vertikal ausdehnen als horizontal. Man hat also vergleichsweise wenige Datensätze im Blick.

Auch, wenn eine Menüleiste an sich eine geringe Höhe aufweist, ist zu fragen, warum man ein Menü nicht genau so gut seitlich anbringen könnte, wie das in anderen Anwendungen, etwa in Outlook oder im Internet, ja auch praktiziert wird.

Für diesen Zweck existieren tatsächlich spezielle ActiveX-Steuerelemente namens “Outlook-Bars”, die aber den Nachteil haben, dass sie als Container ein Formular benötigen, das dauernd im Hintergrund geöffnet sein muss.

Es lässt sich jedoch auch mit Access-Bordmitteln durchaus ein brauchbares Seitenmenü realisieren – denn Menü- und Symbolleisten lassen sich schließlich auch seitlich und vertikal andocken.

Für diesen Beitrag lassen wir Access 2007 außen vor und beschränken uns auf die früheren Versio-nen, die noch andockbare Menüleisten unterstützen. Eine analoge Lösung für Access 2007 wäre das Erstellen eines benutzerdefinierten Taskpanes (siehe Beitrag Custom Task Panes mit VB6, Shortlink 528).

Vertikale Menüleisten

Wer eine der Standardmenü- oder Symbolleisten seitlich im Access-Rahmenfenster andockt, ist ernüchtert. Denn auch die Schaltflächen und ihre Beschriftungen erscheinen dann vertikal ausgerichtet und wer nicht dauernd den Kopf verrenken möchte, dem bringt das wenig. Über den “Anpassen”-Dialog der Menüleisten kann man die Schaltflächen jedenfalls nicht dazu bewegen, sich anders auszurichten. Das ist unverständlich, denn Microsoft hat durchaus eine Einstellung vorgesehen, mit der die 90°-Drehung vollzogen werden kann. Nur lässt sich die ausschließlich per VBA vornehmen.

Inspiziert man die Möglichkeiten eines CommandbarButton-Objekts, also einer Menüschaltfläche, im Objektkatalog (Microsoft Office-Library), dann trifft man auf die Eigenschaft Style.

Diese kann den Wert einer der vordefinierten msoButtonStyle-Konstanten annehmen. Setzt man Style auf msoButtonWrapCaption, dann dreht sich die Schaltfläche und wird zu einem brauchbaren Steuerelement. Testen Sie selbst:

Ziehen Sie die Datenbank-Symbolleiste von Access mit der Maus oben ab und docken Sie sie links am Rand von Access wieder an. Setzen Sie danach diese Anweisung im VBA-Direktfenster ab:

Commandbars("Database").Controls(1).Style = msoButtonWrapCaption

Der Menüeintrag für Neu… hat sich damit gedreht. Interessant ist nun, dass sich die Breite der Symbolleiste automatisch der Breite einer Beschriftung anpasst:

Commandbars("Database").Controls(1).Caption = _
"Neue_Datenbank_anlegen..."

Setzte man statt der Unterstriche Leerzeichen in die Beschriftung, dann würde der Text umbro-chen. Access legt grundsätzlich für jedes Leerzeichen in Schaltflächenbeschriftungen einen Umbruch an.

Das geht so weit, dass eine Schaltfläche, deren Beschriftung nur aus drei Leerzeichen besteht, dreimal so hoch wird wie üblich. Man kann das vermeiden, indem man statt der “korrekten” Leerzeichen mit dem Ordinalwert 32 gesperrte Leerzeichen mit dem Wert 160 verwendet:

Set oCmd = Commandbars("Database").Controls(1). _
Caption = Replace("Neue Datenbank anlegen", _
" ", Chr(160))

Wenn die Schaltfläche sich nun durch die längere Beschriftung verbreitert, dann müsste sich folge-richtig auch ihre Eigenschaft Width verändert haben – denkt man. Tatsächlich beträgt sie nun 136 statt 37 Pixel:

Debug.Print oCmd.Width

Der Versuch, die Schaltfläche über diese Eigenschaft weiter zu verbreitern, führt indessen zu einem irritierenden Ergebnis:

oCmd.Width = 150

Sie wird nun nicht breiter, sondern höher! Verändert man hingegen die Höhe mit

oCmd.Height = 150

dann wird sie nicht höher, sondern breiter. Es scheint, dass sich durch die Drehung der Schaltfläche über die Style-Eigenschaft die Koordinaten vertauscht haben.

Merkwürdigerweise gibt die Abfrage von Width und Height nun aber durchaus die korrekten Ausmaße wieder. Lesen und Setzen der Eigenschaften Width und Height unterscheiden sich demnach.

Was man sich hierbei lediglich merken sollte: Die Breite einer Schaltfläche und damit der vertikalen Menüleiste insgesamt lässt sich mit der Eigenschaft Height verändern. Und das ist auch schon der einzige Weg, um die Breite der Leiste zu setzen, denn die Anweisung

Commandbars("Database").Width = 150

führt zu einem Automatisierungsfehler – die Menüleiste bleibt hinsichtlich der Breite hartnäckig dynamisch an deren Elemente angepasst.

Wer zusätzlich zum Text der Schaltflächen auch noch Symbole anzeigen will, der kann die Style-Eigenschaft auf msoButtonIconAndWrapCaption stellen, wird dann aber möglicherweise enttäuscht sein, denn die Bildchen zeigen sich nun grundsätzlich zentriert über der Beschriftung, was nicht gut aussieht und außerdem die Schaltfläche doppelt so hoch macht. Es gibt keine Style-Konstante, die dem abhelfen könnte. Wir beschränken uns daher im Folgenden auf reine Textmenüs.

Bevor es an die Erstellung der kompletten Leiste geht, soll noch die Frage geklärt werden, ob auch Untermenüsteuerelemente eingesetzt werden können.

Das ist jedoch schnell beantwortet: Nein. Ein Untermenü entspricht dem Objekt CommandbarPopup, welches keine Style-Eigenschaft kennt.

Deshalb bliebe es immer vertikal ausgerichtet und passt nicht mehr ins Bild. Wie man dennoch verschachtelte Menüs erzeugen kann, dazu gibt es später Lösungsangebote.

Nebenbei: Sollten Sie mit den bisherigen Code-Anweisungen Ihre Datenbank-Symbolleiste optisch verhunzt haben, dann ziehen Sie sie wieder in die frühere horizontale Position, gehen auf Anpassen und aktivieren für die fraglichen Steuerelemente den Kontextmenüeintrag Schaltflächensymbol zurücksetzen. Das sollte auch Breite und Höhe der Buttons wieder in die alte Form bringen.

Nordwind extended

Damit Sie sich schon mal ein Bild davon machen können, wie die Menüleiste letztendlich aussehen soll, finden Sie einen Screenshot in Bild 1. Es handelt sich um die originale Nordwind-Datenbank, welche um die Sidebar-Navigation erweitert wurde und auf der Heft-CD unter dem Namen de-mo_navibar.mdb zu finden ist. Nordwind-Formulare und -Berichte lassen sich komplett über die neue vertikale Menüleiste aufrufen.

nordwind.tif

Bild 1: Die Nordwind-Datenbank mit neuer Benutzerführung in Gestalt einer vertikalen Menüleiste

Schauen wir uns die grundlegenden Features der Menüführung an.

Zunächst sind alle Standardmenü- und Symbolleisten ausgeblendet. Dadurch bleibt zusätzlicher vertikaler Platz für maximierte Formulare und Berichte. Ganz unten jedoch gibt es eine zusätzliche Leiste, die lediglich eine Schaltfläche Schließen beherbergt.

Diese wird aktiv, sobald ein Formular oder Bericht geöffnet ist. Die Schließen-Schaltfläche macht dann auch das, was sie verheißt, und schließt jegliches offene Objekt. Damit spart man sich entsprechende Schaltflächen in den einzelnen Formularen ein.

Über den Anpassen-Dialog finden Sie drei neue Leisten in der Datenbank, wovon eine, die NavibarSub, ausgeblendet oder noch gar nicht vorhanden ist (siehe Bild 2). Ihre Bedeutung wird später erläutert.

navibars.tif

Abb.3: Einstellungen der benutzerdefinierten Leisten

Alle Leisten sind so eingestellt, dass sie sich vom Benutzer nicht ändern lassen (siehe Bild 3).

barsettings.tif

Bild 4: Die fertige Hauptmenüleiste der Anwendung

Im Auslieferungszustand enthält die Hauptmenüleiste noch keine Steuerelemente, denn diese werden als temporäre Objekte erst nach dem Start der Anwendung über das AutoExec-Makro dynamisch angelegt, und zwar gesteuert über die Tabelle tbl_Navibar.

Die Hauptmenüleiste (siehe Bild 4) zeigt einige bunte Schaltflächen, die den Eindruck aufkommen lassen, dass hier mit unterschiedlichen Farbzuweisungen gearbeitet wurde. Tatsächlich gibt es in dieser Hinsicht aber keinerlei Anpassungsmöglichkeiten für Menüs.

arrowbutton.tif

Bild 5:

Die Farben, die übrigens nur unter Office 2003 so aussehen und in Office 2000 in reinem Grau erstrahlen, kommen durch einen Trick zustande: Die Enabled-Eigenschaft der CommandbarButtons wirkt sich auf die Schriftfarbe aus und wird bei False ausgegraut dargestellt.

Wird der Status der Schaltfläche über die Eigenschaft State jedoch zusätzlich auf msoButtonDown gestellt, also gedrückt, dann wechselt die Oberflächenfarbe in Orange.

Über diese Farben haben Sie die Möglichkeit, quasi Labels als Überschriften zu logischen Anweisungsblöcken anzulegen – die deaktivierten Schaltflächen können ja nicht angeklickt werden.

Um die einzelnen Schaltflächen besser von einander abzusetzen, haben sie außerdem alle die Eigenschaft BeginGroup = True – “Gruppierung beginnen” -, was die Unterteilungslinien zwischen Steuerelementen anzeigt.

Handicap: Wenn Sie eine solche Menüleiste anlegen, dann hat sie leider für unseren Zweck einen Makel, weil ab Office XP an ihrem unteren Rand ein Pfeil sichtbar ist, der auf Klick die Möglichkeit zum Schaltflächen hinzufügen oder entfernen anbietet (siehe Bild 5).

menucontrols.tif

Bild 2: Die drei benutzerdefinierten Menüleisten für die Navigation in Nordwind Extended

Diese Möglichkeit, unsere Navigationsleiste zu verunstalten, soll dem Benutzer jedoch vorenthalten werden. Doch leider gibt es keine Methode über das Objektmodell von Office auf das Pfeilchen einzuwirken. In die Demodatenbank ist deshalb eine Gewaltlösung eingebaut, die den unteren Rand der Leiste per API unsichtbar macht. Dazu später mehr.

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