Wenn Sie Formulare nicht aus speziellen Vorlagen oder aus bereits existierenden über Kopien erstellen, so ist einige Fleißarbeit im Entwurf angesagt, bis die Voreinstellungen von Access für neue Formulare durch Ihre eigenen Designvorstellungen ersetzt sind. Das unterbleibt oft, und so fristet auch die unscheinbare Eigenschaft Verschiebbar häufig ein Schattendasein. Schade, denn sie eröffnet ganz neue Gestaltungsmöglichkeiten für Ihre Datenbank!
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1606_FixedForms.accdb.
Verschiebbarkeit deaktivieren
Um unteren Bereich des Eigenschaftenblatts eines Formulars finden Sie den Eintrag Verschiebbar, den Access zunächst auf den Wert Ja einstellt. ändern Sie das auf Nein (siehe Bild 1), so kann das Formular zur Laufzeit weder über Maus und Titelzeile auf dem MDI-Arbeitsbereich von Access verschoben werden, noch über Tastenkombinationen oder Tools. Es bleibt an Ort und Stelle. Das funktioniert auch bei Formularen, bei denen die Eigenschaft Popup auf Ja steht. Popup-Formulare sind eigene Fenster, die nicht der Verwaltung des MDI-Arbeitsbereichs unterliegen, und dennoch kann Access sie anweisen, am Desktop festzukleben. Sie sind etwas schwieriger zu handhaben, weil sie leicht durch andere geöffnete Anwendungen oder Access selbst in den Hintergrund geraten.
Bild 1: Die Eigenschaft Verschiebbar eines Formulars
Das Formular frmFix der Beispieldatenbank öffnet sich gleich nach deren Start (Bild 2). In seinem Code Beim Laden blendet es zusätzlich den Navigationsbereich aus und außerdem den Ribbon. Von Access bleibt somit nur dessen Rahmen und Titelzeile übrig, und im Arbeitsbereich befindet sich das Formular in der linken oberen Ecke, aus der es auch nicht herausgeholt werden kann. Das Formular schaltet nach 5 Sekunden den Ribbon und Navigationsbereich wieder ein, womit sich die Darstellung aus Bild 3 ergibt. Gibt es nützliche Anwendungsgründe für diese Einstellung
Bild 2: Am fixierten Modus des Formulars ändert sich auch bei eingeblendetem Ribbon und Navigationsbereich nichts
Bild 3: Das Formular frmFix ist nicht über dessen Titelleiste verschiebbar
Die in der Regel verschiebbaren Formulare von Access werden spätestens dann unerfreulich, wenn mehrere Formulare in der Oberfläche geöffnet sind. Sie überlappen sich dann unter Umständen, oder ein Maximieren des einen überdeckt das andere. Das kann beim Anwender zu Irritationen führen – vor allem dann, wenn die Daten des einen mit denen das anderen in irgendeiner Weise verknüpft sind. Derlei Missverständnisse räumen Sie aus, wenn Sie Formulare an einem vorbestimmten Ort öffnen lassen und gegebenenfalls nebeneinander oder untereinander positionieren.
Sehr praktisch ist, dass die Eigenschaft Verschiebbar sich auch über VBA steuern lässt (Form.Moveable), und das auch noch zur Laufzeit des Formulars! Sie können also die Modi jederzeit ändern. Das Beispielformular frmFix wartet nach Einblenden des Ribbon nochmals 5 Sekunden und schaltet dann die Eigenschaft Verschiebbar auf Ja, worüber zusätzlich der Schriftzug in ihm informiert:
Me.Moveable = True
Me!LblInfo.Caption = _
"Sie können mich jetzt verschieben!"
Falls Sie interessiert, wie der Code zum Ausblenden von Ribbon und Navigationsbereich aussieht, so sehen Sie sich die Prozedur in Listing 1 an. übergeben Sie keinen Parameter für UnHide, wodurch der Wert der Variablen automatisch False beträgt, so werden die beiden Elemente ausgeblendet. Bei übergabe von True werden sie wieder eingeblendet.
Sub ShowNavigationPane(Optional UnHide As Boolean) On Error Resume Next DoCmd.SelectObject acTable, , True If UnHide Then RunCommand acCmdWindowUnhide DoCmd.ShowToolbar "Ribbon", acToolbarYes Else RunCommand acCmdWindowHide DoCmd.ShowToolbar "Ribbon", acToolbarNo End If End Sub
Listing 1: Ein- und Ausblenden des Ribbon und Navigationsbereichs
Die Routine setzt zunächst den Fokus auf den Navigationsbereich, indem sie die DoCmd-Methode SelectObject aufruft ohne ein Objekt anzugeben. Die RunCommand-Konstante accCmdWindowHide bewirkt allgemein, dass das aktive Fenster in Access ausgeblendet werden soll. Da dies im Moment das eben fokussierte Navigationsfenster ist, verschwindet dieses. Die Konstante accCmdWindowUnhide vollzieht den umgekehrten Vorgang.
Den Ribbon blendet man über die Methode DoCmd.ShowToolbar ein und aus, wobei als Toolbar der Name Ribbon übergeben werden muss, und zusätzlich eine Konstante für den gewünschten Zustand, also entweder acToolbarNo oder acToolbarYes. Die Prozedur können Sie von beliebigem Ort Ihres VBA-Projekt aus aufrufen, und das Formular frmFix tut selbiges in seiner Load-Ereignisprozedur.
Formulare positionieren
Befindet sich ein Formular in nicht verschiebbarem Zustand, so gilt das nur für die manuellen Oberflächeninteraktionen, nicht aber für VBA. Die Methode Move eines Formulars ist weiterhin funktionstüchtig:
Forms("frmFix").Move 0,0, 4000, 3000
oder einfach
Me.Move 0,0, 4000, 3000
Die ersten beiden Parameter der Methode (x, y) geben an, wohin die linke obere Ecke des Formulars wandern soll. Bei normalen Formularen sind diese Werte relativ zum Arbeitsbereich von Access zu verstehen. Bei Popup-Formularen gilt der Desktop als Bezug.
Die beiden weiteren Parameter lassen Größenänderungen des Formulars zu. Hier übergeben Sie die Werte für Breite und Höhe in der Einheit Twips, wobei ein Twip in der Regel 1/15 eines Punkts oder 1/567 eines Zentimeters beträgt. Die angegebene Code-Zeile positioniert also das Formular exakt in die linke obere Ecke und setzt seine Größe neu auf 4000 Twips Breite und 3000 Twips Höhe.
Switchboard
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: