{"id":55000918,"date":"2014-02-01T00:00:00","date_gmt":"2020-05-22T21:18:37","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=918"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Steuerelemente_an_Datenblatt_anpassen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/","title":{"rendered":"Steuerelemente an Datenblatt anpassen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Datenbl&auml;tter sind sehr flexibel, wenn es um die Anzeige tabellarischer Daten geht. Sie k&ouml;nnen die Daten damit sortieren und filtern und die Breite und Sortierung der Spalten anpassen. Gelegentlich platziert man jedoch um ein Unterformular mit einem Datenblatt herum noch weitere Elemente wie etwa Schaltfl&auml;chen oder individuelle Steuerelemente etwa zur Eingabe von Suchbegriffen. Diese sollen sich, wenn der Benutzer die Spalten &auml;ndert, nat&uuml;rlich anpassen. Wie dies gelingt, zeigt der vorliegende Beitrag.<\/b><\/p>\n<p>Ein Anwendungsfall f&uuml;r das Anpassen von Steuerelementen an die Spalten eines Datenblatts ist das Formular aus dem Beitrag <b>Textdateien vergleichen <\/b>(<b>www.access-im-unternehmen.de\/922<\/b>). Dieses zeigt in jeweils drei Spalten im Datenblatt des Unterformulars die Zeilennummer, ein Kontrollk&auml;stchen und den Zeileninhalt der Zeilen einer Datei an (s. Bild 1). Der Benutzer wird hier gelegentlich die Breite der beiden Spalten <b>Datei 1<\/b> und <b>Datei 2 <\/b>ver&auml;ndern, um den kompletten Inhalt einer Zeile lesen zu k&ouml;nnen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_01\/pic_918_001.png\" alt=\"Beispiel f&uuml;r Steuerelemente, die sich auf die Spalten eines Datenblatts im Unterformular beziehen\" width=\"700\" height=\"219,5122\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Beispiel f&uuml;r Steuerelemente, die sich auf die Spalten eines Datenblatts im Unterformular beziehen<\/span><\/b><\/p>\n<p>Wir k&ouml;nnen der Abbildung schon die Vorgaben entnehmen, die wir programmieren m&uuml;ssen: Die Textfelder zur Eingabe des Dateinamens sollen linksb&uuml;ndig mit den Spalten zur Anzeige der Zeilenzahl abschlie&szlig;en. Die Schaltfl&auml;chen sollen rechtsb&uuml;ndig mit der Spalte zur Anzeige der Zeileninhalte abschlie&szlig;en. Die Schaltfl&auml;chen haben eine feste Breite. Die Breite der Textfelder zur Eingabe der  Dateinamen orientiert sich an der Gesamtbreite der drei Spalten minus der Breite der Schaltfl&auml;che zur Auswahl der Textdatei.<\/p>\n<p>Bild 2 zeigt, wie das Formular nach dem Vergr&ouml;&szlig;ern etwa der Spalten zur Anzeige der Spalteninhalte aussieht. Wie man sieht, ist eine dynamische Anpassung der dar&uuml;ber angeordneten Steuerelemente aus optischen Gr&uuml;nden dringend erforderlich. Was ist zu tun Wir m&uuml;ssen erstens ein Ereignis identifizieren, das durch das &auml;ndern der Spaltenbreiten ausgel&ouml;st wird. Zweitens m&uuml;ssen wir die Breiten ermitteln und definieren, wie die Breite der Steuerelemente im Hauptformular in Abh&auml;ngigkeit davon eingestellt wird. Drittens &#8211; und das ist sehr wichtig &#8211; m&uuml;ssen wir in diesem Fall verhindern, dass der Benutzer die Reihenfolge der Spalten &auml;ndert. Das w&uuml;rde unsere Regeln f&uuml;r die Einstellung der Breite der Steuerelemente im Hauptformular empfindlich st&ouml;ren. In anderen Anwendungsf&auml;llen, wo etwa jeweils ein Steuerelemente im Hauptformular einer Spalte im Unterformular zugeordnet ist, sieht das anders aus &#8211; hier erh&auml;lt einfach jedes Steuerelement die Position und die Breite der jeweils zugeordneten Spalte im Datenblatt des Unterformulars.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_01\/pic_918_002.png\" alt=\"Nach dem &auml;ndern der Spaltenbreiten befinden sich die Steuerelemente im Hauptformular nicht mehr exakt &uuml;ber den Spalten.\" width=\"700\" height=\"170,7479\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Nach dem &auml;ndern der Spaltenbreiten befinden sich die Steuerelemente im Hauptformular nicht mehr exakt &uuml;ber den Spalten.<\/span><\/b><\/p>\n<p><b>Ereignis identifizieren<\/b><\/p>\n<p>Als Erstes wollen wir herausfinden, &uuml;ber welches Ereignis wir &uuml;berhaupt auf &auml;nderungen der Position oder Breite der Spalten reagieren k&ouml;nnen. Dazu betrachten wir zun&auml;chst die Liste der Ereigniseigenschaften des Unterformulars. Wie &auml;ndert der Benutzer &uuml;berhaupt die Breite oder Position von Spalten im Datenblatt Dies ist nur mit der Maus m&ouml;glich: Zum &auml;ndern der Reihenfolge der Spalten klickt der Benutzer zun&auml;chst den Spaltenkopf der zu verschiebenden Spalte an und zieht diesen dann bei gedr&uuml;ckter Maustaste an die gew&uuml;nschte Position. &auml;hnlich sieht es beim Anpassen der Spaltenbreiten aus: Hier dr&uuml;ckt der Benutzer die Maustaste herunter, wenn sich der Mauszeiger &uuml;ber einem der Zwischenr&auml;ume zwischen zwei Spaltenk&ouml;pfen befindet und zieht den Zwischenraum an die gew&uuml;nschte Position. Eine weitere M&ouml;glichkeit ist ein Doppelklick auf den Zwischenraum zwischen zwei Spaltenk&ouml;pfen, um die optimale Breite der Spalte entsprechend den Inhalten einzustellen.<\/p>\n<p>Die Mausbewegungen und Mausklicks l&ouml;sen grunds&auml;tzlich die Ereignisse <b>Bei Mausbewegung<\/b>, <b>Bei Maustaste ab <\/b>und <b>Bei Maustaste auf <\/b>aus. Aber es gibt einige dieser Ereignisse in einem Formular: f&uuml;r das Formular selbst, f&uuml;r die einzelnen Bereiche und auch f&uuml;r jedes einzelne Steuerelement.<\/p>\n<p>Um herauszufinden, ob die Ereignisse eines dieser Bereiche f&uuml;r uns hilfreich sind, m&uuml;ssen wir experimentieren. Dazu legen wir einfach entsprechende Ereignisprozeduren an und schauen, welches Ereignis wann ausgel&ouml;st wird.<\/p>\n<p>Welche Kandidaten wollen wir untersuchen Wir nehmen uns die drei Ereignisse des Formulars selbst, des Detailbereichs (da keine anderen Bereiche f&uuml;r das Unterformular definiert wurden) und, als Beispiel f&uuml;r eines der Steuerelemente, das Textfeld <b>Datei1<\/b>.<\/p>\n<p>Die Programmierung der Ereignisprozeduren finden Sie in Listing 1.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Datei1_MouseDown(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;\">Debug.Print<\/span> \"Datei1_MouseDown\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Datei1_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;\">Debug.Print<\/span> \"Datei1_MouseMove\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Datei1_MouseUp(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;\">Debug.Print<\/span> \"Datei1_MouseUp\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Detailbereich_MouseDown(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;\">Debug.Print<\/span> \"Detailbereich_MouseDown\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<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>, X<span style=\"color:blue;\"> As Single<\/span>, Y<span style=\"color:blue;\"> As Single<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"Detailbereich_MouseMove\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Detailbereich_MouseUp(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;\">Debug.Print<\/span> \"Detailbereich_MouseUp\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_MouseDown(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;\">Debug.Print<\/span> \"Form_MouseDown\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_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;\">Debug.Print<\/span> \"Form_MouseMove\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_MouseUp(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;\">Debug.Print<\/span> \"Form_MouseUp\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozeduren zum Ermitteln des Ereignisses zum Abfangen von Spalten&auml;nderungen<\/span><\/b><\/p>\n<p>Nun pr&uuml;fen wir, welches Mausbewegung welches Ereignis ausl&ouml;st. Dazu positionieren Sie das Access-Fenster mit dem zu untersuchenden Formular und das VBA-Fenster nebeneinander. Wenn Sie dann mit der Maus &uuml;ber die Spaltenk&ouml;pfe des Unterformulars fahren, sollte sich etwas im Direktbereich des VBA-Editors tun. Wenn Sie nun noch beispielsweise die Breite einer Spalte durch Anklicken und Ziehen des Zwischenraums zwischen den Spaltenk&ouml;pfen &auml;ndern, sollte das Ergebnis im Direktfenster etwa wie in Bild 3 aussehen. Bingo &#8211; wir ben&ouml;tigen die Ereignisse <b>Bei Maustaste ab<\/b>, <b>Bei Mausbewegung <\/b>und <b>Bei Maustaste auf<\/b>, um das &auml;ndern der Spaltenbreiten zu ermitteln.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_01\/pic_918_003.png\" alt=\"Ereignisse im Direktbereich des VBA-Editors\" width=\"450\" height=\"234,7512\" \/><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Ereignisse im Direktbereich des VBA-Editors<\/span><\/b><\/p>\n<p><b>Wann sollen die Steuerelemente angepasst werden<\/b><\/p>\n<p>Nachdem wir die passenden Ereignisse identifiziert haben, schauen wir uns an, zu welchen Zeitpunkten die Steuerelemente im Hauptformular an die Spalten im Unterformular angepasst werden sollen. Dies ist immer dann der Fall, wenn der Benutzer die Maustaste auf den Spaltenk&ouml;pfen gedr&uuml;ckt hat und den Mauszeiger bewegt. Wenn er ihn wieder losl&auml;sst, soll nichts mehr geschehen.<\/p>\n<p>Bei einer naiven Herangehensweise verwenden wir nur das Ereignis <b>Bei Mausbewegung<\/b>: Immerhin bietet das mit dem Parameter <b>button <\/b>die M&ouml;glichkeit zu ermitteln, ob und welche Maustaste der Benutzer beim Bewegen der Maus gedr&uuml;ckt h&auml;lt. Leider liefert und dies allerdings keine Information dar&uuml;ber, wann der Benutzer die Maustaste heruntergedr&uuml;ckt hat. Um zu pr&uuml;fen, ob der Mauszeiger auf einem der Spaltenk&ouml;pfe heruntergedr&uuml;ckt und dann bewegt wurde, bedienen wir uns einer <b>Boolean<\/b>-Variablen namens <b>bolMausGedrueckt<\/b>, die beim Eintreten des Ereignisses <b>Bei Maustaste ab <\/b>des Formulars auf den Wert <b>True <\/b>eingestellt wird. In der Prozedur, die durch das Ereignis <b>Bei Mausbewegung <\/b>ausgel&ouml;st wird, pr&uuml;fen wir nun, ob <b>bolMausGedrueckt <\/b>den Wert <b>True <\/b>hat. In diesem Fall wurde der Mauszeiger auf einem der Spaltenk&ouml;pfe niedergedr&uuml;ckt und bewegt.<\/p>\n<p>Wenn der Benutzer die Maustaste wieder losl&auml;sst, soll die Variable <b>bolMausGedrueckt <\/b>wieder auf den Wert <b>False <\/b>eingestellt werden. Unsere aktuelle Konfiguration sieht also nun wie in Listing 2 aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_MouseDown(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     bolMausGedrueckt = <span style=\"color:blue;\">True<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_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>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">Debug.Print<\/span> \"Ziehen der Spalten\", Button, Shift, X, Y\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_MouseUp(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     bolMausGedrueckt = <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: Das Ereignis Form_MouseMove soll nur reagieren, wenn die Maustaste gedr&uuml;ckt wurde.<\/span><\/b><\/p>\n<p>Wenn wir dies nun testen, kommt es darauf an, alle m&ouml;glichen Verhaltensweisen zu erfassen &#8211; denken Sie daran: Der Benutzer deckt alle Schwachstellen auf! Also bem&uuml;hen wir uns lieber gleich selbst, dies zu erledigen. Experimentieren Sie: Klicken Sie doppelt auf die Spaltenk&ouml;pfe, ziehen Sie bei gedr&uuml;ckter Maustaste, bewegen Sie die Maus ohne gedr&uuml;ckte Maustaste &#8211; es funktioniert! Ups, doch nicht: Da bin ich doch aus Versehen bei gedr&uuml;ckter Maustaste von der Zeile der Spaltenk&ouml;pfe abgekommen und habe erst dort die Maustaste losgelassen. Das hei&szlig;t, dass die Variable <b>bolMausGedrueckt <\/b>nicht wieder auf den Wert <b>False <\/b>eingestellt wird. Das ist ung&uuml;nstig, weil die Prozedur <b>Form_MouseMove <\/b>so beim n&auml;chsten &uuml;berfahren gleich davon ausgeht, dass wir die Maustaste bereits gedr&uuml;ckt haben.<\/p>\n<p>Wir ben&ouml;tigen also doch noch die Maus-Ereignisse anderer Elemente des Formulars, um die Variable <b>bolMausGedrueckt<\/b> auf False zu setzen, wenn sich der Mauszeiger auf einem anderen Element als einem der Spaltenk&ouml;pfe befindet und die Maustaste bereits wieder losgelassen wurde. Dazu m&uuml;ssen wir zun&auml;chst herausfinden, welche Elemente  des Formulars davon betroffen sein k&ouml;nnten. Wir f&uuml;gen also dem Detailbereich und dem Textfeld <b>Datei1 <\/b>(stellvertretend f&uuml;r die &uuml;brigen Steuerelemente des Datenblatts) wieder Ereignisprozeduren hinzu, die durch die drei Maus-Ereignisse ausgel&ouml;st werden. Diese enthalten nun Anweisungen wie die folgenden:<\/p>\n<pre><span style=\"color:blue;\">If <\/span>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"Datei1_MouseDown\"\r\n<span style=\"color:blue;\">End If<\/span><\/pre>\n<p>Wir wollen also immer, wenn der Benutzer au&szlig;erhalb der Spaltenk&ouml;pfe die Maustaste losl&auml;sst, eine entsprechende Ausgabe im Direktbereich bewirken.<\/p>\n<p>Das Ergebnis ist, dass wir allen Steuerelementen des Datenblatts eine Ereignisprozedur mitgeben m&uuml;ssen, welche die Variable <b>bolMausGedrueckt <\/b>auf <b>False<\/b> einstellt, wenn der Benutzer die Maustaste &uuml;ber einem der Steuerelemente losl&auml;sst.<\/p>\n<p>In unserem Beispiel ist die Anzahl der Steuerelemente im Unterformular &uuml;berschaubar &#8211; es sind nur sechs St&uuml;ck. F&uuml;r diese k&ouml;nnen wir die notwendigen Ereignisprozeduren, jeweils ausgel&ouml;st durch das Ereignis <b>Bei Maustaste auf<\/b>, von Hand anlegen. Eines davon sieht etwa wie in Listing 3 aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Datei1_MouseUp(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>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n         bolMausGedrueckt = <span style=\"color:blue;\">False<\/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 3: Einstellen der Variablen bolMausGedrueckt auf den Wert False.<\/span><\/b><\/p>\n<p>Fehlt noch der Fall, dass der Benutzer die Maustaste auf einem der Spaltenk&ouml;pfe niederdr&uuml;ckt und dann den Mauszeiger au&szlig;erhalb des Unterformulars mit der Datenblattansicht positioniert, bevor er die Maustaste losl&auml;sst. F&uuml;r diesen Fall hat Microsoft ein f&uuml;r uns g&uuml;nstiges Verhalten definiert: Dies l&ouml;st dann einfach das Ereignis <b>Form_MouseUp <\/b>des Unterformulars aus, wo als ob der Mauszeiger dieses nie verlassen h&auml;tte.<\/p>\n<p><b>St&auml;ndiges Anpassen<\/b><\/p>\n<p>Nun stellt sich die Frage, ob wir wirklich bei jedem Feuern des Ereignisses <b>Form_MouseMove <\/b>die Steuerelemente anpassen m&uuml;ssen, wenn <b>bolMausGedrueckt <\/b>den Wert <b>True <\/b>hat. Flackert das nicht zu sehr Hier zeigt sich mal wieder, wie wenig man (in diesem Fall zumindest ich) auf Details achtet: Die Breite eines Spaltenkopfes &auml;ndert sich n&auml;mlich gar nicht w&auml;hrend des Ziehens mit der Maus, sondern erst, wenn der Benutzer diese losl&auml;sst! Wir brauchen also nur das Ereignis <b>Bei Maustaste auf <\/b>zu untersuchen!<\/p>\n<p><b>Steuerelemente anpassen<\/b><\/p>\n<p>In diesem Ereignis bringen wir nun den Aufruf der Prozedur unter, die sich um das Anpassen der Steuerelemente k&uuml;mmert. Dies sieht dann wie in Listing 4 aus.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_MouseUp(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>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n         SteuerelementeAnpassen\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     bolMausGedrueckt = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Die Steuerelemente werden nur beim Loslassen der Maustaste angepasst.<\/span><\/b><\/p>\n<p>Das Ereignis <b>Form_MouseMove <\/b>kann komplett entfallen!<\/p>\n<p>Die Prozedur <b>SteuerelementeAnpassen <\/b>deklariert zwei Variablen f&uuml;r die Breite der ersten und der zweiten drei Spalten sowie eine Variable zum Referenzieren des &uuml;bergeordneten Hauptformulars (s. Listing 5). Diese f&uuml;llt die Prozedur mit einem Verweis auf das Hauptformular (<b>Me.Parent<\/b>). Danach ermittelt die Prozedur die Breite der ersten drei Spalten des Unterformulars. Zum Ermitteln der Breite einer einzelnen Spalte verwendet sie dabei die Eigenschaft <b>ColumnWidth <\/b>des jeweiligen Steuerelements. Dies liefert, im Gegensatz zur Eigenschaft <b>Width<\/b>, nicht die Breite des Steuerelements, wie Sie es in der Entwurfsansicht angelegt haben, sondern die aktuelle Breite der Spalte in der Datenblattansicht des Unterformulars. Auf diese Weise addiert die Prozedur die Breite der ersten drei Steuerelemente und speichert diese in der Variablen <b>lngWidth1<\/b>. Der gleiche Vorgang wird analog f&uuml;r die zweiten drei Steuerelemente durchgef&uuml;hrt, das Ergebnis landet in <b>lngWidth2<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SteuerelementeAnpassen()\r\n     <span style=\"color:blue;\">Dim <\/span>lngWidth1<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>lngWidth2<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Form\r\n     <span style=\"color:blue;\">Set<\/span> frm = Me.Parent\r\n     lngWidth1 = Me.Controls(\"ZeileDatei1\").ColumnWidth + Me.Controls(\"Datei1\").ColumnWidth _\r\n         + Me.Controls(\"Uebernehmen1\").ColumnWidth\r\n     lngWidth2 = Me.Controls(\"ZeileDatei2\").ColumnWidth + Me.Controls(\"Datei2\").ColumnWidth _\r\n         + Me.Controls(\"Uebernehmen2\").ColumnWidth\r\n     frm!cmdDatei1.<span style=\"color:blue;\">Left<\/span> = lngWidth1 - frm!cmdDatei1.Width + frm!txtDatei1.<span style=\"color:blue;\">Left<\/span> - 25\r\n     frm!txtDatei1.Width = lngWidth1 - frm!cmdDatei1.Width - 50\r\n     frm!txtDatei2.<span style=\"color:blue;\">Left<\/span> = frm!cmdDatei1.<span style=\"color:blue;\">Left<\/span> + frm!cmdDatei1.Width + 50\r\n     frm!txtDatei2.Width = lngWidth2 - frm!cmdDatei2.Width - 50\r\n     frm!cmdDatei2.<span style=\"color:blue;\">Left<\/span> = lngWidth2 - frm!cmdDatei2.Width + frm!txtDatei2.<span style=\"color:blue;\">Left<\/span> - 25\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Anpassen der Steuerelemente<\/span><\/b><\/p>\n<p>Danach stellt die Prozedur die Breite des Textfeldes <b>txtDatei1 <\/b>ein. Dazu f&uuml;llt sie die Eigenschaft <b>Width <\/b>mit einem Wert, welcher der Breite der ersten drei Spalten des Unterformulars minus der Breite der rechts vom Textfeld zu platzierenden Schaltfl&auml;che entspricht.<\/p>\n<p>Au&szlig;erdem ziehen wir weitere 50 Twips ab, damit wir erstens einen Abstand zwischen Textfeld und Schaltfl&auml;che erhalten und zweitens mit der folgenden Anweisung einen Abstand zwischen der Schaltfl&auml;che und dem folgenden Textfeld einrichten k&ouml;nnen.<\/p>\n<p>Die Position der Schaltfl&auml;che <b>cmdDatei1 <\/b>berechnen wir, indem wir von der Breite der linken drei Spalten des Datenblatts die Breite der Schaltfl&auml;che abziehen, den Abstand vom Textfeld vom linken Formularrand hinzuaddieren und 25 Twips abziehen, damit wir noch einen kleinen Abstand zum folgenden Textfeld erhalten.<\/p>\n<p>F&uuml;r die linken beiden Steuerelemente fehlt noch die Breite des Textfeldes <b>txtDatei1<\/b>. Diese richtet sich nach der Breite der drei zu &uuml;berdeckenden Spalten minus der Breite der Schaltfl&auml;che minus 50 Twips.<\/p>\n<p>Nun ermittelt die Prozedur die Position und die Breite der Steuerelemente <b>txtDatei2 <\/b>und <b>cmdDatei2<\/b>. txtDatei hat einen Abstand zum linken Formularrand, der sich aus dem Abstand der Schaltfl&auml;che <b>cmdDatei1 <\/b>vom linken Rand plus der Breite der Schaltfl&auml;che plus 50 Twips ergibt.<\/p>\n<p>Die Breite berechnen wir &uuml;ber die Breite der linken drei Spalten des Datenblatts minus der Breite der Schaltfl&auml;che minus 50 Twips, den Abstand der Schaltfl&auml;che <b>cmdDatei2 <\/b>vom linken Rand analog zu <b>cmdDatei1<\/b>.<\/p>\n<p>Das Ergebnis sehen Sie in Bild 4 &#8211; die Steuerelemente werden nun korrekt ausgerichtet.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_01\/pic_918_004.png\" alt=\"Formular mit Steuerelementen, die an die Spaltenbreiten angepasst sind\" width=\"700\" height=\"252,422\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Formular mit Steuerelementen, die an die Spaltenbreiten angepasst sind<\/span><\/b><\/p>\n<p><b>Drunter und dr&uuml;ber<\/b><\/p>\n<p>Nachdem wir nun f&uuml;r die Spaltenk&ouml;pfe eine Prozedur implementiert haben, die nur auf das Loslassen der Maus auf dem Formular (<b>Form_MouseUp<\/b>) reagiert, m&uuml;ssen wir dies noch f&uuml;r die Steuerelemente des Datenblatts umsetzen.<\/p>\n<p>Es kann immer noch geschehen, dass der Benutzer zwar ein Ziehen mit der Maus auf einem der Spaltenk&ouml;pfe beginnt, dann aber nach unten f&auml;hrt und erst dort losl&auml;sst.<\/p>\n<p>Auch in diesem Fall m&uuml;ssen die Steuerelemente beim Eintreten des <b>MouseUp<\/b>-Ereignisses angepasst werden.<\/p>\n<p>Deshalb lagern wir die notwendigen Anweisungen von der Ereignisprozedur <b>Form_MouseUp <\/b>zun&auml;chst in eine eigene Prozedur aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>MouseUp()\r\n     <span style=\"color:blue;\">If <\/span>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n         SteuerelementeAnpassen\r\n         ReihenfolgeWiederherstellen\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     bolMausGedrueckt = <span style=\"color:blue;\">False<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dann f&uuml;gen wir diesen Aufruf in alle relevanten Ereisnisprozeduren ein, also:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Datei1_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Datei2_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Uebernehmen1_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Uebernehmen2_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>ZeileDatei1_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>ZeileDatei2_MouseUp(...)\r\n     MouseUp\r\n<span style=\"color:blue;\">End Sub<\/span> <\/pre>\n<p><b>Reihenfolge blockieren<\/b><\/p>\n<p>F&uuml;r das vorliegende Datenblatt ist es sinnvoll, die Reihenfolge der Spalten beizubehalten. Deshalb f&uuml;gen wir noch eine Funktion hinzu, die verhindert, dass der Benutzer die Reihenfolge der Spalten &auml;ndert. Die Prozedur funktioniert ganz simpel: Sie stellt ganz einfach die Eigenschaft <b>ColumnOrder <\/b>der sechs Spalten auf die der Reihenfolge entsprechenden Zahlenwerte ein:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>ReihenfolgeWiederherstellen()\r\n     Me!ZeileDatei1.ColumnOrder = 1\r\n     Me!Uebernehmen1.ColumnOrder = 2\r\n     Me!Datei1.ColumnOrder = 3\r\n     Me!ZeileDatei2.ColumnOrder = 4\r\n     Me!Uebernehmen2.ColumnOrder = 5\r\n     Me!Datei2.ColumnOrder = 6\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Den Aufruf dieser Prozedur f&uuml;gen wir der Routine <b>Form_MouseUp <\/b>hinzu:<\/p>\n<pre>...\r\n<span style=\"color:blue;\">If <\/span>bolMausGedrueckt<span style=\"color:blue;\"> Then<\/span>\r\n     SteuerelementeAnpassen\r\n     ReihenfolgeWiederherstellen\r\n<span style=\"color:blue;\">End If<\/span>\r\n...<\/pre>\n<p>Dies sorgt daf&uuml;r, dass jedes Mal, wenn der Benutzer die Breite oder Position der Spalten ver&auml;ndern will und danach die Maustaste losl&auml;sst, die Reihenfolge auf den Ausgangszustand zur&uuml;ckgesetzt wird.<\/p>\n<p>Der Benutzer kann so zwar eine Spalte an eine andere Position zwischen zwei anderen Spalten ziehen, aber diese springt dann direkt wieder an ihre Ausgangsposition zur&uuml;ck.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Wenn Sie die Position und die Breite von Steuerelementen individuell an die Spalten eines darunter oder dar&uuml;ber befindlichen Datenblatts anpassen m&ouml;chten, finden Sie im vorliegenden Beitrag die passenden Techniken.<\/p>\n<p>Au&szlig;erdem hat der Beitrag gezeigt, wie Sie verhindern k&ouml;nnen, dass der Benutzer die Reihenfolge der Spaltenk&ouml;pfe manuell &auml;ndert. Im vorliegenden Beispiel ist zwar das &auml;ndern der Breite der einzelnen Spalten zul&auml;ssig, die Reihenfolge muss jedoch beibehalten werden.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>SteuerelementeAnDatenblattAnpassen.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{C8C4D899-0E8C-40F8-A60D-F909DC9D6FB7}\/aiu_918.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Datenbl&auml;tter sind sehr flexibel, wenn es um die Anzeige tabellarischer Daten geht. Sie k&ouml;nnen die Daten damit sortieren und filtern und die Breite und Sortierung der Spalten anpassen. Gelegentlich platziert man jedoch um ein Unterformular mit einem Datenblatt herum noch weitere Elemente wie etwa Schaltfl&auml;chen oder individuelle Steuerelemente etwa zur Eingabe von Suchbegriffen. Diese sollen sich, wenn der Benutzer die Spalten &auml;ndert, nat&uuml;rlich anpassen. Wie dies gelingt, zeigt der vorliegende Beitrag.<\/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":[66012014,662014,44000023],"tags":[],"class_list":["post-55000918","post","type-post","status-publish","format-standard","hentry","category-66012014","category-662014","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>Steuerelemente an Datenblatt anpassen - 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\/Steuerelemente_an_Datenblatt_anpassen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Steuerelemente an Datenblatt anpassen\" \/>\n<meta property=\"og:description\" content=\"Datenbl&auml;tter sind sehr flexibel, wenn es um die Anzeige tabellarischer Daten geht. Sie k&ouml;nnen die Daten damit sortieren und filtern und die Breite und Sortierung der Spalten anpassen. Gelegentlich platziert man jedoch um ein Unterformular mit einem Datenblatt herum noch weitere Elemente wie etwa Schaltfl&auml;chen oder individuelle Steuerelemente etwa zur Eingabe von Suchbegriffen. Diese sollen sich, wenn der Benutzer die Spalten &auml;ndert, nat&uuml;rlich anpassen. Wie dies gelingt, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:18:37+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69\" \/>\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=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Steuerelemente an Datenblatt anpassen\",\"datePublished\":\"2020-05-22T21:18:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/\"},\"wordCount\":2496,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/e682cd625dba4aa7b3d7d0d72a76ae69\",\"articleSection\":[\"1\\\/2014\",\"2014\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/\",\"name\":\"Steuerelemente an Datenblatt anpassen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/e682cd625dba4aa7b3d7d0d72a76ae69\",\"datePublished\":\"2020-05-22T21:18:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/e682cd625dba4aa7b3d7d0d72a76ae69\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/e682cd625dba4aa7b3d7d0d72a76ae69\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Steuerelemente_an_Datenblatt_anpassen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Steuerelemente an Datenblatt anpassen\"}]},{\"@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":"Steuerelemente an Datenblatt anpassen - 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\/Steuerelemente_an_Datenblatt_anpassen\/","og_locale":"de_DE","og_type":"article","og_title":"Steuerelemente an Datenblatt anpassen","og_description":"Datenbl&auml;tter sind sehr flexibel, wenn es um die Anzeige tabellarischer Daten geht. Sie k&ouml;nnen die Daten damit sortieren und filtern und die Breite und Sortierung der Spalten anpassen. Gelegentlich platziert man jedoch um ein Unterformular mit einem Datenblatt herum noch weitere Elemente wie etwa Schaltfl&auml;chen oder individuelle Steuerelemente etwa zur Eingabe von Suchbegriffen. Diese sollen sich, wenn der Benutzer die Spalten &auml;ndert, nat&uuml;rlich anpassen. Wie dies gelingt, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:18:37+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Steuerelemente an Datenblatt anpassen","datePublished":"2020-05-22T21:18:37+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/"},"wordCount":2496,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69","articleSection":["1\/2014","2014","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/","url":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/","name":"Steuerelemente an Datenblatt anpassen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69","datePublished":"2020-05-22T21:18:37+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/e682cd625dba4aa7b3d7d0d72a76ae69"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Steuerelemente_an_Datenblatt_anpassen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Steuerelemente an Datenblatt anpassen"}]},{"@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\/55000918","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=55000918"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000918\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}