Lade...
 

CX_PERIODIC_DATE - Periodisches Datum

CX_PERIODIC_DATE CX_PERIODIC_DATE.png

Klassenhierarchie
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.

pdate01.jpg

siehe auch MthWeekdayInMonth

2. "Von Montags bis Freitags"

pdate02.jpg

siehe auch NthWeekdayFromTheKthInMonth

3. "An dem vorletzten Montag in jedem Monat"

pdate03.jpg

siehe auch MthWeekdayInMonth

4. "Von jedem 15.ten bis 17.ten"

pdate04.jpg

siehe auch NthDayFromKthMonthund Setzen der Einzelperiodendauer

5. "An dem 300.ten Tag in jedem Jahr"

pdate05.jpg

siehe auch MthDayInEachYear

6. "An jedem Ultimo einschließlich der nächsten 3 Tage"

pdate06.jpg

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).

dpdate7.gif

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).

dpdate8.gif

Operatoren
Operator Kurzbeschreibung
>, < und = Vergleich eines periodischen Datums mit einem anderen Datum

 

Methodenverzeichnis (MDI)
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

Wednesdays

*     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

 

Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
dayDescription INTEGER     interne Beschreibung

 

Verwendung in AppsWH
Modul Kurzbeschreibung
wrldclck.mod Weltuhr Basismodul
perdate.mod Periodisches Datum Testmodul