Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2009.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Speichern Sie Position und Größe von Formularen und stellen Sie diese bei erneutem Öffnen wieder her.

Techniken

Formulare

Voraussetzungen

Access 2000 und höher

Beispieldateien

FormularpositionSpeichern.mdb

Shortlink

675

Formularposition speichern und wiederherstellen

André Minhorst, Duisburg

Wer seinen Anwendern eine Freude machen möchte, liefert ihnen eine ergonomische Anwendung. Ein Faktor, der dazu beitragen kann, ist das Speichern der Position und Größe von Elementen der Benutzeroberfläche und das Wiederherstellen beim erneuten Öffnen. Wie das für Formulare funktioniert, zeigt dieser Beitrag.

Die Position eines Formulars speichern und wiederherstellen? Das kann Access doch wohl allein, oder? Nein, kann es nicht: Bestenfalls erscheint das Anwendungsfenster von Access an der gleichen Stelle, wenn Sie es erneut öffnen, aber bei der Anzeige von Formularen müssen Sie schon nachhelfen.

Zunächst einmal gibt es verschiedene Möglichkeiten, die Position eines Formulars grundsätzlich zu beeinflussen.

Die einfachste Variante ist das Einstellen der Eigenschaft Automatisch zentrieren auf den Wert Ja, was dazu führt, dass Access ein Formular nach dem Öffnen in der Mitte des Access-Fensters anzeigt (s. Abb. 1).

pic001.png

Abb. 1: Einstellen der Eigenschaft Automatisch zentrieren

Eine weitere Möglichkeit ist das Maximieren des Formulars gleich nach dem Öffnen. Dazu legen Sie eine Prozedur für das Ereignis Beim Öffnen des Formulars an, die wie folgt aussieht:

Private Sub Form_Open(Cancel As Integer)

    DoCmd.Maximize

    End Sub

Das ist nicht immer praktisch, weil die Maximierung sich auch auf alle anderen, nicht als modaler Dialog geöffneten Elemente wie Formulare und Berichte auswirkt.

Auch die Position und die Größe lässt sich mit einer einzigen Anweisung festlegen, und zwar mit der DoCmd-Methode MoveSize. Die folgende Anweisung etwa schiebt das Formular nach ganz links oben und macht es 5.000 x 5.000 Twips groß:

DoCmd.MoveSize 0,0,5000,5000

Wenn Sie einen oder mehrere Werte nicht angeben, behält das Formular die bestehende Position in x- oder y-Richtung beziehungsweise die Breite oder Höhe bei. Für viele Fälle mag es schon ausreichen, wenn ein neues Fenster nicht irgendwo am Rand erscheint, sondern zentriert oder an einer fest definierten Position angezeigt wird. Das gilt insbesondere für modale Dialoge, deren besondere Eigenschaft es ja ist, keinen Zugriff auf die übrigen Elemente der Benutzeroberfläche zuzulassen, bis das Formular wieder geschlossen wurde.

Ganz anders sieht es aus, wenn Sie ein Formular mit ergänzenden Informationen zum aktuell angezeigten Formular öffnen oder wenn ein weiteres Formular Funktionen liefert, die sich auf bereits geöffnete Elemente der Benutzeroberfläche auswirken.

Ein Beispiel ist ein Dialog, der von einem Formular in der Datenblattansicht aus geöffnet wird und einige Suchfelder für dieses Formular anbietet. Dieses möchte der Benutzer vermutlich so anordnen, dass es die für ihn interessanten Spalten oder Zeilen des Suchergebnisses nicht verdeckt.

Wenn der Benutzer diese Suche oft verwendet, möchte er das Formular sicher nicht jedes Mal wieder verschieben, sodass Sie ihm diese Arbeit abnehmen und die Position beim Schließen speichern und sie beim nächsten Öffnen wiederherstellen.

Der Einfachheit halber verwenden wir zu Beispielzwecken einfache Formulare ohne Anzeige von Daten und ohne Suchfunktion. Das erste Formular namens frmBasis ruft dabei das zweite Formular frmOnTop auf und stellt dieses so ein, dass es immer über dem ersten Formular angezeigt wird, auch wenn es den Fokus verliert. Alle Grundlagen dazu finden Sie im Beitrag Formulare im Blickpunkt (Shortlink 654).

Ganz oben

