{"id":55000933,"date":"2014-06-01T00:00:00","date_gmt":"2020-05-22T21:20:24","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=933"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"HoverEffekt_fuer_Schaltflaechen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/","title":{"rendered":"Hover-Effekt f&uuml;r Schaltfl&auml;chen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Von Internetseiten kennen Sie diesen Effekt l&auml;ngst: Wenn Sie mit der Maus &uuml;ber einen Link etwa in der Navigationsleiste fahren, wird die jeweils &uuml;berfahrene Schaltfl&auml;che mit einem speziellen Effekt hervorgehoben &#8211; beispielsweise in einer anderen Farbe. Da wir doch nun in Access mittlerweile auch Schaltfl&auml;chen komfortabel mit Icons ausstatten k&ouml;nnen, sollten &auml;hnliche Effekte doch auch hier m&ouml;glich sein Wir zeigen, ob und wie dies funktioniert. <\/b><\/p>\n<p><b>Voraussetzungen<\/b><\/p>\n<p>Der Teil dieses Beitrags, der das angezeigte Icon wechselt, setzt mindestens Access 2010 voraus.<\/p>\n<p><b>Schriftart wechseln<\/b><\/p>\n<p>Um die grunds&auml;tzliche Funktion der hier vorgestellten Technik zu demonstrieren, verwenden wir eine Formatierungs&auml;nderung, die in allen Access-Versionen verf&uuml;gbar sein d&uuml;rfte &#8211; der Wechsel von der Standardschriftbreite zur fetten Schrift. Dazu legen Sie einfach ein neues Formular in einer Beispieldatenbank an und f&uuml;gen diesem eine Schaltfl&auml;che mit einem beliebigen Text hinzu. Die Eigenschaft <b>Schriftbreite <\/b>enth&auml;lt in diesem Zustand der Schaltfl&auml;che nat&uuml;rlich den Wert <b>Normal<\/b> (s. Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_001.png\" alt=\"Beispielformular mit der zu bearbeitenden Schaltfl&auml;che\" width=\"575\" height=\"343,1035\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Beispielformular mit der zu bearbeitenden Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Nun soll die Schaltfl&auml;che ihren Inhalt beim Dar&uuml;berfahren mit der Maus fett anzeigen. Sie ahnen es bereits: Die Ereigniseigenschaft <b>Bei Mausbewegung <\/b>der Schaltfl&auml;che spielt dabei eine Rolle. Machen wir uns als ans Werk und legen f&uuml;r diese Ereigniseigenschaft eine entsprechende Ereignisprozedur an. Durch Ausw&auml;hlen des Eintrags [Ereignisprozedur] und anschlie&szlig;endes Anklicken der Schaltfl&auml;che mit den drei Punkten zeigen Sie die neu erzeugte Ereignisprozedur direkt im VBA-Editor an (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_002.png\" alt=\"Anlegen einer Prozedur, die durch das Ereignis Bei Mausbewegung ausgel&ouml;st wird.\" width=\"575\" height=\"337,9837\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Anlegen einer Prozedur, die durch das Ereignis Bei Mausbewegung ausgel&ouml;st wird.<\/span><\/b><\/p>\n<p>Diese Ereignisprozedur f&uuml;llen Sie nun mit der folgenden Anweisung aus Listing 1 auf. Wechseln wir in die Formularansicht und probieren aus, ob die Prozedur funktioniert. Das Ergebnis: Es klappt! Allerdings mit zwei kleinen Sch&ouml;nheitsfehlern: Erstens wird die Schriftart beim Verlassen der Schaltfl&auml;che nicht wieder normal eingestellt, und zweitens flackert die Schaltfl&auml;che st&auml;ndig, wenn man mit die Maus dar&uuml;ber bewegt.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdBeispielschaltflaeche_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     Me!cmdBeispielschaltflaeche.FontBold = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: &auml;ndern der Eigenschaft Schriftbreite in Fett<\/span><\/b><\/p>\n<p><b>Schaltfl&auml;che wieder normal darstellen<\/b><\/p>\n<p>Ersteres ist schon ein kleines Problem: Die Schaltfl&auml;chen von Access bieten n&auml;mlich kein Ereignis etwa namens <b>Beim Verlassen <\/b>et cetera. Was tun wir also Klar: Wir fragen ab, wann der Mauszeiger wieder den Bereich au&szlig;erhalb der Schaltfl&auml;che kreuzt. Dabei handelt es sich in diesem Fall um den Detailbereich. Auch dieser liefert die Ereigniseigenschaft <b>Bei Mausbewegung<\/b>, sodass wir einfach den Detailbereich durch Anklicken markieren und die gew&uuml;nschte Ereignisprozedur anlegen (s. Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_003.png\" alt=\"Per Ereignis abgreifen, wann der Mauszeiger die Schaltfl&auml;che verl&auml;sst\" width=\"575\" height=\"257,8198\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Per Ereignis abgreifen, wann der Mauszeiger die Schaltfl&auml;che verl&auml;sst<\/span><\/b><\/p>\n<p>Die Prozedur finden Sie in Listing 2.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Detailbereich_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     Me!cmdBeispielschaltflaeche.FontBold = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Urspr&uuml;ngliche Textbreite wiederherstellen<\/span><\/b><\/p>\n<p>Um das zweite Problem mit dem Flackern k&uuml;mmern wir uns weiter unten. Zun&auml;chst stellen wir uns die Frage: Was geschieht eigentlich, wenn wir dem dem Formular nun eine zweite Schaltfl&auml;che hinzuf&uuml;gen Dies betrachten wir im Formular <b>frmHoverEffektZweiSchaltflaechen <\/b>der Beispieldatenbank (s. Bild 4). Dieses enth&auml;lt zwei Schaltfl&auml;chen namens <b>cmdBeispielschaltflaeche1 <\/b>und <b>cmdBeispielschaltflaeche2<\/b>. Beide Schaltfl&auml;chen erhalten eine Ereignisprozedur, die durch das Ereignis <b>Bei Mausbewegung <\/b>ausgel&ouml;st wird und die Schrift der jeweiligen Schaltfl&auml;che auf <b>Fett <\/b>einstellt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_004.png\" alt=\"Neues Formular, diesmal mit zwei Schaltfl&auml;chen\" width=\"575\" height=\"213,2022\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Neues Formular, diesmal mit zwei Schaltfl&auml;chen<\/span><\/b><\/p>\n<p>Und auch die entsprechende Ereignisprozedur f&uuml;r den Detailbereich m&uuml;ssen wir anpassen. Es kann ja nun auch geschehen, dass nicht die erste, sondern die zweite Schaltfl&auml;che mit fetter Schrift dargestellt wird. Also stellen wir vorsichtshalber gleich beide Schaltfl&auml;chen entsprechend ein &#8211; s. Listing 3.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Detailbereich_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     Me!cmdBeispielschaltflaeche1.FontBold = <span style=\"color:blue;\">False<\/span>\r\n     Me!cmdBeispielschaltflaeche2.FontBold = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Urspr&uuml;ngliche Textbreite f&uuml;r zwei Schaltfl&auml;che wiederherstellen<\/span><\/b><\/p>\n<p>Auch das funktioniert wie gew&uuml;nscht &#8211; zumindest, bis wir die beiden Schaltfl&auml;chen direkt neben- oder &uuml;bereinander platzieren, sodass der Detailbereich dazwischen nicht sichtbar ist (s. Bild 5). Dies ist zwar ungew&ouml;hnlich, aber wenn man wenig Platz hat oder eine Web-&auml;hnliche Navigationsleiste erstellen m&ouml;chte, kann eine solche Konstellation durchaus vorkommen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_005.png\" alt=\"Formular mit zwei direkt nebeneinander liegenden Schaltfl&auml;chen\" width=\"575\" height=\"132,9053\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Formular mit zwei direkt nebeneinander liegenden Schaltfl&auml;chen<\/span><\/b><\/p>\n<p>Das Problem bei der Sache ist, dass beim Wechsel von der linken zur rechten Schaltfl&auml;che zwar die rechte Schaltfl&auml;che mit fetter Schrift dargestellt wird, die linke aber nicht in den Anfangszustand zur&uuml;ckversetzt wird. Der Grund ist leicht nachvollziehbar: Der Mauszeiger &uuml;berstreift zwischenzeitlich nicht den Detailbereich, also werden die beiden Schaltfl&auml;chen auch nicht auf normale Schriftst&auml;rke zur&uuml;ckgesetzt.<\/p>\n<p>Das bedeutet, dass wir f&uuml;r die Ereignisprozedur beim &uuml;berfahren der zweiten Schaltfl&auml;che die Schriftart der ersten Schaltfl&auml;che zur&uuml;cksetzen m&uuml;ssen und umgekehrt (s. Listing 4). Das ist in diesem Rahmen zwar machbar, aber was geschieht, wenn Sie nicht nur zwei, sondern vielleicht 20 Schaltfl&auml;chen auf einem Formular unterbringen Nein, das ist definitiv zu viel Aufwand. Sie m&uuml;ssten dann nicht nur f&uuml;r jede der 20 Schaltfl&auml;chen je eine Ereignisprozedur f&uuml;r das Ereignis Bei Mausbewegung einrichten, sondern auch noch in jeder dieser Prozeduren die aktuelle Schaltfl&auml;che mit fetter Schrift versehen und die &uuml;brigen 19 Schaltfl&auml;chen auf normale Schriftbreite einstellen. Und jede weitere Schaltfl&auml;che zieht die &auml;nderung der entsprechenden Ereignisprozedur aller vorhandenen Schaltfl&auml;chen nach sich.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdBeispielschaltflaeche2_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     Me!cmdBeispielschaltflaeche1.FontBold = <span style=\"color:blue;\">False<\/span>\r\n     Me!cmdBeispielschaltflaeche2.FontBold = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Aktuelle Schaltfl&auml;che mit fetter Schrift, vorherige Schaltfl&auml;che normal anzeigen<\/span><\/b><\/p>\n<p><b>Hover-Effekt mit Klasse<\/b><\/p>\n<p>Wir werden also, wie in so vielen F&auml;llen, in denen eine undefinierte Anzahl von Steuerelementen mit bestimmten Ereignissen ausgestattet werden m&uuml;ssen, ein oder zwei Klassen anlegen, welche die ben&ouml;tigte Funktionalit&auml;t bereithalben. Um es vorweg zu nehmen: Sie m&uuml;ssen dem Klassenmodul eines Formulars nur noch wenige Zeilen Code hinzuf&uuml;gen, um den gew&uuml;nschten Hover-Effekt f&uuml;r beliebig viele Schaltfl&auml;chen zu erzielen.<\/p>\n<p>Das Beispiel f&uuml;r den Einsatz dieser Klassen finden Sie im Formular <b>frmHoverEffekt_Fett_Klasse<\/b>. Diese Formular besitzt zun&auml;chst zwei Schaltfl&auml;chen, genau wie das Formular des vorherigen Beispiels. Legen Sie nun eine Ereignisprozedur f&uuml;r die Ereigniseigenschaft Beim Laden des Formulars an und hinterlegen Sie daf&uuml;r den Code aus Listing 5. Zus&auml;tzlich f&uuml;gen Sie noch die folgende Deklarationszeile zum Klassenmodul <b>Form_frmHoverEffekt_Fett_Klasse <\/b>hinzu (beziehungsweise zum Klassenmodul des betroffenen Formulars, wenn Sie die Funktion zu einem eigenen Formular hinzuf&uuml;gen m&ouml;chten):<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> objMouseOverForm = <span style=\"color:blue;\">New<\/span> clsMouseOverForm\r\n     <span style=\"color:blue;\">With<\/span> objMouseOverForm\r\n         <span style=\"color:blue;\">Set<\/span> .Form = Me\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Zuweisen der Funktionen der Klasse clsMouseOverForm zu einem Formular<\/span><\/b><\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>objMouseOverForm<span style=\"color:blue;\"> As <\/span>clsMouseOverForm<\/pre>\n<p>Die Prozedur <b>Form_Load<\/b> erstellt eine neue Instanz der Klasse <b>clsMouseOverForm <\/b>und speichert den Verweis darauf in der Variablen <b>objMouseOverForm<\/b>. Die einzige weitere Anweisung teilt dem Objekt <b>objMouseOverForm <\/b>&uuml;ber die Eigenschaft <b>Form <\/b>mit, auf welches Formular sich die Klasse beziehen soll beziehungsweise die Schaltfl&auml;chen welchen Formulars den Hover-Effekt erhalten sollen.<\/p>\n<p>Diese Klasse erzeugen Sie im VBA-Editor &uuml;ber den Men&uuml;eintrag <b>Einf&uuml;gen|Klassenmodul<\/b>. Speichern Sie die Klasse unter dem Namen <b>clsMouseOverForm<\/b>.<\/p>\n<p><b>Instanzieren der Klasse<\/b><\/p>\n<p>Wenn der Benutzer nun das Formular &ouml;ffnet, l&ouml;st dies automatisch die Ereignisprozedur <b>Form_Load <\/b>aus. Beim Instanzieren des neuen Objekts auf Basis der Klasse <b>clsMouseOverForm <\/b>geschieht noch nichts. Erst mit dem Zuweisen des Formulars zur Eigenschaft Form des Objekts <b>objMouseOverForm <\/b>wird eine <b>Property Set<\/b>-Prozedur der Klasse ausgel&ouml;st. Diese sieht wie in Listing 6 aus. Die Prozedur speichert zun&auml;chst einen Verweis auf das Formular in einer Variablen, die wie folgt im Kopf des Klassenmoduls <b>clsMouseOverForm <\/b>deklariert wird:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>WithEvents m_Form<span style=\"color:blue;\"> As <\/span>Form<\/pre>\n<pre><span style=\"color:blue;\">Public Property <span style=\"color:blue;\">Set<\/span> <\/span>Form(frm<span style=\"color:blue;\"> As <\/span>Form)\r\n     <span style=\"color:blue;\">Dim <\/span>objMouseOverControl<span style=\"color:blue;\"> As <\/span>clsMouseOverControl\r\n     <span style=\"color:blue;\">Dim <\/span>ctl<span style=\"color:blue;\"> As <\/span>control\r\n     <span style=\"color:blue;\">Set<\/span> m_Form = frm\r\n     <span style=\"color:blue;\">Set<\/span> frmDetail = m_Form.Section(0)\r\n     <span style=\"color:blue;\">With<\/span> m_Form\r\n         .OnMouseMove = \"[Event Procedure]\"\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">With<\/span> frmDetail\r\n         .OnMouseMove = \"[Event Procedure]\"\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> colControls = <span style=\"color:blue;\">New<\/span> Collection\r\n     For Each ctl In m_Form.Controls\r\n         Select Case ctl.ControlType\r\n             <span style=\"color:blue;\">Case <\/span>acCommandButton\r\n                 <span style=\"color:blue;\">Set<\/span> objMouseOverControl = <span style=\"color:blue;\">New<\/span> clsMouseOverControl\r\n                 <span style=\"color:blue;\">With<\/span> objMouseOverControl\r\n                     <span style=\"color:blue;\">Set<\/span> .Commandbutton = ctl\r\n                     <span style=\"color:blue;\">Set<\/span> .Parent = Me\r\n                 End <span style=\"color:blue;\">With<\/span>\r\n                 colControls.Add objMouseOverControl\r\n         <span style=\"color:blue;\">End Select<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> ctl\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 6: Zuweisen des Formulars und Einstellen einiger Eigenschaften<\/span><\/b><\/p>\n<p>Die Deklaration mit dem Schl&uuml;sselwort <b>WithEvents <\/b>sorgt daf&uuml;r, dass wir innerhalb des aktuellen Klassenformulars Ereignisprozeduren f&uuml;r das in dieser Variablen referenzierte Formular implementieren k&ouml;nnen. Das ist gerade einer der Tricks bei dieser L&ouml;sung: Sie sollen nicht zahlreiche Ereignisprozeduren zum formular hinzuf&uuml;gen, sondern nur die Klasse <b>clsMouseOverForm <\/b>instanzieren und diesem sagen, welches Formular mit den Ereignisprozeduren auszustatten ist &#8211; den Rest &uuml;bernimmt die Klasse dann selbst.<\/p>\n<p>Auf die gleiche Weise f&uuml;llt die <b>Property Set<\/b>-Prozedur die Variable <b>frmDetail <\/b>mit einem Verweis auf den Detailbereich des Formulars. Diese deklariert die Klasse wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>WithEvents frmDetail<span style=\"color:blue;\"> As <\/span>Section<\/pre>\n<p>Den Verweis auf den Detailbereich erhalten wir &uuml;ber den Ausdruck <b>m_Form.Section(0)<\/b>.<\/p>\n<p>Die folgenden Anweisungen sorgen daf&uuml;r, dass die Eigenschaft <b>Bei Mausbewegung <\/b>(<b>OnMouseMove<\/b>) des mit <b>m_Form <\/b>referenzierten Formulars mit dem Wert <b>[Event Procedure] <\/b>(im Eigenschaftsfenster <b>[Ereignisprozedur]<\/b>) gef&uuml;llt wird. Das Gleiche erledigt die Prozedur f&uuml;r den in <b>frmDetail <\/b>gespeicherten Detailbereich.<\/p>\n<p>Anschlie&szlig;end k&uuml;mmert sich die Prozedur um die im Formular enthaltenen Steuerelemente. Dazu instanziert sie zun&auml;chst ein <b>Collection<\/b>-Objekt, das mit der folgenden Variablen im Kopf des Klassenmoduls deklariert wird:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>colControls<span style=\"color:blue;\"> As <\/span>Collection<\/pre>\n<p>Die <b>Property Set<\/b>-Prozedur <b>Form <\/b>durchl&auml;uft nun in einer <b>For Each<\/b>-Schleife alle Steuerelemente des referenzierten Formulars und weist das aktuellen <b>Control<\/b>-Objekt der Variablen <b>ctl <\/b>zu. Innerhalb der Schleife pr&uuml;ft die Prozedur die Eigenschaft <b>ControlType <\/b>des Steuerelements. Handelt es sich um eine Schaltfl&auml;che (<b>ControlType = acCommandButton<\/b>), f&uuml;hrt die Prozedur weitere Anweisungen aus. Die erste erstellt ein neues Objekt auf Basis einer zweiten Klasse namens <b>clsMouseOverControl<\/b>. Die Details dieser Klasse besprechen wir weiter unten &#8211; zun&auml;chst schauen wir uns an, wie diese instanziert und best&uuml;ckt wird.<\/p>\n<p>Die Instanzierung erfolgt wie gewohnt &uuml;ber die <b>New<\/b>-Methode. Die Klasse <b>clsMouseOverControl<\/b> verf&uuml;gt &uuml;ber eine Eigenschaft namens <b>CommandButton<\/b>, der Sie den Verweis auf das aktuell mit der <b>For Each<\/b>-Schleife durchlaufene und mit <b>cmd<\/b> referenzierte Steuerelement zuweisen. Au&szlig;erdem bietet die Klasse eine weitere Eigenschaft namens <b>Parent<\/b>, der Sie einen Verweis auf die aktuelle Klasse, also <b>clsMouseOverForm<\/b>, zuweisen. Diese referenzieren Sie einfach mit dem Schl&uuml;sselwort <b>Me<\/b>. Das war es schon fast. Es fehlt jedoch noch ein entscheidender Schritt, bevor wir die n&auml;chste Schaltfl&auml;che auf die gleiche Weise in einer Instanz der Klasse <b>clsMouseOverControl <\/b>erstellen: Wir m&uuml;ssen das soeben erstellt Objekt <b>objMouse-OverControl <\/b>noch verewigen, damit es beim n&auml;chsten Schleifendurchlauf nicht einfach &uuml;berschrieben wird. Dazu f&uuml;gen wir die Objektvariable <b>objMouseOverControl <\/b>einfach mit der <b>Add<\/b>-Methode zum <b>Collection<\/b>-Objekt <b>colControls <\/b>hinzu!<\/p>\n<p><!--30percent--><\/p>\n<p>Die Collection ist ja im allgemeinen Teil des Klassenmoduls <b>clsMouseOverForm <\/b>deklariert und bleibt somit solange erhalten wie die Instanz des Klassenmoduls selbst. Und da diese ja beim Laden des Formulars wiederum in der Variablen <b>objMouseOverForm <\/b>im Klassenmodul des Formulars gespeichert wird, bleiben die Elemente der Collection solange verf&uuml;gbar, bis der Benutzer das Formular schlie&szlig;t.<\/p>\n<p>Auf die gleiche Weise durchl&auml;uft die Prozedur alle Steuerelemente des Formulars und f&uuml;gt f&uuml;r jede Schaltfl&auml;che eine neue Instanz der Klasse <b>clsMouseOverControl <\/b>zur Collection <b>colControls <\/b>hinzu.<\/p>\n<p><b>Die Klasse clsMouseOverControl<\/b><\/p>\n<p>Das waren die vorbereitenden Aktionen innerhalb der Klasse <b>clsMouseOverForm<\/b>. Bevor wir zu den Teilen des Codes kommen, welche die Aktionen bei der Benutzung des Formulars beschreiben, schauen wir uns einige Details der Klasse <b>clsMouseOverControl <\/b>an.<\/p>\n<p>Zun&auml;chst einmal w&auml;re da die <b>Property Set<\/b>-Prozedur, welche den Verweis auf das <b>CommandButton<\/b>-Objekt entgegen nimmt, dessen Ereignisse in der Klasse <b>clsMouseOverControl <\/b>implementiert werden sollen. Diese sieht wie in Listing 7 aus und schreibt den mit der Variablen <b>cmd <\/b>&uuml;bergebenen Verweis in die lokale Variable <b>m_cmd<\/b>. Diese wird wie folgt im Kopf des Klassenmoduls <b>clsMouseOverControl <\/b>deklariert:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>WithEvents m_cmd<span style=\"color:blue;\"> As <\/span>Commandbutton<\/pre>\n<pre><span style=\"color:blue;\">Public Property <span style=\"color:blue;\">Set<\/span> <\/span>Commandbutton(cmd<span style=\"color:blue;\"> As <\/span>Commandbutton)\r\n     <span style=\"color:blue;\">Set<\/span> m_cmd = cmd\r\n     <span style=\"color:blue;\">With<\/span> m_cmd\r\n         .OnMouseMove = \"[Event Procedure]\"\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 7: Zuweisen der Referenz auf die Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Anschlie&szlig;end tr&auml;gt die Prozedur noch den Wert <b>[Event Procedure] <\/b>f&uuml;r die Eigenschaft <b>OnMouseMove <\/b>f&uuml;r dieses Steuerelement ein.<\/p>\n<p>Die zweite <b>Property Set<\/b>-Prozedur nimmt den Verweis auf die Instanz der erzeugenden Klasse entgegen, die im Objekt <b>objMouseOverForm <\/b>gespeichert ist (s. Listing 8). Die Prozedur speichert den Verweis auf dieses Objekt in der Variablen <b>m_Form<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>m_Parent<span style=\"color:blue;\"> As <\/span>clsMouseoverForm<\/pre>\n<pre><span style=\"color:blue;\">Public Property <span style=\"color:blue;\">Set<\/span> <\/span>Parent(obj<span style=\"color:blue;\"> As <\/span>clsMouseoverForm)\r\n     <span style=\"color:blue;\">Set<\/span> m_Parent = obj\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 8: Zuweisen der Referenz auf die Klasse clsMouseOverForm<\/span><\/b><\/p>\n<p><b>Funktion der beiden Klassen<\/b><\/p>\n<p>Wir haben nun also in unserem Beispiel ein Objekt des Typs <b>clsMouseOverForm <\/b> (gespeichert in der Variablen <b>objMouseOverForm <\/b>im Klassenmodul des Formulars) und f&uuml;r jede Schaltfl&auml;che ein Objekt des Typs <b>clsMouseOverControl <\/b>(gespeichert in einer <b>Collection <\/b>in <b>clsMouseOverForm<\/b>).<\/p>\n<p>Wenn der Benutzer nun mit der Maus &uuml;ber eine der Schaltfl&auml;chen f&auml;hrt, soll f&uuml;r diese die Schriftart auf Fett eingestellt werden. Gleichzeitig soll die Schrift auf allen &uuml;brigen Schaltfl&auml;chen nicht fett erscheinen. Wenn die Maus eine Schaltfl&auml;che verl&auml;sst und nicht auf einer anderen Schaltfl&auml;che landet, sollen alle Schaltfl&auml;chen nicht fett dargestellt werden.<\/p>\n<p>Hier entsteht zun&auml;chst das Problem, dass wir beim &uuml;berfahren einer Schaltfl&auml;che daf&uuml;r sorgen m&uuml;ssen, dass keine der &uuml;brigen Schaltfl&auml;chen mit fetter Schrift dargestellt wird.<\/p>\n<p>Dazu gibt es zwei M&ouml;glichkeiten: Entweder wir durchlaufen alle &uuml;brigen Schaltfl&auml;chen und stellen ihre Schriftart entsprechend ein, oder wir speichern jeweils einen Verweis auf die aktuell &uuml;berfahrene Schaltfl&auml;che in einer Variablen. Wenn die Maus nun eine andere Schaltfl&auml;che &uuml;berf&auml;hrt, brauchen wir nur die <b>Fett<\/b>-Eigenschaft der zuvor in der Variablen gespeicherten Schaltfl&auml;che auf <b>Nein <\/b>einzustellen.<\/p>\n<p>Wir wollen den letzten, m&ouml;glicherweise etwas komplizierteren, aber schnelleren Weg einschlagen. Dazu deklarieren Sie in der Klasse <b>clsMouseOverForm <\/b>die folgende Variable, mit der ein Verweis auf das zuletzt &uuml;berfahrene <b>CommandButton<\/b>-Objekt gespeichert werden soll:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>m_Aktiv<span style=\"color:blue;\"> As <\/span>control<\/pre>\n<p>Danach f&uuml;gen Sie der Klasse eine <b>Property Set<\/b>-Prozedur hinzu, mit der wir das aktive Steuerelement einstellen k&ouml;nnen:<\/p>\n<pre><span style=\"color:blue;\">Public Property Get <\/span>ctlAktiv()<span style=\"color:blue;\"> As <\/span>control\r\n     <span style=\"color:blue;\">Set<\/span> ctlAktiv = m_Aktiv\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Au&szlig;erdem ben&ouml;tigen wir noch die M&ouml;glichkeit, dieses Steuerelement auszulesen. Dies bewerkstelligen wir mit einer entsprechenden <b>Property Get<\/b>-Prozedur, die wie folgt aussieht:<\/p>\n<pre><span style=\"color:blue;\">Public Property <span style=\"color:blue;\">Set<\/span> <\/span>ctlAktiv(ctl<span style=\"color:blue;\"> As <\/span>control)\r\n     <span style=\"color:blue;\">Set<\/span> m_Aktiv = ctl\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Damit gelangen wir direkt zu der Implementierung der Ereignisprozedur f&uuml;r das Ereignis <b>Bei Mausbewegung <\/b>in der Klasse <b>clsMouseOverControl<\/b>, die ja f&uuml;r alle Schaltfl&auml;chen ausgel&ouml;st wird, wenn der Benutzer mit der Maus dar&uuml;berf&auml;hrt. Diese sieht wie in Listing 9 aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>m_cmd_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>m_Parent.ctlAktiv Is Nothing Or <span style=\"color:blue;\">Not<\/span> m_Parent.ctlAktiv Is m_cmd<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> m_Parent.ctlAktiv Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n             m_Parent.ctlAktiv.FontBold = <span style=\"color:blue;\">False<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> m_Parent.ctlAktiv = m_cmd\r\n         m_cmd.FontBold = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 9: Diese Prozedur wird beim &uuml;berfahren einer Schaltfl&auml;che ausgel&ouml;st.<\/span><\/b><\/p>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst zwei Bedingungen per Or-Verkn&uuml;pfung:<\/p>\n<ul>\n<li>ob die Eigenschaft <b>ctlAktiv <\/b>des in <b>m_Parent <\/b>gespeicherten Objekts, also in der Varialben <b>m_Aktiv <\/b>der Klasse <b>clsMouseOverForm<\/b>, leer ist oder<\/li>\n<li>ob die Eigenschaft <b>ctlAktiv <\/b>nicht mit der Schaltfl&auml;che der aktuellen Instanz der Klasse aus der Variablen <b>m_cmd <\/b>&uuml;bereinstimmt.<\/li>\n<\/ul>\n<p>Trifft einer von beiden F&auml;llen ein, war die aktuell mit der Maus &uuml;berfahrene Schaltfl&auml;che zuletzt nicht die fett markierte Schaltfl&auml;che, sondern entweder keine oder eine andere. Innerhalb der <b>If&#8230;Then<\/b>-Bedingung pr&uuml;ft eine weitere Bedingung, ob zuletzt eine Schaltfl&auml;che in <b>ctlAktiv <\/b>gespeichert war (was der Fall ist, wenn der Mauszeiger gerade von einer benachbarten Schaltfl&auml;che auf die aktuelle Schaltfl&auml;che verschoben wurde). In diesem Fall stellt die Prozedur die Eigenschaft <b>FontBold <\/b>der zuvor aktiven Schaltfl&auml;che auf <b>False <\/b>ein.<\/p>\n<p>Au&szlig;erdem speichert sie die aktuell mit der Maus &uuml;berfahrene Schaltfl&auml;che in der Eigenschaft <b>ctlAktiv <\/b>der Klasse <b>clsMouseOverForm <\/b>und stellt <b>FontBold <\/b>f&uuml;r diese Schaltfl&auml;che auf <b>True <\/b>ein.<\/p>\n<p>Und genau diese Abfolge wird f&uuml;r alle Schaltfl&auml;chen des Formulars durchgef&uuml;hrt, sodass immer die Schaltfl&auml;che, auf der sich der Mauszeiger befindet, mit fetter Schrift angezeigt wird.<\/p>\n<p>Nun m&uuml;ssen wir noch f&uuml;r den Fall vorsorgen, dass der Benutzer den Mauszeiger auf einen Bereich verschiebt, der keine Schaltfl&auml;che enth&auml;lt.<\/p>\n<p>Dies liegt wiederum im Verantwortungsbereich der Klasse <b>clsMouseOverForm<\/b>. Diese soll ja eine Ereignisprozedur erhalten, die beim &uuml;berfahren des Detailbereichs mit der Maus ausgel&ouml;st wird. Die Ereignisprozedur sieht wie in Listing 10 aus und k&ouml;nnte eigentlich immer, wenn sie ausgel&ouml;st wird, die Eigenschaft <b>FontBold <\/b>der zuletzt &uuml;berfahrenen und mit <b>m_Aktiv <\/b>referenzierten Schaltfl&auml;che auf <b>False <\/b>einstellen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>frmDetail_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> m_Aktiv Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         m_Aktiv.FontBold = <span style=\"color:blue;\">False<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> m_Aktiv = Nothing\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 10: Diese Prozedur wird beim &uuml;berfahren des Detailbereichs ausgel&ouml;st.<\/span><\/b><\/p>\n<p>Allerdings w&uuml;rde dies dann viele Male pro Sekunde geschenen, weil das Ereignis <b>Form_MouseMove <\/b>ja in kurzen Abst&auml;nden w&auml;hrend der Mausbewegung feuert. Das st&auml;ndige Einstellen der <b>FontBold<\/b>-Eigenschaft w&uuml;rde zu starkem Flackern des Formulars f&uuml;hren.<\/p>\n<p>Also pr&uuml;ft die Prozedur, ob <b>m_Aktiv <\/b>nicht den Wert <b>Nothing <\/b>enth&auml;lt, also ob eine der Schaltfl&auml;chen als aktiv markiert ist. Ist dies der Fall, erfolgen zwei Schritte:<\/p>\n<ul>\n<li>Die Eigenschaft <b>FontBold <\/b>f&uuml;r die aktive Schaltfl&auml;che wird auf <b>False <\/b>eingestellt und<\/li>\n<li><b>m_Aktiv <\/b>wird geleert, damit keine Schaltfl&auml;che mehr als aktiv markiert ist.<\/li>\n<\/ul>\n<p>Das war es &#8211; das Formular zeugt nun jeweils die &uuml;berfahrene Schaltfl&auml;che mit fetter Schrift an.<\/p>\n<p>Um zu pr&uuml;fen, ob dies auch tats&auml;chlich immer funktioniert, f&uuml;gen wir dem Formular einfach noch eine Schaltfl&auml;che hinzu und &ouml;ffnen es erneut in der Formularansicht. Und auch dies gelingt!<\/p>\n<p><b>Neue M&ouml;glichkeiten ab Access 2007<\/b><\/p>\n<p>Mit Access 2007 hat Microsoft neue Eigenschaften f&uuml;r Schaltfl&auml;chen eingef&uuml;hrt (ab hier finden Sie alle Beispiele in der Datenbank <b>HoverEffekt2010.accdb<\/b>). Die neuen Eigenschaften finden Sie im Eigenschaftsfenster im Bereich <b>Format <\/b>(s. Bild 6):<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_006.png\" alt=\"Eigenschaften, die Hintergrund- und Rahmenfarbe beim Mouseover anpasst\" width=\"575\" height=\"243,7336\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Eigenschaften, die Hintergrund- und Rahmenfarbe beim Mouseover anpasst<\/span><\/b><\/p>\n<ul>\n<li><b>Farbe beim Daraufzeigen<\/b><\/li>\n<li><b>Farbe f&uuml;r gedr&uuml;ckten Zustand<\/b><\/li>\n<li><b>Vordergrundfarbe beim Daraufzeigen<\/b><\/li>\n<li><b>Vordergrundfarbe f&uuml;r gedr&uuml;ckten Zustand<\/b><\/li>\n<\/ul>\n<p>Zus&auml;tzlich dazu ben&ouml;tigen Sie nat&uuml;rlich die Eigenschaften, welche die Vordergrund- und Hintergrundfarbe im Normalzustand angeben.<\/p>\n<p>Zur Begriffskl&auml;rung: Die Vordergrundfarbe ist die Schriftfarbe, die Farbe ist die Hintergrundfarbe. F&uuml;r den Originalzustand stellen Sie die Vordergrundfarbe mit der Eigenschaft <b>Textfarbe <\/b>und die Hintergrundfarbe mit der gleichnamigen Eigenschaft ein.<\/p>\n<p>Im Screenshot finden Sie Ausdr&uuml;cke wie <b>Akzent1, Heller 60% <\/b>et cetera als Farbwerte. Was diese Werte bedeuten und wie Sie diese einstellen, erfahren Sie im Beitrag <b>Steuerelement-Design ab Access 2010 <\/b>(<b>www.access-im-unternehmen.de\/****<\/b>). F&uuml;r uns ist an dieser Stelle erstmal interessant, wie wir diese diese Werte per VBA einstellen oder abfragen.<\/p>\n<p>Wenn wir die verschiedenen Farben per VBA abfragen m&ouml;chten, verwenden wir eine Prozedur wie die aus Listing 11. Diese Prozedur wird beim Laden des Formulars ausgel&ouml;st und gibt die Werte der einzelnen Eigenschaften im Direktbereich des VBA-Editors aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>cmd1<span style=\"color:blue;\"> As <\/span>CommandButton\r\n     <span style=\"color:blue;\">Set<\/span> cmd1 = Me!cmdBeispielschaltflaeche1\r\n     <span style=\"color:blue;\">With<\/span> cmd1\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Textfarbe: \" & .ForeColor\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Vordergrundfarbe beim Daraufzeigen: \" & .HoverForeColor\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Vordergrundfarbe f&uuml;r gedr&uuml;ckten Zustand: \" & .PressedForeColor\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Hintergrundfarbe: \" & .BackColor\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Farbe beim Daraufzeigen: \" & .HoverColor\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Farbe f&uuml;r gedr&uuml;ckten Zustand: \" & .PressedColor\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 11: Anzeige der Farbeigenschaften einer Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Die Ausgabe sieht schlie&szlig;lich wie in Bild 7 aus. Dabei erscheinen hier nur Zahlenwerte statt der im Eigenschaftsfenster dargestellten Textausdr&uuml;cke. N&auml;here Erkl&auml;rungen hierzu finden Sie in dem oben genannten Beitrag.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_007.png\" alt=\"Ausgabe der Text- und Hintergrundfarben f&uuml;r verschiedene Zust&auml;nde\" width=\"350\" height=\"122,9122\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Ausgabe der Text- und Hintergrundfarben f&uuml;r verschiedene Zust&auml;nde<\/span><\/b><\/p>\n<p><b>Farben f&uuml;r Hovereffekt per VBA anpassen<\/b><\/p>\n<p>Nun wollen wir, da der Hover-Effekt in der Standardeinstellung unter Access 2010 kaum zur Geltung kommt, per VBA einige Anpassungen an den einzelnen Farben vornehmen. Dabei sollen die Schaltfl&auml;chen im Standardzustand (also im nicht gedr&uuml;ckten, nicht &uuml;berfahrenen Zustand) einen wei&szlig;en Hintergrund und eine schwarze Farbe aufweisen. Wenn der Benutzer mit der Maus &uuml;ber eine Schaltfl&auml;che f&auml;hrt, sollen die Farben umgekehrt werden &#8211; der Hintergrund soll schwarz sein, die Schriftfarbe wei&szlig;. Dies erreichen Sie, indem Sie die Ereignisprozedur <b>Form_Load <\/b>des Formulars wie in Listing 12 anpassen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>cmd<span style=\"color:blue;\"> As <\/span>CommandButton\r\n     <span style=\"color:blue;\">Dim <\/span>ctl<span style=\"color:blue;\"> As <\/span>Control\r\n     For Each ctl In Me.Controls\r\n         Select Case ctl.ControlType\r\n             <span style=\"color:blue;\">Case <\/span>acCommandButton\r\n                 <span style=\"color:blue;\">Set<\/span> cmd = ctl\r\n                 <span style=\"color:blue;\">With<\/span> cmd\r\n                     .ForeColor = &H0\r\n                     .HoverForeColor = &HFFFFFF\r\n                     .PressedForeColor = &HFFFFFF\r\n                     .BackColor = &HFFFFFF\r\n                     .HoverColor = &H0\r\n                     .PressedColor = &H0\r\n                 End <span style=\"color:blue;\">With<\/span>\r\n         <span style=\"color:blue;\">End Select<\/span>\r\n     <span style=\"color:blue;\">Next<\/span> ctl\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 12: &auml;ndern der Farbeinstellungen f&uuml;r den Standard-, Hover- und gedr&uuml;ckten Zustand<\/span><\/b><\/p>\n<p>Das Ergebnis zeigt schlie&szlig;lich Bild 8. Interessanterweise werden die per VBA festgelegten Eigenschaften nicht mit dem Entwurf des Formulars gespeichert. Wenn Sie dies dauerhaft erreichen m&ouml;chten, ohne die Schaltfl&auml;chen beim Laden des Formulars anzupassen, m&uuml;ssen Sie diese direkt im Eigenschaftsfenster einstellen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_008.png\" alt=\"Benutzerdefinierte Hover-Farbe\" width=\"350\" height=\"141,573\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Benutzerdefinierte Hover-Farbe<\/span><\/b><\/p>\n<p><b>Bilder bei MouseOver austauschen<\/b><\/p>\n<p>Nun ist es seit Access 2010 auch recht komfortabel m&ouml;glich, Bilder in Schaltfl&auml;chen anzuzeigen. Viele Webanwendungen liefern als Hover-Effekt die Anzeige des gleichen Icons etwa einmal in einer schwarz-wei&szlig;en Version und beim &uuml;berfahren mit der Maus in Farbe oder umgekehrt &#8211; es gibt nat&uuml;rlich auch noch andere Varianten. Wenn Sie sich einmal eine Sammlung von Icons geg&ouml;nnt haben sollten, die Bilder in verschiedenen Versionen anbietet, k&ouml;nnen Sie diesen Hover-Effekt ebenfalls realisieren. Wir zeigen, wie dies mit Access 2010 gelingt. Dort f&uuml;gen Sie zun&auml;chst das Bild zu einer Schaltfl&auml;che hinzu, welches diese standardm&auml;&szlig;ig anzeigen soll.<\/p>\n<p>Den notwendigen Ribbon-Eintrag finden Sie im Tab Entwurf, wenn Sie das Formular in der Entwurfsansicht &ouml;ffnen und auf die mit einem Bild auszustattende Schaltfl&auml;che klicken. W&auml;hlen Sie dann den Eintrag <b>Steuerelemente|Bild einf&uuml;gen <\/b>aus und klicken Sie auf den nun erscheinenden Befehl <b>Durchsuchen&#8230;<\/b> (s. Bild 9).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_009.png\" alt=\"Hinzuf&uuml;gen eines Bildes zu einer Schaltfl&auml;che\" width=\"650\" height=\"329,9447\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: Hinzuf&uuml;gen eines Bildes zu einer Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Nachdem Sie das erste Bild f&uuml;r den Standardzustand der ersten Schaltfl&auml;che hinzugef&uuml;gt haben, erledigen Sie dies auch noch f&uuml;r die zweite Schaltfl&auml;che. Dann f&uuml;gen Sie noch zwei Bilder hinzu, die beim &uuml;berfahren der Schaltfl&auml;chen angezeigt werden sollen. Diese sollten Sie nach einem festen Schema benennen, die vom Dateinamen des Bildes f&uuml;r den Standardzustand abh&auml;ngt. Wenn die Originalbilder etwa <b>add <\/b>und <b>alarmclock <\/b>hei&szlig;en, sollten die ersetzenden Bilder beispielsweise <b>1_add<\/b> und <b>1_alarmclock <\/b>hei&szlig;en. Der Zwischenstand sieht also wie in Bild 10 so aus, dass Sie der Anwendung einige Bilddateien hinzugef&uuml;gt haben, von denen jeweils eines den Originalnamen und eine den Namen mit vorangestelltem <b>1_ <\/b>aufweist (Sie k&ouml;nnten es auch etwa mit <b>hover_ <\/b>versehen, das bleibt Ihnen &uuml;berlassen).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_010.png\" alt=\"Schaltfl&auml;chen mit Bildern und Austauschbilder in der Bildliste\" width=\"650\" height=\"312,8016\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: Schaltfl&auml;chen mit Bildern und Austauschbilder in der Bildliste<\/span><\/b><\/p>\n<p>Nun folgt noch ein weiterer, wichtiger Schritt: Sie m&uuml;ssen den Originalnamen des Bildes in der <b>Marke<\/b>-Eigenschaft (unter VBA: <b>Tag<\/b>) eintragen. Der Hintergrund ist, dass die Bilder ja w&auml;hrend der MouseOver-Aktion ausgetauscht werden. Die daf&uuml;r verantwortliche Prozedur soll dann aus der <b>Marke<\/b>-Eigenschaft den Originalnamen entnehmen k&ouml;nnen, um sowohl die Originaldatei als auch die mit dem Pr&auml;fix <b>1_ <\/b>versehene Datei ermitteln zu k&ouml;nnen (s. Bild 11).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_011.png\" alt=\"Originalname der Bilddatei in der Marke-Eigenschaft der Schaltfl&auml;che\" width=\"500\" height=\"216,6934\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 11: Originalname der Bilddatei in der Marke-Eigenschaft der Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Das gew&uuml;nschte Ergebnis sehen Sie &uuml;brigens in Bild 12.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_03\/pic_933_012.png\" alt=\"Einblenden einer alternativen Bilddatei\" width=\"500\" height=\"156,4815\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 12: Einblenden einer alternativen Bilddatei<\/span><\/b><\/p>\n<p>Anschlie&szlig;end m&uuml;ssen wir die Klassen <b>clsMouseOverForm <\/b>und <b>clsMouseOverControl <\/b>etwas erweitern, damit diese auf Zuruf alternativ zur fetten Schrift auch noch das Icon austauschen k&ouml;nnen.<\/p>\n<p>In der Klasse <b>clsMouseOverForm <\/b>finden folgende Erweiterungen statt: Sie f&uuml;gen zwei neue Eigenschaften hinzu, damit Sie Bilder und\/oder fett gesetzte Schrift als Effekt nutzen k&ouml;nnen:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>m_Bilder<span style=\"color:blue;\"> As Boolean<\/span>\r\n<span style=\"color:blue;\">Dim <\/span>m_Fett<span style=\"color:blue;\"> As Boolean<\/span><\/pre>\n<p>Zus&auml;tzlich f&uuml;gen wir f&uuml;r jede der beiden Eigenschaften je eine &ouml;ffentliche <b>Property Let<\/b>&#8211; und <b>Property Get<\/b>-Prozedur hinzu:<\/p>\n<pre><span style=\"color:blue;\">Public Property Let <\/span>Bilder(bol<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     m_Bilder = bol\r\n<span style=\"color:blue;\">End Property<\/span>\r\n<span style=\"color:blue;\">Public Property Get <\/span>Bilder()<span style=\"color:blue;\"> As Boolean<\/span>\r\n     Bilder = m_Bilder\r\n<span style=\"color:blue;\">End Property<\/span>\r\n<span style=\"color:blue;\">Public Property Let <\/span>Fett(bol<span style=\"color:blue;\"> As Boolean<\/span>)\r\n     m_Fett = bol\r\n<span style=\"color:blue;\">End Property<\/span>\r\n<span style=\"color:blue;\">Public Property Get <\/span>Fett()<span style=\"color:blue;\"> As Boolean<\/span>\r\n     Fett = m_Fett\r\n<span style=\"color:blue;\">End Property<\/span><\/pre>\n<p>Diese beide Eigenschaften kann der Benutzer dann in der Ereignisprozedur <b>Form_Load <\/b>beim Instanzieren der Klasse <b>clsMouseOverForm <\/b>einstellen &#8211; siehe fett gedruckte Codezeilen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> objMouseOverForm = <span style=\"color:blue;\">New<\/span> clsMouseoverForm\r\n     <span style=\"color:blue;\">With<\/span> objMouseOverForm\r\n         <span style=\"color:blue;\">Set<\/span> .Form = Me\r\n         .Bilder = <span style=\"color:blue;\">True<\/span>\r\n         .Fett = <span style=\"color:blue;\">True<\/span>\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Achtung: Ohne Aktivierung einer der beiden Eigenschaften f&uuml;hrt die Klasse keinerlei &auml;nderungen beim &uuml;berfahren der Schaltfl&auml;chen mit der Maus aus.<\/p>\n<p><b>Ereignisprozeduren anpassen<\/b><\/p>\n<p>Au&szlig;erdem passen Sie die Ereignisprozedur <b>frmDetail_MouseMove<\/b> wie in Listing 13 an. Die wesentlichen Unterschiede zur vorherigen Version sind die beiden Pr&uuml;fungen der Variablen <b>m_Fett<\/b> und <b>m_Bilder<\/b>. Wenn der Benutzer die Variable <b>m_Fett <\/b>&uuml;ber die Eigenschaft <b>Fett <\/b>auf <b>True <\/b>eingestellt haben, dann stellt die Ereignisprozedur die Eigenschaft <b>FontBold <\/b>beim &uuml;berfahren des Detailbereichs f&uuml;r die zuletzt aktive Schaltfl&auml;che auf <b>False <\/b>ein.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>frmDetail_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> m_Aktiv Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>m_Fett<span style=\"color:blue;\"> Then<\/span>\r\n             m_Aktiv.FontBold = <span style=\"color:blue;\">False<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">If <\/span>m_Bilder<span style=\"color:blue;\"> Then<\/span>\r\n             m_Aktiv.Picture = m_Aktiv.Tag\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Set<\/span> m_Aktiv = Nothing\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 13: Anpassen der Klasse clsMouseOverForm<\/span><\/b><\/p>\n<p>Wenn <b>m_Bilder<\/b> den Wert <b>True <\/b>hat, dann wird die Eigenschaft <b>Picture <\/b>der Schaltfl&auml;che wieder auf den in der <b>Tag<\/b>-Eigenschaft gespeicherten Wert eingestellt, das hei&szlig;t, dass das Originalbild wieder erscheinen soll.<\/p>\n<p><b>Hover-Bild einstellen<\/b><\/p>\n<p>Damit das beim &uuml;berfahren mit der Maus anzuzeigende Bild eingeblendet wird, passen Sie auch noch die Klasse <b>clsMouseOverControl <\/b>an. Die ge&auml;nderte Version der Prozedur finden Sie in Listing 14. Wir haben dort ebenfalls jeweils Pr&uuml;fungen eingef&uuml;gt, ob die Eigenschaft <b>Fett <\/b>und <b>Bilder <\/b>in der &uuml;bergeordneten und mit <b>m_Parent <\/b>referenzierten Klasse auf <b>True <\/b>oder <b>False <\/b>eingestellt sind. Im Falle von <b>True <\/b>f&uuml;r die Eigenschaft <b>Fett <\/b>wird zun&auml;chst gepr&uuml;ft, ob vor der aktuellen Schaltfl&auml;che eine andere Schaltfl&auml;che hervorgehoben war. Falls ja, wird diese gegebenenfalls wieder zur&uuml;ckgesetzt und die aktuelle Schaltfl&auml;che hervorgehoben.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>m_cmd_MouseMove(Button<span style=\"color:blue;\"> As Integer<\/span>, Shift<span style=\"color:blue;\"> As Integer<\/span>, X<span style=\"color:blue;\"> As Single<\/span>, _\r\n         Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     <span style=\"color:blue;\">With<\/span> m_Parent\r\n         <span style=\"color:blue;\">If <\/span>.ctlAktiv Is Nothing Or <span style=\"color:blue;\">Not<\/span> .ctlAktiv Is m_cmd<span style=\"color:blue;\"> Then<\/span>\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> .ctlAktiv Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n                 <span style=\"color:blue;\">If <\/span>.Fett<span style=\"color:blue;\"> Then<\/span>\r\n                     .ctlAktiv.FontBold = <span style=\"color:blue;\">False<\/span>\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n                 <span style=\"color:blue;\">If <\/span>.Bilder<span style=\"color:blue;\"> Then<\/span>\r\n                     .ctlAktiv.Picture = m_cmd.Tag\r\n                 <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">Set<\/span> .ctlAktiv = m_cmd\r\n             <span style=\"color:blue;\">If <\/span>.Fett<span style=\"color:blue;\"> Then<\/span>\r\n                 m_cmd.FontBold = <span style=\"color:blue;\">True<\/span>\r\n             <span style=\"color:blue;\">End If<\/span>\r\n             <span style=\"color:blue;\">If <\/span>.Bilder<span style=\"color:blue;\"> Then<\/span>\r\n                 m_cmd.Picture = \"1_\" & m_cmd.Tag\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     End <span style=\"color:blue;\">With<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 14: Anpassen der Klasse clsMouseOverControl<\/span><\/b><\/p>\n<p>Gleiches gilt f&uuml;r die Eigenschaft <b>Bilder<\/b>: Hat diese den Wert <b>True<\/b>, wird eine eventuell zuvor mit dem f&uuml;r den Hover-Effekt vorgesehenen Bild ausgestattete Schaltfl&auml;che zur&uuml;ckgesetzt und die aktuelle Schaltfl&auml;che auf das entsprechende Icon eingestellt.<\/p>\n<p><b>Einschr&auml;nkungen<\/b><\/p>\n<p>Die vorgestellte L&ouml;sung geht davon aus, dass sich alle Schaltfl&auml;chen im Detailbereich des Formulars befinden. Desweiteren sollten sich keine anderen Steuerelemente wie etwa Textfelder direkt neben einer Schaltfl&auml;che befinden. Ist das der Fall, kann es geschehen, dass der Mauszeiger direkt von einer Schaltfl&auml;che zu einem anderen Steuerelement bewegt wird. Dies l&ouml;st aber nicht das Ereignis <b>Bei Mausbewegung <\/b>des Detailbereichs aus, was n&ouml;tig w&auml;re, um den Hover-Effekt f&uuml;r die zuletzt &uuml;berfahrene Schaltfl&auml;che aufzuheben. In diesem Fall m&uuml;ssten Sie auch noch f&uuml;r alle &uuml;brigen Steuerelemente Mechanismen definieren, die daf&uuml;r sorgen, dass eine eventuell zuvor hervorgehobene Schaltfl&auml;che nun wieder normal dargestellt wird.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Das Ausstatten von Schaltfl&auml;chen mit Effekten, die beim &uuml;berfahren mit der Maus angezeigt werden, liefert &#8211; wenn man die richtigen Farben, Textauszeichnungen und\/oder Icons verwendet &#8211; eine gute Unterst&uuml;tzung bei der Bedienung. Und da das Auge mit isst, k&ouml;nnen Sie den Benutzer vielleicht sogar mt einer sch&ouml;nen Benutzeroberfl&auml;che und ein paar Extras beeindrucken.<\/p>\n<p>Dieser Beitrag hat drei verschiedene Effekte vorgestellt:<\/p>\n<ul>\n<li>Das &auml;ndern des Textes in fetter und nicht fetter Schrift ist f&uuml;r alle Access-Versionen m&ouml;glich. Hier kommen keine Eigenschaften zum Einsatz, die nur neueren Access-Versionen vorbehalten w&auml;ren.<\/li>\n<li>Das &auml;ndern der Text- und der Hintergrundfarbe durch Einstellen der entsprechenden Eigenschaften kann ab Access 2007 realisiert werden. In &auml;lteren Versionen sind Eigenschaften wie <b>Farbe beim Daraufzeigen <\/b>oder <b>Farbe f&uuml;r gedr&uuml;ckten Zustand <\/b>nicht vorhanden.<\/li>\n<li>Der Einsatz von Schaltfl&auml;chenbildern und das Austauschen des Bildes der Schaltfl&auml;che, auf die der Mauszeiger aktuell zeigt, sind in der hier beschriebenen Form erst ab Access 2010 m&ouml;glich.<\/li>\n<\/ul>\n<p>Neben den hier beschriebenen Effekten k&ouml;nnen Sie nat&uuml;rlich noch weitere Effekte hinzuf&uuml;gen, vor allem, was die Gestaltung der Schrift angeht.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>HoverEffekt2003.accdb<\/p>\n<p>HoverEffekt2010.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{36D76F7C-3D02-4A7E-BE15-6D2460509661}\/aiu_933.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Von Internetseiten kennen Sie diesen Effekt l&auml;ngst: Wenn Sie mit der Maus &uuml;ber einen Link etwa in der Navigationsleiste fahren, wird die jeweils &uuml;berfahrene Schaltfl&auml;che mit einem speziellen Effekt hervorgehoben &#8211; beispielsweise in einer anderen Farbe. Da wir doch nun in Access mittlerweile auch Schaltfl&auml;chen komfortabel mit Icons ausstatten k&ouml;nnen, sollten &auml;hnliche Effekte doch auch hier m&ouml;glich sein Wir zeigen, ob und wie dies funktioniert.<\/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":[662014,66032014,44000023],"tags":[],"class_list":["post-55000933","post","type-post","status-publish","format-standard","hentry","category-662014","category-66032014","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Hover-Effekt f&uuml;r Schaltfl&auml;chen - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hover-Effekt f&uuml;r Schaltfl&auml;chen\" \/>\n<meta property=\"og:description\" content=\"Von Internetseiten kennen Sie diesen Effekt l&auml;ngst: Wenn Sie mit der Maus &uuml;ber einen Link etwa in der Navigationsleiste fahren, wird die jeweils &uuml;berfahrene Schaltfl&auml;che mit einem speziellen Effekt hervorgehoben - beispielsweise in einer anderen Farbe. Da wir doch nun in Access mittlerweile auch Schaltfl&auml;chen komfortabel mit Icons ausstatten k&ouml;nnen, sollten &auml;hnliche Effekte doch auch hier m&ouml;glich sein Wir zeigen, ob und wie dies funktioniert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:20:24+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"26\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Hover-Effekt f&uuml;r Schaltfl&auml;chen\",\"datePublished\":\"2020-05-22T21:20:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/\"},\"wordCount\":4491,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/7fb4a0af46d74180a215cedc8982d928\",\"articleSection\":[\"2014\",\"3\\\/2014\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/\",\"name\":\"Hover-Effekt f&uuml;r Schaltfl&auml;chen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/7fb4a0af46d74180a215cedc8982d928\",\"datePublished\":\"2020-05-22T21:20:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/7fb4a0af46d74180a215cedc8982d928\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/7fb4a0af46d74180a215cedc8982d928\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/HoverEffekt_fuer_Schaltflaechen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hover-Effekt f&uuml;r Schaltfl&auml;chen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hover-Effekt f&uuml;r Schaltfl&auml;chen - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/","og_locale":"de_DE","og_type":"article","og_title":"Hover-Effekt f&uuml;r Schaltfl&auml;chen","og_description":"Von Internetseiten kennen Sie diesen Effekt l&auml;ngst: Wenn Sie mit der Maus &uuml;ber einen Link etwa in der Navigationsleiste fahren, wird die jeweils &uuml;berfahrene Schaltfl&auml;che mit einem speziellen Effekt hervorgehoben - beispielsweise in einer anderen Farbe. Da wir doch nun in Access mittlerweile auch Schaltfl&auml;chen komfortabel mit Icons ausstatten k&ouml;nnen, sollten &auml;hnliche Effekte doch auch hier m&ouml;glich sein Wir zeigen, ob und wie dies funktioniert.","og_url":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:20:24+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"26\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Hover-Effekt f&uuml;r Schaltfl&auml;chen","datePublished":"2020-05-22T21:20:24+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/"},"wordCount":4491,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928","articleSection":["2014","3\/2014","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/","url":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/","name":"Hover-Effekt f&uuml;r Schaltfl&auml;chen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928","datePublished":"2020-05-22T21:20:24+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/7fb4a0af46d74180a215cedc8982d928"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/HoverEffekt_fuer_Schaltflaechen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Hover-Effekt f&uuml;r Schaltfl&auml;chen"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000933","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000933"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000933\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}