Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Eine Datenbank mit Access 2013 richtig entwickeln

Menüeinträge erzeugen

Testen Sie unsere 2021 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit einer Prozedur lassen sich die Informationen zu einem Menüeintrag komprimiert erzeugen, so dass sich schnell viele Zeilen schreiben lassen.

Transkript

Die grundsätzliche Funktionsfähigkeit des Menüs ist gezeigt. Es kann, besser gesagt es könnte ein Bild anzeigen, hat einen Text, keine Description, das würde hier darunterstehen, und noch keine Untermenüs. Und erzeugt wird es mit einer relativ einfachen Struktur im Moment. Das heißt, in einer XML-String-Variablen im Grunde wird dieser Code hineingeschrieben. Der ist extrem einfach im Moment. Und diese Zeile wird häufiger auftauchen. Es wird noch erweitert werden, nicht nur die ID, mit einer fortlaufenden Nummer, und einem Label, sondern auch eine sogenannte Description. Das ist der Untertitel sozusagen. Damit das alles funktioniert, habe ich hier schon ein paar Prozeduren und Funktionen vorbereitet, unter anderem hier ein paar neue Variablen, eine modulöffentliche Variable für die Menü-ID, die hier schonmal auf null gesetzt wird, damit ich für jeden Aufruf eines Menüeintrags die Nummer hochzählen kann. Die muss nur eindeutig sein, mehr nicht. Deswegen reicht das Durchnummerieren. Und außerdem soll das Hauptmenü jeweils ein Bild haben, welches dann im Untermenü wiederholt wird. Damit das nicht dort jedesmal angegeben werden muss, gibt es jeweils eine String-Variable, in der das Hauptmenü den Bildnamen speichert, und das Untermenü kann ihn dann aufrufen. Statt dieser Zeile brauchen wir also eine per Prozedur erzeugte, damit es nicht so mühsam wird. Und die entsprechenden Prozeduren stehen hier schon drin. Es gibt eine Prozedur "HauptMenueStart", die sowohl das Label, nämlich den eigentlichen Text, wissen möchte, die Description und den Namen des Bildes. Dann wird automatisch erstmal die ID, die Menü-ID hochgezählt, und dann diese Zeile zusammengebastelt. Wie oben schon zu sehen ist, die ID mit einer automatischen Nummer. Die wird automatisch hier auch weitergezählt. Das Label jeweils mit verdoppelten Gänsefüßchen, weil das ja innerhalb einer Zeichenkette ist. Das Label ist der Text. Die Description wird entsprechend übergeben, und das Bild, nämlich der Bildname, an diese modulöffentliche Variable, verkettet mit einem Kaufmanns-Und, damit da nicht versehentlich irgendein Null-Wert drinsteht. Und diese modulöffentliche Variable wird dann geprüft, ob überhaupt ein Bildname übergeben wurde, und wenn ja, wird an den XML-Code auch das entsprechend mit dem Image-Attribut drangehängt. "itemSize" "normal" sagt eigentlich nur, dass die untergeordneten Menüs klein, nämlich nicht in fünffacher Höhe, sondern nur in Einzeilen-Höhe sind. Und dann geht die spitze Klammer zu. Dieses "vbCrLf", der Zeilenumbruch, ist nur dafür da, dass Sie beim "Debug.Print", wenn das nämlich aktiviert wird, hier das vernünftig lesen können. Ansonsten kann man das auch weglassen. Ein XML-String darf in einer Zeile hintereinander weg kommen. "HauptMenueStart" erzeugt also die erste Zeile, wo "Menü" und die ganzen Sachen drinstehen. Und dann gibt es noch das Gegenstück, "HauptMenueEnde", wo das Ende-Tag drinsteht. Ich kann jetzt also hier oben entsprechend ergänzen. Da mache ich mal eine Abstandszeile. "strxml" ist wie "strxml" verkettet mit, und jetzt rufe ich einfach "HauptMenueStart" auf, und übergebe die Parameter. Der erste Parameter ist direkt eine meiner Konstanten, nämlich der Name der Application. Das steht dann also "Rank&Schlank" drin. Und das zweite ist ein bisschen Erläuterung. Da steht "Allgemeine Aktionen zur Datenbank". Das ist ja die Description, also ein ausführlicher Text. Und als drittes ist gefordert das Bild, das haben wir schon eingesetzt. Das ist das "icnRS32.gif". Und danach muss ich natürlich, das kann man hier sogar kopieren, das Hauptmenü zumachen, auch wenn dazwischen noch keine Eintragungen sind, also "HauptMenueEnde". Die Eintragungen, ich lasse da schonmal ein bisschen Luft, kommen dazwischen. Das wäre alles super soweit, wenn nicht leider in dieser Konstanten ein Kaufmanns-Und drinstecken würde. Ein Kaufmanns-Und ist immer ärgerlich. Ich habe es trotzdem dringelassen, weil Sie früher oder später auf solche Probleme treffen werden, denn ein Kaufmanns-Und ist die Einleitung eines Befehls in XML. Hier aber natürlich nicht. Also, ich werde das mal in eine zweite Zeile mit diesem Pseudo-Umbruch verschieben. Also muss ich dafür sorgen, dass ich mit der Replace-Funktion das Kaufmanns-Und herausfische und durch etwas anderes ersetze. Und zwar haben Sie das vielleicht schon gesehen, mit diesen Entitäten, also Kaufmanns-Und, Einleitung einer Entität, Doppelkreuz, 38 und Semikolon für das Ende. Das ist nichts anderes als die XML-Beschreibung eines Kaufmanns-Unds. Nur, das wird dann trotzdem noch missverstanden. Erst wenn Sie das aufdoppeln, so wie übrigens bei den Gänsefüßchen innerhalb von VBA auch. Ein doppeltes Kaufmanns-Und wird im Ergebnis als Kaufmanns-Und dargestellt, ein einfaches ist die Einleitung zu einer Aktion, zu einem Befehl, wie immer Sie das sehen wollen. Jetzt dürfte es funktionieren. Also sicherheitshalber einmal speichern. Ein Kompiliert-Check kann auch nicht schaden. Und mit alt+F11 gucken wir mal, was hier herauskommt. Das Symbol ist da. Das ist der Text mit Kaufmanns-Und, alles wunderbar. Und das ist die Description. Hier unten diese Quick-Info können Sie nicht verhindern. Sie können es bestenfalls mit weiterem Text füllen, aber das ist vor allem Fleißarbeit. Dieses Ding ist deaktiviert, automatisch, weil es noch keine Untermenü-Einträge hat. Deswegen werde ich jetzt einen Untermenü-Eintrag erfinden. Also mit alt+F11 hier zwischen die nächste Prozedur nutzen, die ich auch schon vorbereitet habe, die eigentlich fast identisch arbeitet. Die zählt die Menü-ID hoch, schreibt jetzt nicht "Menü", sondern "Button", vergibt dem eine automatische Kennung, das hat was hier hinten mit einer internen Konstante, die kommt noch, zu tun. Und außerdem noch eine Menü-ID für den Fall, dass derselbe Button mal mehrfach erzeugt würde. Grundsätzlich können Sie ja Menüeinträge an verschiedenen Stellen wiederholen. Und dann ansonsten das Label. Eine Description gibt es nicht. Dafür ist einfach kein Platz in Menüeinträgen, in kleinen Menüeinträgen, wie sie hier kommen. Und wenn das Hauptmenü ein Bild hatte, dann wird es hier wieder entsprechend übernommen, und zum Schluss, das Übliche, OnActionButton aufgerufen, damit jetzt der Klick auf einen Menüeintrag, das verhält sich nämlich wie ein Button, auch eine Aktion auslöst. Also, der Menüeintrag möchte, und da muss ich ein bisschen was vorbereiten, eine Kennung haben. Das ist im Grunde eine Nummer. Aber ich hätte gerne eine sprechende Nummer. Deswegen gehe ich vorübergehend zu meinen Variablen, Konstanten und DLLs und nehme dort eine Enumeration. Enumerations sind ja im Grunde nichts anderes als benannte Zahlen. Also "enum", dann mache ich mal dieses Präfix für Enumeration davor, "Aktion", oder ruhig im Plural, und irgendwo "End Enum". Und jetzt kann ich dazwischen beliebige Wörter erfinden. Im Grunde sind es Integer-Konstanten, zum Beispiel für die Aktion "Datenbank Beenden". Die hätte jetzt die Nummer Null. Ich erfinde davor noch eine, die Enumerations-Aktion "NichtsTun". Die hat jetzt die Nummer Null, das hat die Nummer Eins, und jede weitere wird hochnummeriert. Im Grunde ist es mir aber völlig wurscht, welche Nummer dahintersteht. Die muss nur eine Nummer haben. Und jetzt kann ich im Menü hingehen und das da oben ausfüllen, also zwischen "MenueStart" und "MenueEnde". Ich rücke das mal ein. Dann ist die Struktur besser zu sehen. "strxml" ist "strxml" verkettet mit einem Menüeintrag, dessen erster Wert der Text ist. Da sagen wir mal einfach: "Datenbank beenden". Und dessen zweiter Text ist eine Konstante. Die kommt aus einer Enumeration. Die fangen alle mit "akt" an. Also strg+Leertaste, "aktDBBeenden", Klammer zu. Dann ist das soweit fertig. Und wenn ich keinen Fehler gemacht habe, wird auch das jetzt funktionieren. Also, Sie sehen, es ist aktiv. Und da ist der Untereintrag. Der ist klein, "itemSize=normal". Dieses ist "itemSize=large", mit Description und großem Bild, und das ist "normal", eben mit kleinem Bild, dasselbe Bild wird automatisch verkleinert, und eben der entsprechenden Zeile. Und wenn es jetzt komplett programmiert wäre, dann würde der Klick darauf jetzt auch etwas auslösen. Allerdings der Klick hierauf ruft zwar "OnActionButton" auf, aber mein "btnMenue_1_2" wurde leider nicht programmiert. Dafür gab es meinen "Case Else". Das fehlt also noch, aber im Moment geht es ja nur darum, dass das Menü erstmal vernünftig funktioniert. Der Rest ist jetzt ganz viel Fleißarbeit. Aber nach diesem Konzept wird das Menü jetzt aufgebaut.

Eine Datenbank mit Access 2013 richtig entwickeln

Sehen Sie einem erfahrenen Datenbankentwickler über die Schulter und lernen Sie dabei, wie Sie in Access 2013 optimale und perfekt skalierbare Datenbank anlegen und pflegen.

5 Std. 18 min (53 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!