Ansicht mit Segmenten umschalten
Ein Listenformular bietet die Zeiträume „Tag“, „Woche“ und „Monat“ nebeneinander an, wie die Ansichtsumschalter von Office, und filtert seine Datensätze nach dem gewählten Zeitraum.
Voraussetzungen: WKL Forms Object Library 1.27 oder höher.
Lösungsüberblick
Ein WklButton der Art wbkSegment zeigt seine Segmente (AddSegment) nebeneinander. Eines ist ausgewählt
(SelectedKey), und die Wahl des Benutzers löst Change aus. Die in der Entwurfsansicht festgelegten Segmente und die
Auswahl werden mit dem Formular gespeichert; zum Einrichten ist daher kein Code nötig, Change wendet nur den Filter
an.
Umsetzung
Im Designer (Zeile Benutzerdefiniert [...]): Art „Segmente“, Beschriftung „Zeitraum“ (der Name, den
Sprachausgaben vorlesen), und auf der Seite Segmente die Zeilen tag / Tag, woche / Woche,
monat / Monat, mit „Gewählt“ für tag. Dann:
Private Sub Form_Load()
ApplyPeriod Me!btnZeitraum.Object.SelectedKey
End Sub
Private Sub btnZeitraum_Change()
ApplyPeriod Me!btnZeitraum.Object.SelectedKey
End Sub
Private Sub ApplyPeriod(ByVal period As String)
Select Case period
Case "tag": Me.Filter = "Datum = Date()"
Case "woche": Me.Filter = "Datum >= Date() - Weekday(Date(), 2) + 1"
Case "monat": Me.Filter = "Year(Datum) = Year(Date()) And Month(Datum) = Month(Date())"
End Select
Me.FilterOn = True
End Sub
Hinweise
Changetritt nicht ein, wenn CodeSelectedKeysetzt; deshalb wendetForm_Loadden Filter selbst an.- Ein Klick auf das ausgewählte Segment ändert nichts, wie bei einer Optionsgruppe. Mit
MultiSelectlässt sich jedes Segment ein- und ausschalten; lesen Sie dannSelectedKeys. - Die Tastatur erreicht die Segmente mit einem einzigen Tabstopp; Nach-links und Nach-rechts wählen das benachbarte Segment.
- Deaktivieren Sie ein Segment mit
SegmentEnabled; die Tastatur überspringt es.