Inhaltsverzeichnis

17.13 DateChooser

Die Komponente DateChooser (gb.form) implementiert einen Kalender. Dieser Kalender ermöglicht es dem Benutzer, ein Datum, eine Zeit oder beides in einem Kalender auszuwählen → Mode-Eigenschaft. Die Anzeige-Eigenschaften für ein ausgewähltes Datum im DateChooser können über die Eigenschaft Data und über das Data-Ereignis definiert werden. Die ideale Breite einer DateChooser-Komponente beträgt mindestens 296 Pixel, weil Sie nur dann Zugriff auf alle angebotenen Auswahl- und Navigationsmöglichkeiten haben.

Kalender_Datum

Abbildung 17.13.1: Komponente DateChooser und DateBox (Anzeige)

Der Komponente DateBox wurde kein eigenes Kapitel gewidmet. Die Klasse DateBox enthält nur eine ButtonBox → Kapitel 16.8 ButtonBox, deren Maske auf Datums- und Zeitangaben gesetzt wurde und einen Dialog mit DateChooser öffnet. Mit dem Einsatz der Komponente DateChooser sind Sie auf der sicheren Seite, wenn es um die Verwendung valider Werte für ein Datum oder Zeitangaben (im 30-Minuten-Raster) in einem Gambas-Projekt geht. Wenn es klein und fein sein soll, dann kommen Sie um den Einsatz einer DateBox nicht herum.

17.13.1 Eigenschaften und Methoden DateChooser

Ausgewählte Eigenschaften werden in der folgenden Tabelle aufgeführt und beschrieben:

EigenschaftTypDefaultBeschreibung
ValueDateNow()Gibt das selektierte Datum zurück
DayInteger-Gibt den Tag des ausgewählten Datums zurück.
MonthInteger-Gibt den Monat des ausgewählten Datums zurück.
YearInteger-Gibt das Jahr des ausgewählten Datums zurück.
ModeInteger0Legt fest, ob im Kalender ein Datum, ein Datum und eine Zeit oder nur Zeiten angezeigt werden (Konstanten: DateOnly (0), DateTime (1) oder TimeOnly (2)).
Data _DateChooser_Data-Diese virtuelle Klasse ermöglicht die Definition, wie man ein bestimmtes Datum formatiert. Die Eigenschaften müssen innerhalb des Data-Event-Handlers gesetzt werden.
Colors_DateChooser_Colors-Diese virtuelle Klasse ermöglicht die Farb-Definition, wie man ein bestimmtes Datum farblich formatiert.

Tabelle 17.13.1.1: Ausgewählte Eigenschaften der Komponente DateChooser

Die virtuelle Klasse _DateChooser_Data definiert:

Die Klasse DateChooser besitzt mit DateChooser.SetFocus() nur eine ausgewiesene, spezielle Methode, die den Fokus auf die DateChooser-Komponente setzt.

17.13.2 Ereignisse DateChooser

Spezielle Ereignisse der Komponente DateChooser finden Sie hier:

EreignisBeschreibung
ActivateWird ausgelöst, wenn der Benutzer doppelt auf ein Datum im DateChooser klickt.
CancelWird ausgelöst, wenn der Benutzer die ESC-Taste gedrückt hat, um seine Auswahl aufzuheben.
ChangeWird ausgelöst, wenn das Datum im Kalender geändert wird.
Data(Date As Date)Dieses Ereignis wird ausgelöst, um herauszufinden, wie ein bestimmtes Datum im Kalender angezeigt werden soll. Füllen Sie die Data-Eigenschaft mit den erforderlichen Informationen.

Tabelle 17.13.2.1: Übersicht zu den 4 speziellen Ereignissen der Komponente DateChooser

17.13.3 Projekt 1 DateChooser

Ausgewiesene Schwerpunkte im vorgestellten Projekt liegen einerseits darin, Ihnen die Verwendung der 2 virtuellen Klassen mit ihren Eigenschaften und Methoden im Zusammenhang mit dem Ereignis DateChooser1_Data(dValue As Date) vorzustellen und andererseits zu zeigen, wie Sie ein ausgewähltes Datum im Kalender in einer Variable speichern oder es in geeigneten Komponenten anzeigen können.

Die Abbildung 17.13.1 zeigt die Programm-Oberfläche. Der Quelltext zum Projekt 1 wird vollständig angegeben und ausführlich kommentiert:

