{"id":55000326,"date":"2017-02-01T00:00:00","date_gmt":"2020-01-24T15:59:39","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=326"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"RibbonProgrammierung_Teil_I","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html","title":{"rendered":"Ribbon-Programmierung, Teil I"},"content":{"rendered":"<p class='introduction'>Mit Access 2007 sind die Men&uuml;leiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon &uuml;bertragen. Das Ribbon bietet wesentlich mehr M&ouml;glichkeiten als seine Vorg&auml;nger, aber es ist auch aufw&auml;ndiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie m&uuml;ssen sich zus&auml;tzlich auch noch in XML einarbeiten &#8211; zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen m&uuml;ssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzuf&uuml;gen.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1607_Ribbon.accdb<\/b>.<\/p>\n<h2>Das Ribbon-Konzept<\/h2>\n<p>Das grundlegende Konzept zur Programmierung eigener Elemente f&uuml;r das Ribbon sieht vor, dass das Aussehen fast vollst&auml;ndig mit einem XML-Dokument beschrieben wird. Dieses enth&auml;lt an manche Stellen sogenannte Callback-Attribute, f&uuml;r die Sie die Namen von VBA-Prozeduren hinterlegen k&ouml;nnen, die beim Eintreten der Ereignisse, die das jeweilige Callback-Attribut ausl&ouml;sen, aufgerufen werden sollen. Dies ist also etwa vergleichbar mit der Programmierung von Formularen und den durch die verschiedenen Aktionen ausgel&ouml;sten Ereignisprozeduren. Mit dem kleinen Unterschied, dass Sie Formulare mithilfe einer praktischen Entwurfsansicht auf der Benutzeroberfl&auml;che zusammenklicken k&ouml;nnen, w&auml;hrend Sie die Benutzeroberfl&auml;che im oberen Bereich des Access-Fensters, das Ribbon, komplett in XML formulieren m&uuml;ssen.<\/p>\n<p>Es gibt zwar mittlerweile einige Tools, die einem diese Arbeit zumindest teilweise abnehmen, aber wir wollen Ihnen zun&auml;chst die Grundlagen zum selbst ausprobieren vermitteln.<\/p>\n<p>Auf diese Weise k&ouml;nnen Sie sp&auml;ter auch den von einem Tool erzeugten Code verstehen und gegebenenfalls nach Ihren W&uuml;nschen anpassen.<\/p>\n<h2>Die Tabelle USysRibbons<\/h2>\n<p>Wenn Sie eine Ribbon-Definition zur Anwendung bringen wollen, also etwa so, dass beim Start der Access-Datenbank alle eingebauten Elemente des Ribbons verschwinden und durch einen eigenen Befehl ersetzt werden, ben&ouml;tigen Sie eine Tabelle, in der Sie den Namen dieser Ribbon-Definition sowie die Definition selbst im XML-Format speichern. Der Inhalt dieser Tabelle wird beim n&auml;chsten &ouml;ffnen der Access-Anwendung abgefragt. Die Ribbon-Definitionen stehen dann &uuml;ber den Namen an verschiedenen Stellen in der Anwendung zur Auswahl:<\/p>\n<ul>\n<li>als Anwendungsribbon, also zur Anzeige mit dem &ouml;ffnen der Anwendung,<\/li>\n<li>als Formularribbon, das nach dem &ouml;ffnen eines Formulars angezeigt wird und mit diesem wieder geschlossen wird und<\/li>\n<li>als Berichtsribbon, das gleichzeitig mit der Anzeige eines Berichts eingeblendet wird.<\/li>\n<\/ul>\n<h2>Ribbons on the fly<\/h2>\n<p>Theoretisch besteht auch die M&ouml;glichkeit, Ribbons ad hoc per Code zusammenzustellen und diese anzuzeigen. Dies gelingt jedoch nur in Zusammenhang mit dem &ouml;ffnen eines Formulars, wie wir sp&auml;ter in dieser Reihe zeigen werden.<\/p>\n<h2>Bilder im Ribbon<\/h2>\n<p>Wenn Sie Icons in Ihrem benutzerdefinierten Ribbon abbilden m&ouml;chten, was empfehlenswert ist, um eine ergonomisch und optisch ansprechende Anwendung zu erhalten, ben&ouml;tigen Sie eine weitere Tabelle, die aber in den neueren Access-Versionen (ab 2010) standardm&auml;&szlig;ig in einer neuen <b>.accdb<\/b>-Datei vorhanden ist. Diese Tabelle hei&szlig;t <b>MSysResources <\/b>und ist in der Regel nicht zu sehen, da diese als ausgeblendet markiert ist. Auch die Tabelle <b>USysRibbons <\/b>wird wegen ihres Pr&auml;fix <b>USys&#8230; <\/b>nicht standardm&auml;&szlig;ig im Navigationsbereich angezeigt, sondern erst dann, wenn Sie diese &uuml;ber die Access-Optionen einblenden. Au&szlig;erdem ben&ouml;tigen Sie zur Anzeige von Bilddateien, die &uuml;blicherweise im .png-Format verwendet werden, noch einige Prozeduren, die wir aber in den Beispieldateien zur Verf&uuml;gung stellen.<\/p>\n<h2>Ein erstes Ribbon<\/h2>\n<p>Beginnen wir jedoch mit den Basics, und zwar mit dem Anlegen einer einfachen Ribbon-Definition, die wir anschlie&szlig;end in der Anwendung sichtbar machen. An dieser Stelle kommt es darauf an, den grundlegenden Ablauf zu verinnerlichen. Sp&auml;ter dann kommen wir auf fortgeschrittenere Ribbon-Techniken zu sprechen.<\/p>\n<h2>Tabelle USysRibbons anlegen<\/h2>\n<p>Als Erstes legen Sie eine neue Tabelle mit den folgenden Feldern an (siehe Bild 1):<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_326_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_326_001.png\" alt=\"Entwurf der Tabelle USysRibbons\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Entwurf der Tabelle USysRibbons<\/p>\n<ul>\n<li><b>ID<\/b>: Prim&auml;rschl&uuml;sselfeld der Tabelle<\/li>\n<li><b>RibbonName<\/b>: Name des Ribbons, der sp&auml;ter als Eigenschaft f&uuml;r die anzuzeigende Ribbon-Definition ausgew&auml;hlt werden soll<\/li>\n<li><b>RibbonXML<\/b>: XML-Definition des Ribbons<\/li>\n<\/ul>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000326\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000326?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000326\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit Access 2007 sind die Men&uuml;leiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon &uuml;bertragen. Das Ribbon bietet wesentlich mehr M&ouml;glichkeiten als seine Vorg&auml;nger, aber es ist auch aufw&auml;ndiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie m&uuml;ssen sich zus&auml;tzlich auch noch in XML einarbeiten &#8211; zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen m&uuml;ssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzuf&uuml;gen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662016,66072016,44000005],"tags":[],"class_list":["post-55000326","post","type-post","status-publish","format-standard","hentry","category-662016","category-66072016","category-AccessBenutzeroberflaeche"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ribbon-Programmierung, Teil I - Access [basics]<\/title>\n<meta name=\"description\" content=\"Mit Access 2007 sind die Men\u00fcleiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon \u00fcbertragen. Das Ribbon bietet wesentlich mehr M\u00f6glichkeiten als seine Vorg\u00e4nger, aber es ist auch aufw\u00e4ndiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie m\u00fcssen sich zus\u00e4tzlich auch noch in XML einarbeiten \u2013 zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen m\u00fcssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzuf\u00fcgen.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ribbon-Programmierung, Teil I - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Mit Access 2007 sind die Men\u00fcleiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon \u00fcbertragen. Das Ribbon bietet wesentlich mehr M\u00f6glichkeiten als seine Vorg\u00e4nger, aber es ist auch aufw\u00e4ndiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie m\u00fcssen sich zus\u00e4tzlich auch noch in XML einarbeiten \u2013 zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen m\u00fcssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzuf\u00fcgen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_326_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"8\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_326_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\",\"name\":\"Ribbon-Programmierung, Teil I - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:39+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Mit Access 2007 sind die Men\\u00fcleiste und die Symbolleisten von Access weggefallen. Die Befehle wurden stattdessen in das so genannte Ribbon \\u00fcbertragen. Das Ribbon bietet wesentlich mehr M\\u00f6glichkeiten als seine Vorg\\u00e4nger, aber es ist auch aufw\\u00e4ndiger zu programmieren. Dies gelingt nicht mehr einfach per VBA, sondern Sie m\\u00fcssen sich zus\\u00e4tzlich auch noch in XML einarbeiten \\u2013 zumindest in die grundlegenden Techniken. Das ist aber kein Problem, denn wir zeigen Ihnen in dieser Artikelreihe alles, was Sie wissen m\\u00fcssen, um Ihren Anwendungen selbst definierte Ribbons hinzuzuf\\u00fcgen.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/RibbonProgrammierung_Teil_I.html\",\"name\":\"Ribbon-Programmierung, Teil I\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000326"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000326\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}