Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Die Position der Formulare Ihrer Datenbank wird normalerweise nur über die Eigenschaft Automatisch zentrieren eingestellt, was dazu führt, dass ein Formular direkt in der Mitte des Access-Fensters geöffnet wird. Wenn Sie weitergehende Ansprüche haben, können Sie die genaue Position von Formularen nicht nur ermitteln, sondern diese auch setzen. Dieser Artikel zeigt die Funktionen, mit denen Sie dies realisieren können.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1611_FormularePositionieren.accdb.
Formularpositionen lesen
Wenn Sie die Position eines Formulars lesen wollen, können damit verschiedene Positionen gemeint sein: Die absolute Position auf dem Desktop oder die Position innerhalb des Access-Fenster oder auch die Position innerhalb der Arbeitsfläche im Access-Fenster, also des Bereichs ohne Rahmen, Ribbon und Navigationsbereich.
Um diese Werte zu ermitteln und damit zu experimentieren, legen wir ein neues Formular an, das wie in Bild 1 aussieht und acht Textfelder für die Ausgabe der verschiedenen Werte bereitstellt.
Bild 1: Formular zur Anzeige der aktuellen Abmessungen des Formulars und des Access-Fensters
Nun fehle nur noch einige Zeilen VBA-Code, gewürzt mit einigen API-Funktionen, um diese Textfelder zu füllen – optimalerweise im regelmäßigen Abstand, damit Sie gleich beim Ziehen oder Anpassen der Größe von Access-Fenster und dem Formular live die aktuellen Werte angezeigt bekommen.
Access-Fenster und Formular
Wenn wir die Position eines Formulars ermitteln wollen, können wir diese direkt relativ zum Bildschirmrand ermitteln oder relativ zum Rand des Access-Fensters.
Wenn Sie den Abstand zum Rand des Access-Fensters ermitteln wollen, geht dies nicht direkt, sondern wir müssen dann den Abstand des Formulars zum Bildschirmrand ermitteln und dann den Abstand des Access-Fensters vom Bildschirmrand abziehen.
Funktion zum Ermitteln Daten des Access-Fensters
Also programmieren wir zunächst eine Funktion, welche die Koordinaten des Access-Fensters ermittelt. Diese sieht wie in Listing 1 aus. Diese Funktion namens GetMainWindowPosition enthält vier Parameter namens sngLeft, sngTop, sngWidth und sngHeight.
Public Function GetMainWindowPosition(sngLeft As Single, sngTop As Single, sngWidth As Single, sngHeight As Single) Dim rectMainWindow As Rect GetWindowRect Application.hWndAccessApp, rectMainWindow sngLeft = rectMainWindow.Left sngTop = rectMainWindow.Top sngWidth = rectMainWindow.Right - rectMainWindow.Left sngHeight = rectMainWindow.Bottom - rectMainWindow.Top End Function
Listing 1: Diese Funktion ermittelt die Koordinaten der Position des Access-Hauptfensters.
Diesen müssen Sie beim Aufruf vier entsprechende Parameter übergeben, die dann gefüllt werden. Dies sieht in einer kleinen Beispielprozedur etwa wie in Listing 2 aus.
Public Sub Test_GetMainWindowPosition() Dim sngLeft As Single Dim sngTop As Single Dim sngWidth As Single Dim sngHeight As Single GetMainWindowPosition sngLeft, sngTop, sngWidth, sngHeight MsgBox "Aktuelle Position und Größe des Access-Fensters:" & vbCrLf & "Links: " & sngLeft & vbCrLf & "Oben: " & sngTop _ & vbCrLf & "Breite: " & sngWidth & vbCrLf & "Höhe: " & sngHeight End Sub
Listing 2: Prozedur mit einem Beispielaufruf der Funktion GetMainWindowPosition
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo