Quick Tipp: Popup-Formulare positionieren

By , 22. Februar 2009

Popup-Formular, d.h. Formulare mit der Eigenschaft Popup = ja, lassen sich mittig ausrichten indem man die Eigenschaft „Automatisch zentrieren“ auf ja stellt. Will man aber z.B. mehrere Popup-Formular an definierter Stelle positionieren, dann muss man dafür schon ein Stückchen VBA-Code einsetzen.

Die entsprechende Anweisung dazu lautet:
Forms("Formularname").Move Links, Oben, Breite, Höhe
Die Angaben Links, Oben, Breite und Höhe sind in Twips anzugeben. Die Angabe des Wertes Links ist erforderlich, die restlichen Angaben sind Optional.

Die Maßeinheit Twip bedeutet 1/20 eines Inch-Punktes, was 1/1440 Inch (Zoll) entspricht.
Demnach ist 1mm gerundete 56,7 Twips.

Probiert es einfach mal aus. Wenn ihr aber zu große Werte eingebt, wird euer Formular nicht mehr zu sehen sein da es außerhalb dem sichtbaren Bereich „liegt“.

Ein anderer Anwendungsfall ist, dass ein Popup-Formular relativ zu einem anderen Formular oder einem Steuerelement auf einem anderen Fomular plaziert sein soll. Dies ist z.B. bei dem DatePicker der Fall, den ich in einem anderen Beitrag beschrieben habe.

Nachfolgend eine Prozedur die ein Popup-Formular öffnet und direkt unter einer Befehlsschaltfläche plaziert:

Public Sub openPopupForm()
    Dim btn As CommandButton
    Dim frm AS Form
    Set frm = Forms("Aufrufendes_Formular")
    Set btn = frm.Controls("Name_der_Befehlsschaltfläche")
    DoCmd.OpenForm "Popup_Formular"
    If frm.BorderStyle > 0 Then
        Forms("Popup_Formular").Move frm.WindowLeft + btn.Left, frm.WindowTop + btn.Top + btn.Height + 460
    Else
        Forms("Popup_Formular").Move frm.WindowLeft + btn.Left, frm.WindowTop + btn.Top + btn.Height
    End If
    Set btn = Nothing
    Set frm = Nothing
End Sub

Zuerst wird eine CommandBarButton-Objektvariable gesetzt, die auf díe Befehlsschaltfläche des aufrufenden Formulars referiert, aus der dann die Eigenschaften Oben, Links und Höhe verwendet werden. Das ist hier sehr ausführlich gemacht, damit man den Code auch 1:1 in einem Modul unterbringen kann.

Die Abfrage nach dem Borderstyle ist deswegen, weil bei randlosen Formularen sich die Position um ca. 460 Twips (8,1mm) nach oben verschiebt. Die Angaben WindowLeft und WindowTop stellen die Position des aufrufenden Formulars dar. Ist dieses Formular maximiert, so sind diese beiden Werte = 0. Die genaue Position auf dem aufrufenden Formular wird über die Angabe Oben + Höhe der Befehlsschaltfläche angegeben, unter der das Popup-Formular plaziert werden soll.

AV 2009

Leave a Reply

You must be logged in to post a comment.

OfficeFolders theme by Themocracy