window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Navigieren über Formulartricks

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Die Voreinstellungen, die Access für ein neues Formular im Entwurf anbietet, sind für die üblichen Standardmasken in Anwendungen sicher sinnvoll. Durch Modifikation dieser Einstellungen bieten Formulare aber noch ganz andere Möglichkeiten – so etwa zu Navigationszwecken, wie in der hier vorgestellten Lösung.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1504_Formulartricks.accdb

Formulareinstellungen

Erzeugen Sie ein neues leeres Formular in Ihrer Datenbank, so versieht Access es mit Standardeinstellungen für das Layout und Format. Unter Access 2010 sind diese im Eigenschaftenblatt des Entwurfs zu finden (Bild 1). Da es einige Mühe macht, diese Einstellungen jeweils neu anzupassen, finden Sie sie so auch in vielen Datenbanken wieder. Nehmen wir aber einmal einige der wichtigsten Elemente genauer unter die Lupe.

Diese Einstellungen für das Layout spendiert Access 2010 einem neuen Formular

Bild 1: Diese Einstellungen für das Layout spendiert Access 2010 einem neuen Formular

Grundsätzlich ist die Standardansicht auf Einzelnes Formular gestellt. Das dürfte auch der am häufigsten gebrauchte Typ sein. Fraglich ist, ob die anderen Ansichtstypen wirklich zugelassen sein sollten. Wer braucht schon in einer Adressenverwaltung die Pivot-Ansichten Erst recht gilt dies für die ab Access 2007 eingeführte Layoutansicht mit ihrer Mischung aus Entwurf und Formularansicht, die bis auf seltene Fälle eher der Entwicklungsphase vorbehalten sein dürfte. Die Endlosansicht jedoch wird immer wieder gebraucht.

Dass Automatisch zentrieren auf Nein steht, ist dem Standardverhalten von Fenstern in MDI-Anwendungen unter Windows geschuldet: öffnen Sie mehrere Formulare gleichzeitig, so werden diese versetzt auf dem Arbeitsbereich positioniert, so dass auf alle zugegriffen werden kann. Selten sind Access-Formulare jedoch so klein, dass mehrere davon auf dem Bildschirm Platz hätten. Für größere Formulare stellen Sie die Zentrierung auf dem Bildschirm also auf Ja.

Datensatzmarkierer und Navigationsschaltflächen sind ebenfalls immer aktiviert. Während die Navigationsschaltflächen sicher nützlich sind, wenn das Formular nicht nur zur Eingabe oder Anzeige eines einzigen Datensatzes ausgelegt ist, so ist der Datensatzmarkierer in produktiven Anwendungen wieder fraglich. In der Formularansicht erkennen viele Anwender nicht, wofür er da ist, und eine Fehlbedienung durch versehentliches Betätigen der Entfernen-Taste bei markiertem Datensatz kommt immer wieder vor. In Formularen, wie dem Switchboard der Beispieldatenbank zum Beitrag, sind alle beide überflüssig.

Dass ein Formular eine Schließen-Schaltfläche aufweist, ist immer dann erforderlich, wenn Sie es nicht per VBA entladen möchten. MinMaxSchaltflächen hingegen braucht man in der Regel nicht. Formulare sind üblicherweise auf eine bestimmte Größe designet, so dass ein Maximieren keinen Vorteil bringt. Damit wären wir auch schon bei der Einstellung für die Rahmenart, die im Standard auf Veränderbar steht. Sie können es dann zur Laufzeit mit der Maus in der Größe ändern. In der Formularansicht ist auch das nicht notwendig. Eher verwenden Sie hier die Einstellungen Dialog oder Dünn, die zum gleichen Ergebnis führen: Die Titelleiste des Fensters ist sichtbar – und damit auch die Schließen-Schaltfläche -, die Abmessungen lassen sich aber nicht per Maus ändern. Schalten Sie den Modus Keine für die Rahmenart ein, so verschwindet die Titelleiste komplett. Das Formular kann dann nur per VBA geschlossen werden. Das Formular frmIntro der Beispieldatenbank, ein Splash-Screen, etwa macht davon Gebrauch. Erst ein Klick auf den Detailbereich des Formulars löst eine Ereignisprozedur aus, die das Formular über DoCmd.Close entlädt.