Damit das Formular frmOnTop immer über dem aufrufenden Formular frmBasis angezeigt wird, der Benutzer aber immer noch auf die Steuerelemente von frmBasis zugreifen kann, sind die folgenden Schritte nötig:

  • Stellen Sie die Eigenschaft Popup des Formulars frmOnTop auf Ja ein.
  • Stellen Sie sicher, dass das Modul mdlOnTop sich in der Anwendung befindet.
  • Fügen Sie frmBasis eine Schaltfläche hinzu, die das Formular frmOnTop mit einer ganz normalen DoCmd.OpenForm-Anweisung öffnet.
  • Fügen Sie frmOnTop eine Ereignisprozedur für das Ereignis Beim Öffnen hinzu und ergänzen Sie diese wie folgt:

Private Sub Form_Open(Cancel As Integer)

    SetWindowOnTop Me.hwnd

    End Sub

Der erste Schritt wäre damit geschafft. Die folgenden Schritte könnten wir zwar auch mit einem ganz normal geöffneten Formular durchführen, aber mit der vorliegenden Konstellation haben Sie gleich die Grundlage für praktische Einsatzzwecke.

Position speichern

Nun soll beim Schließen des Formulars seine Position gespeichert werden. Nur, wohin speichern wir diese? Die Antwort ist nicht ganz trivial und hängt von den Gegebenheiten ab. Falls es sich um eine Desktop-Anwendung für einzelne Arbeitsplätze handelt, schreiben wir die Daten einfach in eine lokale Tabelle.

Wenn es sich um eine Frontend-Backend-Lösung handelt, bei der jeder Benutzer sein eigenes Frontend verwendet, speichern wir die Formularposition in einer Tabelle im Frontend. Eventuell greifen aber auch mehrere Benutzer auf das gleiche Frontend zu und wollen alle individuellen Positionen speichern - hier werden die Daten am besten in einer Tabelle im Backend abgelegt, die gleichzeitig einen Verweis auf den Benutzer speichert.

Wir halten das Beispiel einfach und gehen von der Einzelplatz-Anwendung und der Speicherung der Positionen in einer einfachen Tabelle aus. Diese heißt tblPositionen und besitzt die in Abb. 2 abgebildeten sechs Felder. Legen Sie außerdem einen eindeutigen Index für das Feld Formularname fest, um zu verhindern, dass für ein Formular gleich mehrere Positionen gespeichert werden können (s. Abb. 3).

pic002.png

Abb. 2: Diese Tabelle speichert die Formularpositionen

pic003.png

Abb. 3: Der eindeutige Schlüssel verhindert, dass mehr als eine Position je Formular gespeichert wird.

Die Position soll beim Schließen des Formulars gespeichert werden, also kommt zum Beispiel das Ereignis Beim Schließen infrage. Fügen wir dort also eine Anweisung ein, welche die aktuelle Position des Formulars in einem Datensatz der Tabelle tblFormularpositionen speichert.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Modale Dialoge mal anders

Ereignisse im Eigenbau

Ereignisprozeduren

Validieren mit Klasse

Benutzerverwaltung

Ereignisprozeduren implantieren

Änderungsdaten protokollieren

Transparenz und andere Effekte in Formularen

Meldungsfenster im Eigenbau

Formulare für die Dateneingabe

Unterformulare: Daten anlegen und löschen

Fortschrittsanzeige

Kein Datensatz- und Positionswechsel bei Requery

Zoomfenster im Eigenbau

Datenbank nach Vorlage

Alphabetisches Register

Zugriff auf Formulare

Formulare im Blickpunkt

Projektzeitmanager

Suchformular für die Datenblattansicht

Datumsbereiche auswählen

Excel-Import-Assistent im Eigenbau

Individuelle Datenauswahl

Undo in Formularen und Unterformularen

Validierung von Daten

Konsistente Dateneingabe in Unterformulare

Die Fortschrittsanzeige - geduldigeres Warten

Kontextmenüs von A bis Z

Formulare öffnen

Benutzerdefinierte Formatierung

Listenfeld und Details in einem Formular

TreeView-Elemente im Griff

Auswahlfelder im Ribbon

Vertikale Menüleisten

Navigationsleiste im Eigenbau

Formulare generieren

HTML-Editor-Steuerelement

Google Earth ferngesteuert, Teil II

Anwendungsoptionen in Tabellen speichern

Zugriff auf Daten in Formularen und Steuerelementen

Platzbedarf für Text ermitteln

Tipps und Tricks

Steuerelemente zur Laufzeit verschieben

Standard-Lookupformulare

Suchformularassistent

Formular-Assistenten

Erweitern des VBA-Editors

© 2003-2015 André Minhorst Alle Rechte vorbehalten.