home *** CD-ROM | disk | FTP | other *** search
- TSRCalendar (C)opyright 2001 Version 1.40
- Autor : Simon Reinhardt
- eMail : reinhardt@picsoft.de
- Internet : http://www.picsoft.de
-
- Die Komponente TSRCalendar ist eine Weiterentwicklung der
- TCalendar-Komponente aus den Beispielkomponenten der Delphi-VCL.
- Sie enthΣlt viele Zusatzinformationen, wie Feiertage,
- Sternzeichen und verschiedene astronomische Daten.
-
- Die Routinen aus der Unit TimeFunc stammen aus der TMoon-Komponente
- von Andreas H÷rstemeier : http://www.westend.de/~hoerstemeier/index_d.htm
- Andreas hat die Routinen aus dem Buch "Astronomical Algorithms" von Jean Meeus.
-
- Die GetWeekOfYear-Funktion, die die Wochennummer nach DIN 1355 ermittelt,
- stammt von Christoph Kremer, Aachen.
-
- Vielen Dank auch an:
- - Edmund Matzke <edmund_matzke@gmx.de> fⁿr die Korrektur der
- Schleswig-Holsteinischen Feiertage,
- - Matthias Frey <info@Matthias-Frey.de> fⁿr die Korrektur der
- Advents-Berechnung.
-
- Diese Komponente ist Public Domain, das Urheberrecht liegt aber beim Autor.
-
-
- Dateiumfang:
- ------------
-
- SRCal.txt - Diese Datei
- SRCal.pas - Quelltext der Komponente
- SRCal.d16 - Resourcendatei der 16Bit-Komponente fⁿr Delphi 1
- SRCal.d32 - Resourcendatei der 32Bit-Komponente fⁿr Delphi 2 bis 5
- TimeFunc.pas - Quelltext der Unit mit Zeitroutinen
- MyMath.pas - Mathematische Funktionen fⁿr Zeitberechnungen
- SRDefine.inc
- SRUtils.pas - verschiedende Prozeduren und Funktionen fⁿr die Komponente
- (Eine Beschreibung findet man im Interface der Unit)
-
- Ordner KalDemo - TSRCalendar-Demo-Projekt fⁿr Delphi 2 bis 5
- KalMain.dfm - Formulardatei der MainForm
- KalMain.pas - Quelltext der MainForm-Unit
- KalDemo.dof - Compileroptionen des Demo-Projekts
- KalDemo.dpr - Quelltext des Demo-Projekts
- KalDemo.res - Resourcendatei des Demo-Projekts
-
-
- Installation:
- -------------
-
- In Delphi 1:
- ------------
- 1. Alle Dateien in das Delphi-Komponenten-Verzeichnis entpacken.
- 2. Menⁿ Optionen : Komponente installieren
- 3. SchaltflΣche Hinzufⁿgen / Durchsuchen
- 4. Datei SRCal.pas im Delphi-Komponenten-Verzeichnis suchen und mit
- OK bestΣtigen.
- 5. Die Komponente erscheint in der Komponenten-Gruppe "Simon"
-
- In Delphi 2:
- ------------
- 1. Alle Dateien in das Delphi-Komponenten-Verzeichnis entpacken.
- 2. Menⁿ Komponente : installieren
- 3. SchaltflΣche Hinzufⁿgen / Durchsuchen
- 4. Datei SRCal.pas im Delphi-Komponenten-Verzeichnis suchen und mit
- OK bestΣtigen.
- 5. Die Komponente erscheint in der Komponenten-Gruppe "Simon"
-
- Ab Delphi 3:
- ------------
- 1. Alle Dateien in das Delphi-Komponenten-Verzeichnis entpacken.
- 2. Menⁿ Komponente : Komponente installieren
- 3. SchaltflΣche Durchsuchen (hinter dem Eingabefeld fⁿr den Unit-Namen)
- 4. Datei SRCal.pas im Delphi-Komponenten-Verzeichnis suchen und mit
- OK bestΣtigen.
- 5. Die Rⁿckfrage nach dem Neukompilieren des Packages bestΣtigen.
- 6. Die Komponente erscheint in der Komponenten-Gruppe "Simon"
- (Evtl. mu▀ eine bereits installierte, Σltere Version der Komponente
- zuvor entfernt werden)
-
-
-
- Die Komponente funktioniert genauso, wie die Delphi-Beispielkomponente TCalendar
- mit folgenden Erweiterungen:
-
- Neue Eigenschaften:
- -------------------
-
- I. Published:
-
- 1. "BackgroundColors" - Die Werte dieser Eigenschaften bestimmen die Hintergrundfarben fⁿr
- die Kalenderzellen:
- Headers: fⁿr Spaltenⁿberschriften
- Holiday: fⁿr Feiertage.
- Marked: fⁿr in der Eigenschaft "Marks" markierte Tage.
- Selected: fⁿr das ausgewΣhlte Datum.
- Standard: fⁿr normale Tage.
- Today: fⁿr das aktuelle Systemdatum.
- Weekend: fⁿr Sonntage.
-
- 2. Die Eigenschaft "Bundesland" ist fⁿr die korrekte Berechnung der Feiertage und der
- astronomischen Daten auf das gewⁿnschte Bundesland zu setzen.
-
- 3. In der Eigenschaft "CalendarOptions" werden verschiedene Einstellungen zusammengefasst:
- coAstronomicalData: die astronomischen Daten (Mond- und Sonnendaten) werden bei einem
- Datumswechsel berechnet. Ohne Berechnung der astronomischen Daten
- beschleunigt sich der Datumswechsel.
- coAutoDeleteMarks: alle Markierungen in der Eigenschaft "Marks" werden bei einem Monats-
- oder Jahreswechsel gel÷scht.
- coCalcHolidays: Die deutschen Feiertage werden berechnet und angezeigt. Die Eienschaft
- Holiday enthΣlt dann den Namen des Feiertags.
- coFrameSelection: Das ausgewΣhlte Datum wird mit einem Rahmen markiert.
- coGridLines: Im Kalender werden Gitterlinien zwischen den Tagen gezeichnet.
- coReadOnly: Der Kalender dient nur zur Anzeige und erlaubt keine Datumsauswahl.
- coShowMarks: Die in der Eigenschaft "Marked" als markierte gespeicherten Tage werden
- farbig angezeigt.
- coUseCurrentDate: Der Kalender zeigt nach seiner Erstellung immer das aktuelle
- Systemdatum an.
-
- 4. "DrawStyle" kann folgende Werte annehmen:
- - cdsColorGrid: Feiertage, Wochenenden, etc. werden in den Farben gezeichnet, die in den
- entsprechenden Eigenschaften festgelegt sind.
- - cdsMonoGrid: Alle Tage im Kalender werden mit der in der Eigenschaft "Color" angegebenen
- Hintergrundfarbe und mit der Textfarbe der Eigenschaft "Font" gezeichnet.
- - cdsButtons: Die Tage im Kalender werden als anklickbare Buttons gezeichnet.
-
- 5. "TextColors" - Die Werte dieser Eigenschaften bestimmen die Schriftfarben fⁿr
- die Kalenderzellen:
- Headers: fⁿr Spaltenⁿberschriften
- Holiday: fⁿr Feiertage.
- Marked: fⁿr in der Eigenschaft "Marks" markierte Tage.
- Selected: fⁿr das ausgewΣhlte Datum.
- Standard: fⁿr normale Tage.
- Today: fⁿr das aktuelle Systemdatum.
- Weekend: fⁿr Sonntage.
-
- II. Public:
-
- 1. "DayOfYear" gibt an, der wievielte Tag im Jahr das in der Eigenschaft "Date"
- angegebene Datum ist.
- 2. Falls das in der Eigenschaft "Date" gespeicherte Datum ein Feiertag oder ein Sondertag ist,
- enthΣlt die Eigenschaft "Holiday" den Namen des Feier- oder Sondertages.
- 3. Falls das in der Eigenschaft "Date" gespeicherte Datum ein Feiertag oder ein Sondertag ist,
- enthΣlt die Eigenschaft "HolidayNr" die Nummer des Feier- oder Sondertages. Dieser Wert kann
- folgende Werte annehmen:
- 0 : Kein Feier- oder Sondertag
- >0 : Feiertag
- <0 : Sondertag
- 4. Die Eigenschaft "Holidays" ist ein array[0..31] of integer, in dem alle Feiertags- und
- Sondertagsnummern des aktuellen Monats gespeichert werden.
- 5. Die Eigenschaft "Marks" ist deklariert als "array[1..31] of boolean" und speichert
- markierte Tage.
- 6. "MoonDistance" gibt die Entfernung des Mondes zur Erde in Kilometern an.
- 7. "MoonPhase" gibt die Mondphase an und kann folgende Werte annehmen:
- (Neumond, Zunehmend, Vollmond, Abnehmend)
- 8. "MoonRise" gibt die Uhrzeit des Mondaufganges im Format TDateTime an.
- 9. "MoonSet" gibt die Uhrzeit des Mondunterganges im Format TDateTime an.
- 10."MoonTransit" gibt die Uhrzeit des Mondh÷chststandes im Format TDateTime an.
- 11."SunDistance" gibt die Entfernung der Sonne zur Erde in Kilometern an.
- 12. "SunRise" gibt die Uhrzeit des Sonnenaufganges im Format TDateTime an.
- 13."SunSet" gibt die Uhrzeit des Sonnenunterganges im Format TDateTime an.
- 14."SunTransit" gibt die Uhrzeit des Sonnenh÷chststandes im Format TDateTime an.
- 15."Sternzeichen" gibt den Namen des Sternzeichens eines am in der Eigenschaft "Date"
- angegebenen Datum geborenen an.
- 16."SternzeichenNr" gibt die Nummer des Sternzeichens eines am in der Eigenschaft "Date"
- angegebenen Datum geborenen an:
- 0 : Wassermann
- ..
- 11 : Steinbock
- 17."WeekOfYear" gibt an, in der wievielten Woche im Jahr (nach DIN 1355) das in der Eigenschaft
- "Date" angegebene Datum ist.
- 18.Die Eigenschaft CalendarDate wurde umbenannt in "Date". Diese Eigenschaft speichert
- das Datum im Format TDateTime.
-
-
- Ereignisse:
- -----------
-
- 1. "OnBeforeChange" tritt vor der ─nderung der Eigenschaft "Date" auf.
- 2. Das Ereignis "OnMonthChange" tritt bei einem Wechsel des Monats oder des Jahres auf, die
- in den Eigenschaften "Month" und "Year" bzw. "Date" gespeichert sind.
- 3. OnMouseDown - wie bei TPanel
- 4. OnMouseMove - wie bei TPanel
- 5.OnMouseUp - wie bei TPanel
- 6. Das Ereignis "OnYearChange" tritt bei einem Wechsel des Jahres auf, das in den
- Eigenschaften "Year" bzw. "Date" gespeichert ist.
-
-
- Methoden:
- ---------
-
- 1. DaysThisMonth gibt die Anzahl der Tage im Monat zurⁿck, der in der Eigenschaft "Month"
- gespeichert ist.
- 2. GetHoliday ermittelt, ob das in "WhatDate" ⁿbergebene Datum im der Varaibalen "Land" ⁿber-
- gebenen Bundesland ein Feier- oder Sondertag ist und gibt als Ergebnis dessen Nummer oder
- null zurⁿck:
- function GetHoliday(WhatDate:TDateTime;Land:integer):integer;
- 2. Mit der Methode "MouseToCell" ermittelt man die Spalte und Zeile des Kalenders, ⁿber der
- der Mauszeiger steht:
- procedure MouseToCell(X, Y: Integer; ACol, ARow: longint);
- 3. Mit der Methode "MouseToDate" ermittelt man das Datum der Kalenderzelle, ⁿber der
- der Mauszeiger steht:
- function MouseToDate(X, Y: Integer):TDateTime;
- 4. NextMonth setzt das Kalenderdatum auf den gleichen Tag im folgenden Monat.
- 5. NextYear setzt das Kalenderdatum auf den gleichen Tag und den gleichen Monat im folgenden
- Jahr.
- 6. PrevMonth setzt das Kalenderdatum auf den gleichen Tag im vorhergehenden Monat.
- 7. PrevYear setzt das Kalenderdatum auf den gleichen Tag und den gleichen Monat im
- vorhergehenden Jahr.
-
-
- Neue Funktionen:
- ----------------
-
- 1. Die Navigation durch den Kalender per Tastatur wurde verbessert:
- -Falls die letzte Zelle einer Zeile gewΣhlt ist und die [Pfeil-nach-rechts]-Taste
- gedrⁿckt wird, wird der folgende Tag in der ersten Spalte der nΣchsten Zeile markiert.
- -Falls die erste Zelle einer Zeile gewΣhlt ist und die [Pfeil-nach-links]-Taste
- gedrⁿckt wird, wird der vorherige Tag in der letzten Spalte der vorherigen Zeile markiert.
- -Falls der letzte Tag im Monat gewΣhlt ist und die [Pfeil-nach-rechts]-Taste
- gedrⁿckt wird, wird das Datum auf den ersten Tag des folgenden Monats gesetzt.
- -Falls der erste Tag im Monat gewΣhlt ist und die [Pfeil-nach-links]-Taste
- gedrⁿckt wird, wird das Datum auf den letzten Tag des vorherigen Monats gesetzt.
- -Falls ein Tag in der letzten Zeile des Kalenders gewΣhlt ist und die [Pfeil-nach-unten]-Taste
- gedrⁿckt wird, wird das Datum auf den ersten Tag des folgenden Monats gesetzt.
- -Falls ein Tag in der ersten Zeile des Kalenders gewΣhlt ist und die [Pfeil-nach-oben]-Taste
- gedrⁿckt wird, wird das Datum auf den letzten Tag des vorherigen Monats gesetzt.
-
- Alle anderen Eigenschaften und Ereignisse entsprechen denen der TCalendar-Komponente
- und sind in der Online-Hilfe nachzulesen. Die Funktion der Komponente lΣ▀t sich au▀erdem
- im beigefⁿgten Demo-Programm im Ordner "KalDemo" sehen.
-