Access VBA: Form Größe maximieren

Es kommt vor, dass Formulare bei der Entwicklung auf eine andere Bildschirmgröße abgestimmt sind, als letztendlich der Endanwender vorfinden wird. Hilfreich ist es dann, wenn sich die Fenstergröße automatisch an die Maße des Bildschirmes anpasst.

Hierfür wird im nachfolgenden Quelltext zunächst die Funktionalität, ein Formular zu maximieren, hergestellt. Dann werden die erreichten maximalen Werte für die Dimensionen Höhe und Breite ermittelt und bei Bedarf das Formular jeweils auf maximale Höhe oder maximale Breite gesetzt.

Modul: mod_form_max
Datei: mod_form_max (5).bas


Attribute VB_Name = "mod_form_max"
Option Compare Database

Public max_form_height As Integer
Public max_form_width As Integer

Public Sub set_max_dimensions(frm)
    DoCmd.Maximize
    max_form_height = frm.InsideHeight
    max_form_width = frm.InsideWidth
    DoCmd.Restore
End Sub

Public Sub set_max_window_height(frm)
    If max_form_height = 0 Then: set_max_dimensions frm
    DoCmd.MoveSize , , , max_form_height
End Sub

Public Sub set_max_window_width(frm)
    If max_form_width = 0 Then: set_max_dimensions frm
    DoCmd.MoveSize , , max_form_width
End Sub


Eine sinnvolle Anwendung der Prozeduren set_max_window_height oder set_max_window_width bietet sich dann beim Öffnen-Ereignis eines Formulares der Art:


Private Sub Form_Open(Cancel As Integer)
    mod_form_max.set_max_window_width Me
    mod_form_max.set_max_window_height Me
End Sub


Was mir an dieser Lösung so gefällt, ist der pragmatische Ansatz, einfach das Formular komplett zu maximieren, um dann die maximal möglichen Dimensionen an dem Formular direkt abzulesen, statt z.B. über die Bildschirmauflösung zu gehen und daraus die maximalen Ausmaße zu berechnen. Natürlich kann man sich beim gleichzeitigen Maximieren in beide Richtungen das Hilfsmodul ganz sparen und ausschließlich DoCmd.Maximize aufrufen.