Einstieg in die Verwendung der TDSCalendar-Komponente


Auf dieser Seite erfahren Sie mehr über den Umgang mit der Komponente und erhalten Erklärungen über die Art und Weise, wie welche Fähigkeiten der Komponente genutzt werden können.

Übersicht

Erste Schritte

Zu allererst soll erläutert werden, wie eine Instanz der Komponente erzeugt und bearbeitet werden kann. Falls Sie bereits über dieses Wissen verfügen, lesen Sie bitte im nächsten Abschnitt weiter.
Neben der Möglichkeit, eine Instanz erzeugen zu lassen, indem die Komponente aus der Komponentenpalette auf Ihr Formular ziehen, können Sie eine TDSCalendar-Instanz auch zur Laufzeit erstellen, z.B. so:

var
  EinKalender: TDSCalendar;

...

EinKalender := TDSCalendar.Create(Form1);

with EinKalender do begin
  Parent := Self;
  SundayColor := clYellow;
  ...
  end;


Vergessen Sie allerdings nicht, die dscal-Unit vorher Ihrer uses-Liste hinzuzufügen und sicherzustellen, dass sich die Unit im Such- und im Bibliothekspfad befindet.

Um sich einen ersten Überblick über die Einstellungsmöglichkeiten von TDSCalendar zu verschaffen, klicken Sie hier. Sollten Sie etwas in dieser Referenz nicht finden oder spezielle Probleme mit TDSCalendar haben, schreiben Sie mir bitte eine Email.

Auswahl

TDSCalendar kann zusammenhängende Datumsbereiche markieren. Die Markierung (im folgenden auch als Auswahl bezeichnet) wird durch die beiden Eigenschaften SelStartDay und SelEndDay bestimmt. Ersterer bezeichnet den Beginn der Auswahl, letzterer das Ende (jeweils inklusive markiert, wobei es egal ist, wenn die beiden vertauscht werden - der entsprechende Bereich wird trotzdem markiert).
Der Wert, den die beiden Eigenschaften erwarten ist vom Typ ShortInt und bezeichnet den entsprechenden Monatstag. Dabei ist zu beachten, dass Tage, die vor dem Monatsersten liegen mit 0 abwärts nummeriert werden und jene, die nach dem Monatsletzten liegen mit dem Tag des Monatsletzten auswärts.

Beispiele:
Wert   Entsprechung
2 Monatszweiter des angezeigten Monats
16 16. des angezeigten Monats (entspricht den in der Komponente angezeigten Tagesbezeichnungen)
34 Falls das dargestellte Monat z.B. 30 Tage hat: 4. des Folgemonats (falls in der Komponente noch darstellbar)
0 Letzter Tag des Vormonats (falls in der Komponente sichtbar)
-1 Vorletzter Tag des Vormonats

Anmerkungen:Falls Sie keine Markierung wünschen setzen Sie SelStartDay auf NoSelStart (analog bei NoSelEnd); alternativ können Sie ResetSelection verwenden, um jegliche Markierung aufzuheben.
Die Markierung muss nicht unbedingt das aktuell gewählte Datum beinhalten.
Um nach oben oder unten offene Markierungen zu erhalten, setzen Sie nur jeweils eine der beiden Eigenschaften auf NoSelStart bzw. NoSelEnd.
Auswahl zur Laufzeit: Sofern SelectOnMouseMove auf true gesetzt ist, kann ein Datumsbereich auch zur Laufzeit ausgewählt werden. Beispiel durch Ziehen: Es wird mit der linken Maustaste auf den zweiten geklickt, die Maustaste gehalten und über den sechzehnten bewegt und dort losgelassen: die Auswahl befindet sich dann zwischen 2 und 16. Alternativ kann ein der zweite auch normal angeklickt werden und anschließend der sechzehnte, während die Shift-Taste gedrückt wird (änhlich der Auswahl im Windows Explorer z.B.).

Feiertage

Mit der TDSCalendar-Komponente ist es möglich, Feiertage hinzuzufügen und darstellen zu lassen. Dabei werden zwei Arten von Feiertagen unterschieden: fixe und dynamische Feiertage. Fixe Feiertage kehren jedes Jahr an einem bestimmten Datum (Tag.Monat) wieder, dynamische sind jedes Jahr an einem anderen Datum (z.B. Ostern) oder mitunter nur in bestimmten Jahren.
Für fixe Feiertage bietet TDSCalendar beispielsweise AddFixedHoliday um ein Datum als Feiertag hinzuzufügen und RemoveFixedHoliday um es wieder als "normalen" Tag (also nicht als Feiertag) zu kennzeichnen. Einen Feiertag doppelt hinzuzufügen oder einen Feiertag zu löschen, der gar nicht hinzugefügt worden ist, erzeugt keinerlei Fehler.
Dynamische Feiertage funktionieren im Prinzip gleich wie fixe - mit dem Unterschied, dass sie nicht jedes Jahr angezeigt werden; d.h. sie müssen beim Hinzufügen/Löschen angeben, in welchem Jahr der dynamische Feiertag als solcher vermerkt werden soll. Die Funktionen zum Hinzufügen und löschen von dynamischen Feiertagen lauten (analog zu den fixen): AddDynamicHoliday und RemoveDynamicHoliday. Anmerkung: Hier finden Sie eine Reihe von dynamischen Feiertagen, die TDSCalendar für Sie berechnen und nach Bedarf automatisch zu den dynamischen Feiertagen hinzufügen kann.


Hints

TDSCalendar verfügt über die Fähigkeit, datumsspezifische Hints anzeigen zu lassen, d.h. Hints beim Bewegen der Maus über bestimmte Daten (hier die Mehrzahl von Datum) anzuzeigen.
Wichtig ist hierbei das Ereignis OnCustomDateHint. Es übergibt Ihnen das Datum unter dem Cursor sowohl als TDateTime-, als auch als einen für SelStartDay bzw. SelEndDay kompatiblen Wert. In der Demo finden Sie ein Beispiel zur Verwendung von Hints, daher wird dieser Punkt hier nicht mehr weiter behandelt.