Ausklappbare Formularbereiche

By , 1. Oktober 2008

Bei Formulareingaben gibt es Felder, die häufig benutzt werden, und solche Felder, die nur in bestimmten Fällen benötigt werden. Um nun das Formulardesign trotzdem schlank und übersichtlich zu halten kann man sich eines Tricks bedienen: Man versteckt die selten benötigten Felder und zeigt diese nur bei Bedarf an.

Na so einfach ist es dann doch nicht. Schauen wir uns zuerst mal das mögliche Ergebnis in Bildern an.
Formular in Normalgröße

In das Formular fügt man eine Befehlsschaltfläche ein, mit hilfe der man den nicht sichtbaren Bereich einblendet. Siehe dazu nachfolgendes Bild. Man sieht, dass zusätzlich eine Befehlsschaltfläche und ein Listenfeld sichtbar wird, sowie dass der Rahmen angepasst und die Formulargröße angepasst wird.

Die Realisierung eines solchen ausklappbaren Formularbereiches ist einfacher als man denkt. Fangt damit an, dass ihr das Formular wie gewohnt mit den später unsichtbaren Feldern erstellt, also so wie das 2. Bild zeigt. Dann fügt ihr den Button ein für das Ausklappen und setzt an den Anfang der noch leeren Ereignisprozedur ein Haltepunkt. Ruft das Formular auf, und klickt auf den Button. Jetzt solltet ihr in der VBA IDE sein und der Cursor (gelb) am markierten Haltepunkt.

Im Menü Ansicht klickt ihr nun auf Direktfenster. In das Direktfenster gebt ihr nacheinander folgendes ein und drückt nach jeder Zeile die Return-Taste. Notiert euch die ausgegebenen Werte auf einem Blatt Papier.
? Me!Rahmen1.Width
? Me!Button1.Left
? Me!Liste0.Left
? Me.Form.InsideWidth

Ihr habt natürlich andere Feldnamen als ich in meinem Beispiel, die müsst ihr natürlich austauschen. Ihr müsst auch nur die Werte ermitteln, die sich bei dem ausklappen ändern.

Jetzt baut ihr das Formular so um wie im Bild1 zu sehen. Markiert die Steuerelemente die nicht sichtbar sein sollen und stellt deren Sichtbarkeit auf nein. Danach müsst ich die markierten Steuerelemente in den Teil des Formulars verschieben der im Normalfalle sichtbar ist. Ändert dabei nicht die Vertikale Position der Steuerelemente!

Das Klickereignis des Buttons zum Ausklappen beinhaltet folgender Code:

Private Sub Feldliste_Click()
    If Me.Form.InsideWidth > 7800 Then
        Me!rahmen1.Width = 4861
        Me!button1.Left = 1587
        Me!Liste0.Left = 2336
        Me!button1.Visible = False
        Me!Liste0.Visible = False
        Me.Form.InsideWidth = 5025
    Else
        Me!rahmen1.Width = 7696
        Me!button1.Left = 4988
        Me!Liste0.Left = 5737
        Me!button1.Visible = True
        Me!Liste0.Visible = True
        Me.Form.InsideWidth = 7875
    End If
End Sub

Verwendet hier natürlich eure Steuerelementnamen und die zuvor notierten Werte dazu. Anhand des Wertes in InsideWidth wird beim Klicken ermittelt, ob eingeklappt oder ausgeklappt werden soll. Durch das verändern von InsideWidth wird das Formular in der Breite geändert.

Nachfolgend könnt ihr die kleine Beispielanwendung herunterladen:
SampleExpandForm.zip

AV 2008

Leave a Reply

You must be logged in to post a comment.

OfficeFolders theme by Themocracy