 |
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)
|
 |