Interessant, aber wenig beachtet, ist die Eigenschaft Verschiebbar eines Formulars. Normalerweise können Sie es zur Laufzeit mit der Maus über die Titelleiste an die gewünschte Position ziehen. Ist Verschiebbar deaktiviert, so ist dies jedoch in keiner Ansichts- oder Rahmenart mehr möglich. Das Formular bleibt fest im Arbeitsbereich angepinnt. Dennoch können Sie es über VBA und die Methode Move bewegen, doch dazu später mehr.

Die Bildlaufleisten sind im Standard zwar eingeschaltet, aber in der Formularansicht bis auf Ausnahmefälle unnötig. Das wären Formulare, deren Inhalt so umfangreich ist, dass er nicht auf den Bildschirm passt und nur über Scrollen erreicht werden kann. Im Interesse von guter Ergonomie ist ein solches Verhalten weniger.

Ein Teil der Formulareinstellungen schließlich ist gar nicht im jeweiligen Eigenschaftenblatt zu finden, sondern in den Optionen der Datenbank. Klicken Sie im Ribbon auf Datei | Optionen und wählen die Abteilung Aktuelle Datenbank aus. Ein Ausschnitt der Einstellungen ist hier in Bild 2 zu sehen. überlappende Fenster ist der übliche MDI-Modus, wie Sie ihn aus anderen Mehrfensteranwendungen kennen. Das Registerkartenformat jedoch führt zu einer Anordnung der Fenster mit Tabs. Die Einstellung Automatisch zentrieren eines Formulars etwa wird damit ignoriert, denn es bleibt immer oben am Arbeitsbereich angeheftet. Ebenso lässt sich hier auch die Layoutansicht deaktivieren, was der entsprechenden Eigenschaft Layoutansicht zulassen eines Formulars übergeordnet ist.

Formulareinstellungen in den Optionen der Datenbank

Bild 2: Formulareinstellungen in den Optionen der Datenbank

Nicht verschiebbare Fenster

Ist die Eigenschaft Verschiebbar eines Formulars auf Nein gesetzt, so bleibt es zur Laufzeit, wie erwähnt, an einer festen Position angenagelt. Selbst mit einer Titelleiste ausgestattet reagiert es nicht auf ein Ziehen mit der Maus. Das eröffnet die Möglichkeit, mehrere Formulare nach Belieben auf dem Arbeitsbereich zu positionieren, ohne dass sie sich überlappen oder der Anwender die Anordnung beeinflussen kann.

Wie aber bringt man ein Formular an die gewünschte Stelle Dazu sieht VBA die recht einfache Methode Move vor, die übrigens nicht nur die Formularklassen, sondern auch alle Steuerelemente aufweisen:

Form1.Move Links, Oben, Breite, Höhe

Der Clou der Anweisung besteht darin, dass sämtliche Parameter optional sind. Um ein Fenster etwa 100 Pixel vom linken Rand des Arbeitsbereichs unterzubringen, setzten Sie einfach dies ab:

Form1.Move  100*15

Der Faktor 15 übersetzt hier die Pixelmaße in die Twips-Einheiten, welche Access immer erwartet. Soll das Formular oben bündig abschließen, so genügt ein

Form1.Move 100*15, 0

Und sollen Breite und Höhe zusätzlich vorgegeben werden, käme diese Anweisung infrage:

Form1.Move 1500, 0, 400*15, 300*15

Diese Methode können Sie etwa im Beim Laden-Ereignis (Form_Load) absetzen, aber auch an jeder anderen Stelle des Formular-Codes.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar