{"id":55000322,"date":"2016-12-01T00:00:00","date_gmt":"2020-01-24T15:59:37","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=322"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Seitennavigation","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Seitennavigation.html","title":{"rendered":"Seitennavigation"},"content":{"rendered":"<p class='introduction'>Nicht nur die dynamische Positionierung von Steuerelementen zur Laufzeit eines Formulars eignet sich zur Datensatznavigation, auch das Ein- und Ausblenden dieser kann manchmal n&uuml;tzlich sein. Wir stellen ein Anwendungsbeispiel mit einer vertikalen Suchleiste dar, die platzsparend den Sprung zu den gew&uuml;nschten Datens&auml;tzen anbietet, wobei diese &uuml;ber einen Mausklick sichtbar wird.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1607_Sidenavigation.accdb<\/b>.<\/p>\n<h2>Search Bar<\/h2>\n<p>Bei dieser Anwendung geht es nicht mehr um ein Verschieben von Steuerelementen, sondern um das Sichtbarmachen einer Listbox, die dennoch den Eindruck einer Bewegung verursacht. Das Formular <b>frmKunden<\/b> der Beispieldatenbank macht es vor.<\/p>\n<p>Nach dem &ouml;ffnen sieht es aus, wie in Bild 1. Au&szlig;er den Adressfeldern gibt es rechts einen blauen Balken, der scheinbar mit der Aufschrift <b>Click Me!<\/b> versehen ist. Klicken Sie ihn an, so blendet sich eine Listbox ein, wie in Bild 2. Sie enth&auml;lt die Namen aller Kunden. Wahlweise kann ein Eintrag &uuml;ber Mausklick oder &uuml;ber die Pfeiltasten der Tastatur samt abschlie&szlig;endem <b>ENTER<\/b> aktiviert werden, was den entsprechenden Datensatz ins Formular bringt. Danach wird die Listbox automatisch wieder geschlossen. Sie tut das zudem auch bei der Taste <b>ESC<\/b> und dann, wenn Sie den Fokus &uuml;ber die Maus in eines der Textfelder des Formulars setzen. <\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/frmKundenStart.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/frmKundenStart.png\" alt=\"Das Formular frmKunden weist rechts einen Balken zur Navigation auf\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Das Formular frmKunden weist rechts einen Balken zur Navigation auf<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/frmKunden.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/frmKunden.png\" alt=\"Nach Klick auf den Balken &ouml;ffnet sich eine Listbox mit allen Kunden\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Nach Klick auf den Balken &ouml;ffnet sich eine Listbox mit allen Kunden<\/p>\n<p>Dies entspricht einem Abbruch des Such- beziehungsweise Navigationsvorgangs. Das Einblenden der Listbox wirkt so, als fahre es von der rechten Seite ins Formular. Um zu verdeutlichen, wie die Sache aufgebaut ist, betrachten wir zun&auml;chst den Entwurf des Formulars (siehe Bild 3). Hier findet sich rechts die ungebundene Listbox <b>lstFind<\/b>, welche &uuml;ber ihr Kontextmen&uuml; und den Eintrag <b>Position | In den Vordergrund <\/b>&uuml;ber zwei weitere Steuerelemente gebracht wurde. Ihr <b>Verankern<\/b>-Modus steht auf <b>Nach unten dehnen<\/b>, damit sie Gr&ouml;&szlig;en&auml;nderungen des Formulars vertikal mitmacht. Die &uuml;berdeckten Steuerelemente sind einmal ein blaues Rechteck <b>rNavi<\/b> mit dem <b>Verankern<\/b>-Modus <b>Quer und nach unten dehnen<\/b>, sowie ein Label <b>LblClick<\/b> mit der Beschriftung <b>Click Me!<\/b>. Damit es diesen Text um 90 Grad gedreht ausgibt, steht die Eigenschaft <b>Vertikal<\/b> im Reiter <b>Andere<\/b> des Eigenschaftenblatts auf <b>Ja<\/b>. Damit beide Steuerelemente beim Formularstart zu sehen sind, ist die Eigenschaft <b>Sichtbar<\/b> der &uuml;berlagernden Listbox auf <b>Nein<\/b> eingestellt. Deren Datenherkunft &uuml;brigens ergibt sich aus einer <b>UNION<\/b>-Abfrage, die aus der Tabelle <b>tblKunden<\/b> und zus&auml;tzlichen k&uuml;nstlichen Datens&auml;tzen zum L&ouml;schen und  Hinzuf&uuml;gen von Kunden besteht. Wir erl&auml;uterten eine solche bereits in Ausgabe <b>03\/2016<\/b> zum Thema <b>UNION-Abfragen<\/b>.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/frmKundenDesign.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/frmKundenDesign.png\" alt=\"Entwurfsansicht des Formulars frmKunden mit Listbox rechts im Vordergrund\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Entwurfsansicht des Formulars frmKunden mit Listbox rechts im Vordergrund<\/p>\n<p>Schreiten wir zum Code des Formulars! Listing 1 zeigt, was beim Anklicken entweder des blauen Rechtecks <b>rNavi<\/b> oder des Labels <b>LblClick<\/b> (<b>Click Me!<\/b>) passiert.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>rNavi_Click()\r\n     Me!lstFind = Me!ID\r\n     Me!lstFind.Visible = <span style=\"color:blue;\">True<\/span>\r\n     Me!lstFind.SetFocus\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>LblClick_Click()\r\n     rNavi_Click\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>lstFind_LostFocus()\r\n     Me.TimerInterval = 100\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Timer()\r\n     Me!cbAnrede.SetFocus\r\n     Me!lstFind.Visible = <span style=\"color:blue;\">False<\/span>\r\n     Me.TimerInterval = 0\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Ein- und Ausblenden der Navigations-Listbox &uuml;ber das Timer-Event des Formulars<\/p>\n<p><b>LblClick_Click<\/b> enth&auml;lt selbst keine Anweisungen und leitet nur an die Ereignisprozedur <b>rNavi_Click<\/b> weiter. Dort wird der Listbox <b>lstFind<\/b> erst der Wert des im Formular aktuell angezeigten Datensatzes &uuml;ber dessen <b>ID<\/b> zugewiesen, damit sie den Kundeneintrag markiert. Dann wird sie sichtbar gemacht. Durch das Einblenden &uuml;berdeckt sie nun Balkenrechteck und Label rechts. Schlie&szlig;lich wird der Fokus auf sie gesetzt, damit Maus- und Tastatureingaben sofort auf sie wirken k&ouml;nnen.<\/p>\n<p>Verliert sie den Fokus, was etwa durch Setzen des Mauszeigers in ein Formularfeld geschieht, so l&ouml;st dies ihr Ereignis <b>LostFocus<\/b> aus. Der Formularcode reagiert darauf &uuml;ber die Ereignisprozedur <b>lstFind_LostFocus<\/b> und aktiviert den Formular-Timer, welcher auf 100 ms eingestellt wird. In der folglich ausgel&ouml;sten Timer-Prozedur wird der Timer durch Setzen auf <b>0<\/b> am Ende wieder deaktiviert. Er wird also nur f&uuml;r ein sehr kurzes Delay verwendet, um die ersten zwei Codezeilen verz&ouml;gert auszuf&uuml;hren.<\/p>\n<p>Grund f&uuml;r diesen Umweg ist die Tatsache, dass diese Zeilen in der <b>LostFocus<\/b>-Prozedur nicht korrekt funktionieren w&uuml;rden, weil etwa die <b>SetFocus<\/b>-Anweisung erst ausgef&uuml;hrt wird, wenn das alte Ereignis abgeschlossen ist. Bei Fokusverlust wird die Listbox wieder unsichtbar gemacht, blendet sich damit aus, und das erste Formularfeld f&uuml;r die Anrede bekommt stattdessen den Fokus. Der Ausgangszustand ist wieder hergestellt.<\/p>\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\/55000322\/\">\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\/55000322?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\/55000322\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"876e5995cf\"\/>\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>Nicht nur die dynamische Positionierung von Steuerelementen zur Laufzeit eines Formulars eignet sich zur Datensatznavigation, auch das Ein- und Ausblenden dieser kann manchmal n&uuml;tzlich sein. Wir stellen ein Anwendungsbeispiel mit einer vertikalen Suchleiste dar, die platzsparend den Sprung zu den gew&uuml;nschten Datens&auml;tzen anbietet, wobei diese &uuml;ber einen Mausklick sichtbar wird.<\/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,66062016,44000012],"tags":[],"class_list":["post-55000322","post","type-post","status-publish","format-standard","hentry","category-662016","category-66062016","category-Steuerelemente"],"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>Seitennavigation - Access [basics]<\/title>\n<meta name=\"description\" content=\"Nicht nur die dynamische Positionierung von Steuerelementen zur Laufzeit eines Formulars eignet sich zur Datensatznavigation, auch das Ein- und Ausblenden dieser kann manchmal n\u00fctzlich sein. Wir stellen ein Anwendungsbeispiel mit einer vertikalen Suchleiste dar, die platzsparend den Sprung zu den gew\u00fcnschten Datens\u00e4tzen anbietet, wobei diese \u00fcber einen Mausklick sichtbar wird.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Seitennavigation - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Nicht nur die dynamische Positionierung von Steuerelementen zur Laufzeit eines Formulars eignet sich zur Datensatznavigation, auch das Ein- und Ausblenden dieser kann manchmal n\u00fctzlich sein. Wir stellen ein Anwendungsbeispiel mit einer vertikalen Suchleiste dar, die platzsparend den Sprung zu den gew\u00fcnschten Datens\u00e4tzen anbietet, wobei diese \u00fcber einen Mausklick sichtbar wird.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:37+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\/frmKundenStart.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=\"10\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\/Seitennavigation.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/frmKundenStart.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html\",\"name\":\"Seitennavigation - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:37+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Nicht nur die dynamische Positionierung von Steuerelementen zur Laufzeit eines Formulars eignet sich zur Datensatznavigation, auch das Ein- und Ausblenden dieser kann manchmal n\\u00fctzlich sein. Wir stellen ein Anwendungsbeispiel mit einer vertikalen Suchleiste dar, die platzsparend den Sprung zu den gew\\u00fcnschten Datens\\u00e4tzen anbietet, wobei diese \\u00fcber einen Mausklick sichtbar wird.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.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\/Seitennavigation.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Seitennavigation.html\",\"name\":\"Seitennavigation\"}}]},{\"@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\/55000322","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=55000322"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000322\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}