window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Formularpositionen lesen und setzen

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.

Formular zur Anzeige der aktuellen Abmessungen des Formulars und des Access-Fensters

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

Schreibe einen Kommentar