Formulare fⁿr verschiedene Bildschirm-Aufl÷sungen

Ich habe ein Access-Formular mit einer Bildschirmaufl÷sung von 800 x 600 Punkten entworfen. Wird das Formular aber auf einem Monitor mit h÷herer Aufl÷sung ge÷ffnet, so klebt es in der linken, oberen Ecke. Die mⁿhsam entworfene Formatierung ist damit v÷llig nutzlos. Wie kann ich ein Formular automatisch an die jeweilige Bildschirmaufl÷sung anpassen?

Mit etwas Programmierarbeit ist das kein Problem. Bestimmen Sie zuerst die aktuelle Bildschirmaufl÷sung, um dann einige Eigenschaften aller Formularobjekte entsprechend neu zu belegen. Erzeugen Sie in Ihrer Datenbank ein neues Modul beliebigen Namens und belegen Sie es mit dem folgenden VBA-Code:

Option Compare Database
Option Explicit

Private Declare Function GetSystemMetrics Lib äUser32ô (ByVal nIndex As 
Long) As Long

Private Const SM_CXFULLSCREEN = 16
Private Const SM_CYFULLSCREEN = 17

Public Function getScreenSizeX() As Long
    getScreenSizeX = GetSystemMetrics(SM_CXFULLSCREEN)
End Function

Public Function getScreenSizeY() As Long
    getScreenSizeY = GetSystemMetrics(SM_CYFULLSCREEN)
End Function


Und so funktioniert das Skript: Mit der Anweisung ╗Declare Function½ verweisen Sie auf die externe Prozedur ╗GetSystemMetrics()½ aus der Programmbibliothek USER32.DLL, mit der Sie ⁿber die Abfragen ╗getScreen-SizeX()½ und ╗getScreenSizeY()½ die horizontale und vertikale Bildschirmaufl÷sung in Pixel bestimmen. Dabei berⁿcksichtigt Access bereits Objekte, die die zur Verfⁿgung stehende FlΣche reduzieren, wie zum Beispiel die Startleiste. Dadurch ist die ermittelte Aufl÷sung etwas geringer als erwartet.
Access arbeitet intern mit der gerΣteunabhΣngigen Ma▀einheit Twip, so dass alle Angaben in diese Einheit umzurechnen sind. Laut einschlΣgiger Literatur entspricht ein Pixel je nach Bildschirmtreiber zwischen 12 und 15 Twips. Am besten Sie benutzen zur Umrechnung den Faktor 15 und hinterlegen ihn in der Konstante ╗TWIPS_ PER_PIXEL½, die Sie im Code des Formulars mit ╗Private Const½ definieren.
Nun mⁿssen Sie verschiedene Eigenschaften der Formularobjekte in der VBA-Prozedur ╗Form_Open()½ neu belegen, die dem Formular-Ereignis ╗Beim ╓ffnen½ hinterlegt ist. Formularobjekte verfⁿgen meist ⁿber vier relevante Eigenschaften. ╗Left½ und ╗Top½ geben den Abstand eines Objektes zum linken und oberen Rand des Bereichs an und definieren auf diese Art seine Position auf dem Formular. Mit ╗Height½ und ╗Width½ bestimmen Sie H÷he und Breite eines Objektes. ZusΣtzlich ist es eventuell notwendig, die Eigenschaften ╗Width½ des Formulars und ╗Height½ des betroffenen Formularbereichs anzupassen.
Im Beispiel sehen Sie eine m÷gliche Manipulation an einem Textfeld namens ╗Liste½ und dem Detailbereich ╗Me.Section(acDetail)½.


Dim Bildschirmbreite As Long Dim Bildschirmhoehe As Long æ Gesamten Bildschirm nutzen DoCmd.Maximize æ Aufloesung in Pixel ermitteln Bildschirmbreite = getScreenSizeX() Bildschirmhoehe = getScreenSizeY() æ Umrechnung der Pixel in Twips Bildschirmbreite = Bildschirmbreite * TWIPS_PER_PIXEL Bildschirmhoehe = Bildschirmhoehe * TWIPS_PER_PIXEL æ Hoehe des Bereiches festlegen Me.Section(acDetail).Height = Bildschirmhoehe - 1000 æ Eigenschaften von Liste belegen Liste.Width = Bildschirmbreite - (2 * Liste.Left) Liste.Height = Me.Section(acDetail).Height - XAchse.Height - (3 * Liste.Top)