Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Eine Datenbank mit Access 2013 richtig entwickeln

Flexible Beschriftungen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit einer weiteren Callback-Prozedur sind auch flexible Beschriftungen innerhalb des Menübands möglich.

Transkript

Wir haben in diesem Ribbon jetzt integrierte Befehle fertig mit Bild und eigenem Text, und eigene Befehle mit eigenem Text und eigenem Bild. Aber alle Texte waren immer statisch. Die stehen im XML-Code, ich zeige das hier nochmal, drin, nämlich zum Beispiel hinter dem Eintrag "Label". Das soll jetzt anders werden. Ich möchte eine neue Gruppe, nämlich davor auch einfügen, wo auch die Texte variabel sind und erst zur Laufzeit eingefügt werden. Dazu hole ich wieder den Inhalt von dem USysRibbon herüber, und habe bereits vorbereitet ein Stückchen Code, XML. Das ist ein größeres Stückchen. Deswegen mache ich hier erstmal richtig viel Abstand. Da kommt eine komplette neue Gruppe, nämlich mit der Beschriftung "Info". Statisch ändert sich da noch nichts, die heißt "grpInfo" und endet hier. Soweit ist sie mit dieser Gruppe identisch, nur dass sie eben anders heißen muss. Dann gibt es auch hier einen Button, mit der ID für das Logo, in der großen Version, und der hat schon einen flexiblen Text. Da steht nämlich jetzt nicht mehr "Label" und irgendein Inhalt drin, sondern "getLabel", und damit wird hier wieder eine Callback-Funktion aufgerufen, die ich auch entsprechend "GetLabel" genannt habe. Ansonsten verhält er sich wie bisher auch. Er hat ein Image. Das ist schon längst im Grafikverzeichnis enthalten. Das hatten wir auch im Formular schon einmal benutzt. Und "onAction". Er ruft auch einen "OnActionButton" auf. Dann gibt es sogenannte Label-Controls. Das ist vor allem, damit eine Verwechslung mit dem Label-Attribut hier nicht stattfindet. Label-Control ist ein Bezeichnungsfeld. Achten Sie wieder auf das große "C". Das sind also reine Bezeichnungsfelder, und zwar in klein jetzt. Da passen drei übereinander. Da steht "Angemeldet", "Version" und "Stand" drin. Und die sind nicht aktiviert. Ganz hart programmiert sozusagen, einfach deswegen, damit man nicht daraufklicken kann. Die sind nämlich eigentlich gar nicht dafür vorgesehen, und haben jeweils Bezeichnungen. Und darumherum ist eine Box, von da bis da, die vor allem dafür sorgt, dass sie schön nebeneinander ausgerichtet sind. Und daneben eine zweite Box, um die geht es dann nämlich, mit den wirklichen Inhalten. Da steht also nachher links "Angemeldet", und rechts das, was ich in dem zweiten "Angemeldet"-Label finde, einmal der Titel, einmal der Inhalt, und was auch wieder dynamisch dazugelesen wird. Das ist wahrscheinlich leichter zu verstehen, wenn Sie es fertig gleich gesehen haben. Ich nehme mal hier die Leerzeichen heraus, und habe jetzt also eine neue Gruppe angelegt. Das muss ich natürlich hier auch wieder einfügen. Das war der erste Teil. Die Gruppe ist da, aber die erwartet jetzt selbstverständlich, dass es eine GetLabel-Prozedur gibt. Die muss ich also hier hinten auch entsprechend ergänzen. Also eine Sub, die namentlich von mir als "GetLabel" bezeichnet wurde. Das ist üblich, aber wie gesagt nicht zwingend. Die übergibt ein "control as IRibbonControl", sowie da oben auch. Das machen diese ganzen Prozeduren eigentlich so ziemlich alle. Und "byref" gibt die wieder was zurück, und zwar dieses Mal kein Image, sondern ein Label. Und auch hier rufe ich das ja für verschiedene Controls auf. Deswegen kann ich schon direkt "select case control.ID" schreiben, "End Select", damit ich es nicht vergesse. Und das kann man sich direkt herüberkopieren, denn das, schreibe ich einfach hier, das Label soundso wurde aufgerufen. Das ist einfach nur, wenn ich mich vertippe, dass ich dann Bescheid kriege, wo ich mich vertippt habe. Und hier das Übliche, jetzt muss ich einfach nur wissen, was hab ich denn so alles, zum Beispiel der Button "Logo", der hatte ja eine flexible Beschriftung. Ich mache hier mal ein bisschen Abstand, und kann in der zweiten Zeile weiterschreiben. Das Label, das ist ja "ByRef", das, was ich zurückgebe, wird jetzt heißen: "Datenbank". Und jetzt würde ich einfach den "Application" nehmen. Dafür habe ich eine Konstante vergeben, also "p_cstrAppName". So weit, so gut. Ich kann aber jetzt schon direkt sagen, das läuft auf einen Fehler, weil der Name der Datenbank ein Kaufmanns-Und enthält, und das wird an der Stelle fehlinterpretiert. Also kann ich direkt mit "replace" dafür sorgen, dass dieses einzelne Kaufmanns-Und bitte in ein doppeltes umgewandelt wird, und dann funktioniert das wieder. Das Button-Logo wird hier oben übrigens auch benutzt. Der hatte auch eine OnAction, können wir also direkt ergänzen. Da kommt einfach nur ganz schnöde hier erstmal ein "Info". Das soll ja nur zeigen, wie es funktioniert, und nicht in jedem Detail fertig sein. Und jetzt kann ich die Inhalte füllen von zum Beispiel "lblAngemeldet". Da zeige ich an, wie der Login-Name des Benutzers ist, oder, besser gesagt, sein richtiger Name, wenn er in der Datenbank gefunden ist. Sonst steht da "Gast". Also, dafür gebe ich seinen Namen zurück. Da können wir ja zum Beispiel auf "p_usrDieser.Name" zurückgreifen. Und für das Label mit der Version gibt es das entsprechend, also, Label ist diese Konstante für die Version. Und das Dritte war "lblStand". Auch da rücke ich die Konstante heraus. Und das hat den Vorteil, dass wir überall wirklich die gleichen Informationen sehen, und nicht mal dieses und mal jenes, weil Sie versehentlich irgendwo etwas nicht aktualisiert haben. Hier also, da ist der Stand. Das sollte jetzt komplett sein. Einmal sicherheitshalber "Debuggen" - "Kompilieren", keine Schreibfehler, und wenn es hier einen Schreibfehler drin gibt, dann würde ich das sowieso erst beim Ausführen merken. Und jetzt kann ich das Ganze wieder komprimieren, neu starten und finde jetzt hier eine neue Gruppe, die hier den Namen der Datenbank nennt, und zwar aus dem Code heraus, und hier die anderen Inhalte, die ich dort im Code als Konstante beziehungsweise als Ermittlung während des Startes gefunden habe. Sie können also mit relativ wenig Aufwand, wenn dieses ganze Callback- Konzept einmal steht, dann muss man nur noch immer mal mit Fleißarbeit eine Zeile hinzufügen, mit relativ wenig Aufwand sofort den Benutzer darüber informieren, als was er gerade angemeldet ist, welche Version, und so etwas alles habe ich hier. Und die Boxen sorgen dafür, dass diese schön untereinander stehen. Wenn Sie das nicht machen würden, würden die nämlich direkt hintereinander stehen. Sieht einfach nicht so schön aus.

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!