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_CXFULL SCREEN = 16 Private Const SM_CYFULL SCREEN = 17 Public Function getScreenSizeX() As Long getScreenSizeX = GetSystemMetrics (SM_CXFULLSCREEN) End Function Public Function getScreen SizeY() As Long getScreenSizeY = Get SystemMetrics(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 = Bild schirmbreite * TWIPS_PER_PIXEL Bildschirmhoehe = Bild schirmhoehe * TWIPS_PER_PIXEL æ Hoehe des Bereiches festlegen Me.Section(acDetail). Height = Bildschirmhoehe - 1000 æ Eigenschaften von Liste belegen Liste.Width = Bildschirm breite - (2 * Liste.Left) Liste.Height = Me.Section(acDetail). Height - XAchse.Height - (3 * Liste.Top)