Formularpositionen merken und wiederherstellen

Formulare werden in aller Regel von Access automatisch positioniert und in der Größe angezeigt, in der das Formular zuletzt in der Entwurfsansicht gespeichert wurde. Beides ist nicht immer von Vorteil. Mit wenig Aufwand und ein paar API-Funktionen lässt sich das aber ändern.

Wünschenswert wäre es, dass Formulare beim nächsten Aufruf dort positioniert werden, wo sie sich beim letzten Schließen befanden, und auch ihre Größe beibehalten wird. Das Problem dabei ist, dass Access keine Eigenschaften für ein Formular zur Verfügung stellt, über die Sie die aktuelle Position zur Laufzeit abfragen und/oder setzen können. Auch eine Methode zum Verschieben des Fensters fehlt. Beides müssen Sie durch entsprechende API-Deklarationen ersetzen.

Notwendige Prozeduren und Funktionen

Als Erstes deklarieren Sie die notwendigen APIFunktionen (Listing 1). Diese Deklarationen ergänzt um einen benutzerdefinierten Datentyp erstellen Sie in einem normalen Modul. Dort können Sie auch die Hilfsfunktionen aus Listing 2 einfügen.

Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, _
ByVal x As Long, _
ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, _
lpRect As RECT) As Long
Public Declare Function GetParent Lib "user32" (ByVal _
hwnd As Long) As Long
Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type