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

Eine Datenbank mit Access 2013 richtig entwickeln

Auf Menüklick reagieren

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Das Anklicken eines Menüeintrags funktioniert wie bei einer Schaltfläche, allerdings braucht die Prozedur mehr Flexibilität für den Elementnamen, damit Sie nicht alle einzeln nennen müssen.

Transkript

Das Menü zeigt zwar sehr schön alles an, und der Klick hierauf würde ja auch nur das Untermenü öffnen, aber der Untermenü-, der eigentliche, arbeitende Eintrag sozusagen, der löst nach dem Klick auf OnActionButton die Meldung aus, dass dieser Eintrag fehlt. Und an der Stelle muss ich jetzt ansetzen. Ich werde also nach wie vor "OnActionButton" aufrufen, aber diese Bezeichnung wiederum zerlegen. Und zwar möchte ich diese Zahl wissen. Dieser Text, der Name des Menüs, setzt sich zusammen aus "btnMenue", Unterstrich, einer Zahl, die mir sagt, welche Kennung ich vergeben hatte, und dann einer automatisch nummerierten Nummer, die mich nicht interessiert. Ich werde nachher mit der Split-Funktion diese Zeichenkette in drei Elemente zerlegen, und das zweite, das mittlere Element, herausfischen. Merken Sie sich einfach im Moment: "btnMenue" sind drei, sechs, acht Zeichen, und ich kann an der Stelle also einfach hingehen und sagen: Die will ich weg haben. Dazu muss ich an verschiedenen Stellen nachbessern, zum Beispiel erstmal bei den Callbacks. Aufgerufen wird ja "OnActionButton". Und hier im "Else"-Fall sage ich einfach, diese Meldung, da ist etwas schiefgelaufen. Und bevor die Meldung erscheint, prüfe ich lieber erstmal, ob ich vielleicht einen von diesen Menüs gekriegt habe, ob also "left" von der "control.Id" und zwar die acht Zeichen, die ich da eben hatte, ob das möglicherweise identisch ist mit "btnMenue". Und dann weiß ich, ich habe mein Menü, erst im anderen Fall mache ich diese "Else"-Fehlermeldung, also, es sollte im Moment nur die Meldung vorübergehend kommen. Ja, jetzt ganz vereinfacht hier, das ist ein Menü, können wir direkt probieren, einmal draufklicken, und es ist erkannt. Es handelt es sich um ein Menü. Damit habe ich die erstmal alle gemeinsam abgefangen. Und jetzt kann ich genauer hingehen und sagen, von denen will ich jetzt etwas, nämlich die Nummer. Die wird nachher weitergereicht an eine Funktion. Ich schreibe einfach erstmal nur diese Nummer heraus. Und zwar mit der Split-Funktion kann ich die Control-ID zerlegen, gebe jetzt ein Trennzeichen vor, und erhalte als Ergebnis von diesem Term, von diesem Ausdruck, ein dreielementiges Array. 0, 1, 2 sind die Elementteile. Und von diesem Array hätte ich gern das mittlere, das zweite, und deswegen kann ich es wie ein Array ansprechen. Das zweite Element trägt die Indexnummer 1. Das sollte jetzt im Ergebnis die Nummer liefern. Und das heißt, egal wie lang die Nummer ist, die kann ja zur Not dreistellig sein, wenn ich das jetzt ausführe, meldet die MessageBox die Nummer für Akt beenden, meine Aktion, und das war die Nummer 1. Und mit diesem Wissen kann ich jetzt weiterarbeiten und das weiterreichen. Sicherheitshalber mache ich hier noch ein "val" darumherum, damit auch garantiert eine Nummer ankommt, ein Value. Und statt der MessageBox wird da gleich etwas anderes erscheinen. In meiner "modDynamicMenue", in dem Modul, in meiner Liste von Funktionen, kommt jetzt eine neue Funktion, genauer gesagt eine Prozedur. Die heißt "sub MenueAufruf". Und die erfährt eine Integer-Variable, welche Aktion ausgeführt wurde. Und mit "select case" prüfe ich dann, "intAktion", und kann jetzt ganz gezielt fragen, ist das vielleicht "case", die Aktion "NichtsTun". Ich schreibe mal dazu: "keine Reaktion". Das könnte zum Beispiel Zwischentitel treffen, oder irgendwas, das vorübergehend deaktiviert ist. Aber wichtig ist mir jetzt mein "aktDBBeenden". Und sicherheitshalber wieder das ewige "Case Else", "msgbox", da steht dann: "Unbekannte Menü-Aktion". Das ist ein "Critical", und von mir verursacht. Und hier kommt die eigentliche Handlung. Die ist so kurz, die können wir dranhängen. Das war das "DoCmd.CloseDatabase", so wie es auch die Schaltfläche oben macht. Es geht ja nicht um die Aktion selber, sondern nur wie die organisiert sind. Und dieses "MenueAufruf", ich speichere das schonmal, dieses "MenueAufruf" in den Callbacks ersetzt jetzt die MessageBox. Also, "MenueAufruf" übergibt hier die Nummer, und dann sollte die Datenbank beendet werden. Das ist natürlich zum Testen jetzt ein bisschen lästig. Ich werde das also vorübergehend mal mit der MessageBox "klappt!" versehen und dahinter einen Kommentar machen. Nur damit Sie sehen: Es klappt, ohne dass wir gleich aus der Datenbank rausfliegen. Also, Menü funktioniert noch alles. Der Klick hierauf meldet sich mit "klappt!". Und damit ist sozusagen bewiesen, dass die Aktion hier gelandet ist. Es ist also ein Weiterreichen. Ich habe in den Callbacks hier verlängert, sozusagen, dass ich den Namen nicht sicher weiß, sondern, wenn es keiner von denen ist, prüfe, ob er vielleicht mit "btnMenue" anfängt. Und wenn das der Fall ist, dann operiere ich die Nummer, die dahinter steht, heraus. Die sagt mir nämlich, welche Aktion ich gemeint habe. Das ist im Namen enthalten. Und dort, wenn Sie hier wechseln wollen, Umschalt+F2, springe ich zu der Prozedur, dort kann ich dann mit den schonmal vereinbarten Enumerations-Konstanten reagieren und sagen: Aha, das war also das Menü mit dieser Aktion. Und das hatte ich ja genau hier vereinbart. Ich habe jetzt also einen schönen Zusammenhang zwischen der Definition, hier steht "aktDBBeenden", und der Reaktion, da weiß ich jetzt wieder, welches Menü angeklickt wurde.

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!