CX_PERIODIC_DATE
Klassenhierarchie
- CX_CLASS
- CX_TERM
- CX_DATE
- CX_SPAN_DATE
- CX_PERIODIC_DATE
- CX_SPAN_DATE
- CX_DATE
- CX_TERM
Beschreibung:
Mit dieser Klasse kann ein periodisches Datum, d.h. ein sich in bestimmter Art und Weise wiederholender Zeitraum, abgebildet werden. Im folgenden sind einige mögliche Datumsangaben, die mit einem Objekt dieser Klasse realisiert werden können, inklusive Generierungshinweisen abgebildet. Die Beschreibung aller möglichen Datumsangaben ist in der Beschreibung der Funktion Import zu finden.
Code-Beispiel:
In dem Beispiel wird ein Eingabefeld vom Typ Radiobutton an den Wochentag "Montag" gekoppelt. Der "Montag" wird bei DrainWindow gesetzt, falls das Eingabefeld einen Wert ungleich Null enthält, und zurückgesetzt, falls es den Wert Null enthält. Bei FillWindow wird äquivalent entweder eine "1" oder "0" an das Eingabefeld übergeben.
Radio(CX_PERIODIC_DATE::Mondays(), 10, 10, 125, T("Montag", "Monday"))
Zusätzlich hierzu gibt es noch die Funktion WeekdayEnumMA(), die es erlaubt, den internen Wert eines Wochentages bzw. einer Wochentagkombination zu setzen. Werden z.B. häufig komplizierte Wochentagkombinationen wie "Montags, Mittwochs, Donnerstags und Sonntags" oder "Montags bis Freitags" gebraucht, so wäre es mühsam diese mit den bisher vorgestellten Hilfsmitteln einzugeben. Für solche Fälle kann man die internen Werte in einer Datei Texten zuordnen, wie beispielhaft in der folgenden Datei "weekdays.enm" (Näheres zu der internen Darstellung steht in der Dokumentation der Funktion Import):
366, T(Montags, Mondays), 0xff
367, T(Dienstags, Tuesdays), 0xff
369, T(Mittwochs, Wednesdays), 0xff
373, T(Donnerstags, Thursdays), 0xff
381, T(Freitags, Fridays), 0xff
397, T(Samstags, Saturdays), 0xff
329, T(Sonntags, Sundays), 0xff
396, T("Montags bis Freitags", "Mondays to Fridays"), 0xff
461, T("Samstags und Sonntags", "Saturdays and Sundays"), 0xff
442, T("Mo, Mi, Do und So", "Mon, Wed, Thu and Sun"), 0xff
492, T("jeder Wochentag", "each weekday"), 0xff
941, T("Sonn- und Feiertags", "Sundays and Holidays"), 0xff
Die Zugriffsfunktion WeekdayEnumMA() wird dabei an ein Eingabefeld vom Typ Enumeration gekoppelt.
Enumeration(CX_PERIODIC_DATE::WeekdayEnumMA(), 10, 10, 115, 40, "weekdays.enm")
1. "An dem zweiten Montag in jedem Monat"
Anmerkung: Dieses periodische Datum ist nicht mit "An jedem zweiten Montag in jedem Monat ab dem n.ten Montag im Monat" zu verwechseln.
siehe auch MthWeekdayInMonth
2. "Von Montags bis Freitags"
siehe auch NthWeekdayFromTheKthInMonth
3. "An dem vorletzten Montag in jedem Monat"
siehe auch MthWeekdayInMonth
4. "Von jedem 15.ten bis 17.ten"
siehe auch NthDayFromKthMonthund Setzen der Einzelperiodendauer
5. "An dem 300.ten Tag in jedem Jahr"
siehe auch MthDayInEachYear
6. "An jedem Ultimo einschließlich der nächsten 3 Tage"
siehe auch NthDayFromKthMonth und Setzen der Einzelperiodendauer
Darstellung am Bildschirm
Im Gegensatz zu Klassen wie z.B. CX_DATE besitzt ein periodisches Datum kein eigenes Oberflächenobjekt. Statt dessen kann vom Benutzer eine für seine Zwecke angepasste Eingabemaske entworfen werden, deren Inhalte über die zur Verfügung stehenden Zugriffsfunktionen in das Objekt gestellt werden. Als Beispiel ist unten eine Eingabemaske zur Erfassung (beliebiger) Wochentag-Kombinationen abgebildet. Über die Radiobuttons kann der Benutzer ein periodisches Datum, wie z.B. "Mittwochs, Donnerstags und Sonntags" in der Abbildung, generieren (siehe auch Programmcode).
Werden oft "Standard-Perioden", wie z.B. "Von Montags bis Freitags" oder "Am Wochenende", verwendet, so kann man unter Anwendung anderer Eingabefelder die Erfassung noch weiter vereinfachen, wie in der folgenden Abbildung zu sehen ist (Programmcode).
Operator | Kurzbeschreibung |
---|---|
>, < und = | Vergleich eines periodischen Datums mit einem anderen Datum |
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
AndHolidays | "und Feiertags" | |||
AndNoHolidays | "und nicht Feiertags" | |||
BeforeLastWeekday | * | Setzen des "vorletzten Wochentages der Periode" | ||
DateGranularity | * | Datumsbezugszeitraum setzen | ||
Day | * | Setzen eines speziellen Tages | ||
DayConsistsOfWeekdays | Beinhaltet das Datum eine Wochentagangabe? | |||
DayIsASpecialDay | Beinhaltet das Datum eine Tagesangabe? | |||
Frequency | * | Setzen der Häufigkeit | ||
Fridays | * | Setzen des Freitags | ||
GenerateDays | (OBJECT, OBJECT) | COLL | Tag-Generierung | |
GetWeekdayPattern | OBJECT | Erhalten des Bit-Patterns zur Bestimmung der gesetzten Wochentage. ab DLL-Version 180199 | ||
Granularity | * | Setzen des Bezugzeitraums | ||
Import | (INTEGER, OBJECT, INTEGER, INTEGER, INTEGER, INTEGER) | Import eines periodischen Datums | ||
IsCompact | INTEGER | Ist das Datum "kompakt"? | ||
IsUndef | INTEGER | Ist das Datum undefiniert? | ||
LastWeekday | * | Setzen des "letzten Wochentages der Periode" | ||
Mondays | * | Setzen des Montags | ||
MonthGranularity | * | Monatsbezugzeitraum setzen | ||
MthBeforeLastDayOfMonthInYear | (INTEGER, INTEGER) | "vorletzter Wochentag des m.ten Monats im Jahr" | ||
MthDayInEachYear | (INTEGER, INTEGER) | "m.ter Tag im Jahr" | ||
MthLastDayOfMonthInYear | (INTEGER, INTEGER) | "letzter Wochentag des m.ten Monats im Jahr" | ||
MthWeekdayInMonth | (INTEGER, INTEGER) | "m.ter Wochentag im Monat" | ||
MthWeekdayInYear | (INTEGER, INTEGER) | "m.ter Wochentag im Jahr" | ||
NthDayFromDate | (INTEGER, INTEGER, OBJECT) | "n.ter Tag ab Datum" | ||
NthDayFromKthMonth | (INTEGER, INTEGER, INTEGER) | "n.ter Tag ab Monat" | ||
NthWeekdayFromDate | (INTEGER, INTEGER, OBJECT) | "n.ter Wochentag ab Datum" | ||
NthWeekdayFromTheKthInMonth | (INTEGER, INTEGER, INTEGER) | "n.ter Wochentag vom k.ten im gleichen Monat" | ||
NthWeekdayFromTheKthInYear | (INTEGER, INTEGER, INTEGER) | "n.ter Wochentag vom k.ten im gleichen Jahr" | ||
OrHolidays | "oder Feiertags" | |||
OrNoHolidays | "oder nicht Feiertags" | |||
Position | * | Setzen einer bestimmten Position | ||
Saturdays | * | Setzen des Samstags | ||
SetPeriodicDate 231532 |
STRING, INTEGER | Periodisches Datum aus der übergebenen Zeichenkette importieren | ||
ShortImport | (INTEGER, INTEGER) | Import eines periodischen Datums | ||
Sundays | * | Setzen des Sonntags | ||
Thursdays | * | Setzen des Donnerstags | ||
Tuesdays | * | Setzen des Dienstags | ||
Ultimo | * | Setzen des Monatsletzten | ||
Undef | Undefiniertes Datum erzeugen | |||
VDuration | * | Setzen der Einzelperiodendauer | ||
VDuration0 | * | Setzen einer Tagesdauer | ||
* | Setzen des Mittwochs | |||
WeekdayEnum | INTEGER | Abfragen des internen Wertes der Wochentagkombination | ||
WeekdayEnumMA | * | Setzen einer Wochentagkombination, Abfragen der Enum | ||
WeekdayStart | * | Setzen eines Startdatums | ||
YearGranularity | * | Jahresbezugszeitraum setzen | ||
Encompassed | (OBJECT) | INTEGER | Testen, ob sich eine Datumsperiode vollständig in einem anderen befindet. | |
EndOfPeriod | OBJECT | Rückgabe: das Enddatum einer Datumsperiode | ||
NextDate | (OBJECT, OBJECT) | OBJECT | der Folgetag innerhalb der Datumsperiode | |
NextTerm | (OBJECT) | OBJECT | der Folgetag innerhalb der Datumsperiode | |
Overlap | (OBJECT) | INTEGER | Testen, ob sich ein Tagesdatum oder eine andere Datumsperiode mit der Datumsperiode überschneidet. | |
RealEndOfPeriod | OBJECT | Die spätere der Grenzperioden | ||
RealStartOfPeriod | OBJECT | Die frühere der Grenzperioden | ||
SetDate 231532 |
STRING, INTEGER | Startdatum des Periodischen Datums aus der übergebenen Zeichenkette importieren | ||
SetSpanDate 231532 |
STRING, INTEGER | Startdatum und die Einzelperiodendauer aus der übergebenen Zeichenkette importieren | ||
StartOfPeriod | OBJECT | Periodenbeginn | ||
string | INTEGER | CX_STRING | Liefert die String-Darstellung des Objektes |
* MA = Member-Access-Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung |
---|---|---|---|---|
dayDescription | INTEGER | interne Beschreibung |
Modul | Kurzbeschreibung |
---|---|
wrldclck.mod | Weltuhr Basismodul |
perdate.mod | Periodisches Datum Testmodul |