Access: Menüband anpassen

Schaltflächen einfügen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eigene Schaltflächen benötigen im Gegensatz zu integrierten Schaltflächen eigene Prozeduren, welche beim Anklicken ausgelöst werden. Diese werden über die "onAction"-Eigenschaft verbunden.

Transkript

Ich habe hier zwar schon eine Schaltfläche, aber im Gegensatz zu denjenigen, die hier wären, die nämlich alle integriert sind, funktioniert die noch nicht. Ich kann mal gerne draufklicken, das habe ich grade gemacht, es kommt nicht mal eine Fehlermeldung, denn diese Schaltfläche weiß noch gar nicht, dass sie überhaupt was tun soll. Das muss ich ihr erst mal beibringen und das bedeutet, ich muss an zwei Stellen arbeiten. Ich muss wieder der Schaltfläche sagen, was aufzurufen wäre, wenn sie angeklickt würde, und dann muss ich im VBA-Code hinterlegen, was dann ausgeführt wird. Fangen wir vielleicht mit der Schaltfläche an. Dort kann ich also einfach den Code, den ich hier schon im Texteditor hineinkopiert habe, ergänzen. Dort muss für die Schaltfläche, das ist diese hier, irgendwo, ist völlig egal wo, vorne oder hinten, ein onAction stehen, und zwar in dieser Schreibweise, klein, groß, kleines on, großes Action, und weil es tatsächlich verschiedene onActions gibt für ganz unterschiedliche Arten für Buttons, für Toggle-Buttons und Comboboxen und sowas, schreibe ich immer in meinem VBA-Befehl dazu, welchen ich meine. Also dieses ist ein OnActionButton. Das Wort, was ich hier schreibe, ist völlig frei ausgedacht. Ich nenne es häufig gleich oder ähnlich wie den zugehörigen Namen der Eigenschaft, aber es ist nicht zwingend. Ich muss nur gleich eine Prozedur onAction schreiben, die exakt die Signatur besitzt, wie sie vorgegeben ist. Also diese Prozedur weiß das jetzt schon und wenn wir grade dabei sind, können wir das direkt schon kopieren für den zweiten, Ich möchte nämlich... Achtung: hier keinen doppelten Separator. Ich möchte nämlich hier außerdem sowas wie ein Info oder ein Logo anbringen, sagen wir LogoRandBand und deswegen heißt dieses Gif hier nicht Beenden, sondern, das hatte ich schon als Datei hinterlegt, LogoRandBand.gif; ruft auch das GetLabel auf. Ich muss also diesen Namen dort berücksichtigen und ruft genauso onAction auf. Das ist immer der Vorteil in dieser Textdatei, die kann man sich zur Seite legen und wenn man im Code ist, schnell noch mal nachgucken. Jetzt wieder alles kopieren und diese Datei zur Seite schieben und in den Ribbons wieder hineinfügen. Das war der erste Teil, jetzt muss ich in den Code wechseln. Ich muss also in meinem Modul mit den Callbacks erstens beim Label dafür sorgen, dass auch das LogoRandBand in irgendeiner Form berücksichtigt ist. Also, ich kann hier ergänzen, davor oder dahinter ist ziemlich egal, ich glaube, es steht in der Reihenfolge eher davor, also ein btnLogoRandBand und dessen Label kann ich mir irgendwie was ausdenken. Vielleicht schreibe ich einfach nur den maskierten Namen dahinter oder wenigstens das Wort "Info zu" und schön mit einem Hochkomma und dahinten das Hochkomma auch wieder zu. Da fehlt typischerweise immer irgendein Kaufmanns-Und. Nein, da fehlt Doppelpunkt. So, damit ist das GetLabel geklärt. Das andere, das schreibe ich jetzt mal oberhalb, ist ein OnAction gewesen, was bei mir konkret OnActionButton heißt, also muss ich irgendwo OnActionButton schreiben und dessen Signatur, also die Reihenfolge und die Datentypen der Argumente heißt Controll as IRibbonControl. Und jetzt hier, genau wie bei dem anderen auch, ein Select Case control.Id und das da unten kann ich auch schon wieder kopieren, das mache ich überall rein. Es ist nichts zwingend, aber es hilft deutlich bei der Fehlersuche, aber ich gebe hier kein Label zurück, deswegen nehme ich hier die Message-Box. Wenn man draufklickt, gibt es eine Fehlermeldung und das ist anders als beim Label, welches beim Öffnen des Registers ganz viele Label gleichzeitig aufrufen kann, hier kommt nur ein Klick und eine Meldung. Da wird man nicht so wahnsinnig, wie wenn man hier mit Fehlermeldungen überschüttet wird. Jetzt muss ich einfach gucken, was habe ich denn alles an OnActions enthalten? Also btnBeenden, da muss wieder der Doppelpunkt hin, darf irgendwas tun. Und ich habe mir in so einem Fall, das schreibe ich schon mal hier irgendwo hin, immer so eine FehltNoch-Prozedur hinterlegt. Da kann ich an der Stelle, wenn das noch nicht fertig ist, wenigstens ein FehltNoch machen, also hier in den Callbacks schreibe ich an dieser Stelle erst mal FehltNoch. Und außerdem gab es ja den btnLogoRandBand und da mache ich einfach ein Info, und Sie haben vielleicht schon gesehen, die gibt es schon, also bei den Subs gibt es ein ZeigeInfo. Das ist eine einfache Message-Box und hier gibt es auch schon DBBeenden, aber das lasse ich erst noch mal weg, weil wenn man das testet, dann die Datenbank sofort zu ist, das ist einfach nur lästig. Also da mache ich ein ehrliches ZeigeInfo. Sie sehen schon, dass sind beliebige Prozeduren, die irgendwo stehen und von mir aufgerufen werden. Aus Schönheitsgründen den noch ein bisschen rüber, funktionieren würde es trotzdem, aber sicherheitshalber Debuggen Kompilieren. Sieht gut aus. Ob die Signatur richtig ist, kann ich im Moment nur behaupten. Das prüft der Compiler erst mal nicht, erst beim Aufruf würde es scheitern, also bleibt mir nichts anderes übrig, als hier wieder Komprimieren und ja, das Modul muss ich noch speichern und gucken, was passiert. Da sehen Sie jetzt ganz deutlich ein transparentes Logo, sonst wäre da nämlich ein Viereck zu sehen. Das Label hat funktioniert und -- die Spannung steigt -- wenn ich das jetzt anklicke, kommt hier die Message-Box. Das ist genau das, wie ich es mir vorgestellt habe. Ich habe eine selbst erfundene Schaltfläche, die ruft einen selbst programmierten Code auf. Hier übrigens genauso. Statt Beenden wird aber im Moment diese Funktion FehltNoch aufgerufen. Wenn das nicht wäre -- ich gehe jetzt mal eben wieder in den Code --, dann hätte ich meine Fehlermeldung gekriegt, also ich werde mal mutwillig hier einen ungültigen Namen reinschreiben, wenn ich dann auf den gültigen klicke, kommt hier diese Meldung und dann weiß ich, das Ding heißt btnBeenden, das müsst ich sonst im XML-Code suchen und dann gucke ich direkt hier nach und stelle fest, tatsächlich, ich habe gar nicht btnBeenden geschrieben. Und jetzt funktioniert es wieder. Das heißt, alle Schaltflächen -- das können wir da mal rausnehmen -- werden OnActionButton aufgerufen und unterscheiden sich, indem sie hier an ihrem Namen erkannt werden.

Access: Menüband anpassen

Nutzen Sie als Datenbankentwickler das Menüband in Access, um dort sauber und platzsparend Ihre Schaltflächen und Bedienelemente unterzubringen – sogar kontextsensitiv.

2 Std. 7 min (24 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.06.2018

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!