[1] ' Gambas class file
[2] 
[3]  Public dDatum As Date
[4] 
[5] Public Sub Form_Open()
[6]   FMain.Center()
[7]   FMain.Resizable = False
[8] ' Mode-Konstanten stehen in der DateChooser-Klasse und nicht in der DateBox-Klasse!  
[9]   DateBox1.Mode = DateChooser.DateOnly 
[10]   DateChooser1.Mode = DateChooser.DateOnly 
[11]   DateBox1.Value = Now()  
[12]   GetDateValues()  
[13]   
[14]   DateChooser1.Colors["9/21/2013"] = Color.Orange ' Datum in englischer Notation!
[15]   DateChooser1.Colors["9/11/2013"] = Color.Yellow
[16]   DateChooser1.Colors["9/24/2013"] = Color.Red
[17]   
[18] End ' Form_Open()
[19] 
[20] Public Sub btnClearColors_Click()
[21]   DateChooser1.Colors.Clear()
[22]   DateChooser1.SetFocus()
[23] End ' btnClearColors_Click()
[24] 
[25] Public Sub DateChooser1_Activate() ' Einfach-Klick
[26]    DateChooser1_Change()
[27] End '  DateChooser1_Activate()
[28] 
[29] Public Sub DateChooser1_Change()
[30]   GetDateValues()
[31]   DateBox1.Value = DateChooser1.Value  
[32] End ' DateChooser1_Change()
[33] 
[34] Public Sub DateBox1_Activate() ' Doppel-Klick!
[35]   DateBox1_Change
[36] End ' DateBox1_Activate()
[37] 
[38] Public Sub DateBox1_Change()
[39]  GetDateValues()
[40]  DateChooser1.Value = DateBox1.Value ' Synchronisation DateChooser → DateBox
[41] End ' DateBox1_Change()
[42] 
[43] Private Sub GetDateValues()
[44]   Dim aWochentage As String[]
[45]   
[46]   dDatum = DateChooser1.Value
[47]   
[48]   txtDate.Text = Format(DateChooser1.Value, "dd.mm.yyyy")
[49]   txtDate2.Text = Format(DateChooser1.Value, "dd. mmm yyyy")
[50]   txtDate3.Text = Format(DateChooser1.Value, "d. mmmm yyyy")
[51]   
[52]   txtDateDay.Text = DateChooser1.Day
[53]   txtDateMonth.Text = DateChooser1.Month
[54]   txtDateYear.Text = DateChooser1.Year
[55]   
[56] ' aWochentage=["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]  
[57] ' txtDateDayOfWeek.Text = aWochentage[WeekDay(DateChooser1.Value)] ' Sonntag = 0
[58]   txtDateDayOfWeek.Text = Format(DateChooser1.Value, "dddd")
[59]   txtDateWeekNumber.Text = Week(DateChooser1.Value, gb.Monday, False)
[60]   
[61] End ' GetDateValues()
[62] 
[63]  Public Sub DateChooser1_Data(dValue As Date) ' dValue frei gewählter Variablenname
[64]   
[65] ' If Month(dValue) = 12 And If Day(dValue) = 7 Then ' Genau 1 Wert
[66] ' If Day(dValue) = 12 Then ' Genau 12 Werte
[67]   If WeekDay(dValue) = gb.Friday Then ' Mehr als 50 Werte ...
[68]      DateChooser1.Data.Background = &HC3DDFF
[69]      DateChooser1.Data.Foreground = Color.Red
[70]      DateChooser1.Data.Font = Font["Italic"]   
[71]   Endif ' WeekDay(dValue) = gb.Friday
[72] 
[73] End ' DateChooser1_Data(dValue As Date)
[74] 
[75] Public Sub btnClose_Click()
[76]   FMain.Close
[77] End ' btnClose_Click()

Kommentare:

17.13.4 Projekt 2 DateChooserT

Wenn Sie die Eigenschaft DateChooser.Mode auf DateChooser.DateTime setzen, ist die Komponente DateChooser die erste Wahl für die Festlegung von Terminen mit Datum und Uhrzeit:

Kalender_Zeit

Abbildung 17.13.4.1: Komponente DateChooser – Termin 1

Das Datum wählen Sie mit einem (Einfach-)Klick und den Beginn für das Zeitintervall mit einem Doppelklick aus. Zusätzlich können Sie in diesem Projekt den Termin minutengenau festlegen, wenn das erforderlich ist. Der ausgewählte Termin (Datum, Beginn Zeitintervall, Minuten in der SpinBox (optional)) wird in einer DateBox angezeigt und in der Variablen dEvent vom Datentyp Date gespeichert.

B3

Abbildung 17.13.4.1: Komponente DateChooser – Termin 2

Das Projekt 2 finden Sie im Downloadbereich.

Download