Important remark
================
Sorry, because this library is only available 
for the german calendar and holidays, there is
no english description. It does'nt make sense,
to use this tools in other programs then 
austrian, swiss or german.

Bemerkung
=========
Wenn Sie diesen Text mit dem Notepad lesen,
whlen Sie bitte zuerst die Befehle 
[Alt+Leertaste], [X] und [Alt+B], [Z].


Einleitung
==========

In diesem Archiv finden Sie eine Feiertagberechnung in Form einer 16-, 32-Bit DLL sowie einer Pascal-Unit. Als besonderes Schmankerl enthlt es auerdem eine Kalenderkomponente fr Delphi und als ActiveX sowie zwei Beispielprogramme. Die gewichtigste Einschrnkung der Funktionen ist der Datumsbereich von 1583 bis 2399, der aber fr die meisten Anwendungen vollkommen ausreichend ist.

Whrend Hochsprachen wie C oder Pascal die DLLs einfach benutzen knnen, mssen Sie in Excel oder Winword entsprechende Funktionen verwenden. In Excel heien diese Befehle Register und Aufrufen beziehungsweise in VBA Declare und Call. Die Benutzung dieser Funktionen lesen Sie am besten in den entsprechenden Hilfetexten des Produkts nach, da Sie den hier vorhandenen Platz bei weitem sprengt.

Die Pascal-Unit CKALEND.PAS legt die Konstanten fr die DLL/Unit fest. Fr andere Sprachen sind die Definitionen entsprechend anzupassen. Die mit ft... beginnenden Eintrge definieren die einzelnen Feiertage:

Ostersonntag := Feiertag (1998,ftOstersonntag)

Kmonatk, Kmonatv, Ktagk und Ktagv sind Matrizen mit den Kurz- und Langnamen von Monaten und Tagen, die unabhngig von der Bibliothek sind. Fragen, Anregungen und die kommerzielle Nutzung der Bibliotheken knnen Sie mit dem Autor Christian Hartnick per Email ch.hartnick@t-online.de klren - die private Nutzung ist frei.

Definition der Funktionen					Index	Bemerkung
=========================					=====	=========
Function Feiertag (J:longint; Art:longint) : longint;		8	Datumsnummer eines Feiertages Art des Jahres J (-1: Kein Feiertag)
Function FeiertageA (Art:longint) : longint;			13	Nchste interne Nummer Art der offz. sterreichischen Feiertage
Function FeiertageAlle (Art:longint) : longint;			12	Nchste interne Nummer Art aller Feiertage
Function FeiertageCH (Art:longint) : longint;			14	Nchste interne Nummer Art der offz. Schweizerischen Feiertage
Function FeiertageD (Art:longint) : longint;			15	Nchste interne Nummer Art der offz. Deutschen Feiertage
Function FeiertagKurz (Art:longint; var Name:pchar) : longint;	10	Kurzname Name des Feiertags und Lnge (Name)
Function FeiertagLand (Art:longint; var Name:pchar) : longint;	11	Lndernamen Name des Feiertags und Lnge (Name)
Function FeiertagName (Art:longint; var Name:pchar) : longint;	9	Langname Name des Feiertags und Lnge (Name)
Function KalenderWoche (T,M,J:longint) : longint;		1	Deutsche Kalenderwoche nach DIN zu einem Tag
Function Schaltjahr (const J:longint) : boolean;		4	Test auf Schaltjahr
Function TageDesJahres (const J:longint) : longint;		5	Anzahl der Tage eines Jahres (365 oder 366)
Function TageDesMonats (const M,J:longint) : longint;		6	Anzahl der Tage eines Monats (28, 29, 30 oder 31)
Function TagesNr1900 (T,M,J:longint) : longint;			2	Datumsnummer seit dem 1.1.1900 (=1)
Function TestDatum (const T,M,J : longint) : boolean;		7	Test ob das angegebene Datum existiert
Function WochenTag (T,M,J:longint) : longint;			3	Deutscher Wochentag (Mo=1, Di=2, ..., So=7)
((Tabelle der Funktionen in KALEND.DCU, CDATE16.DLL, CDATE32.DLL))

Konstrukt					Bemerkung
=========					=========
Tkalender = class(TstringGrid)			Die Komponente Kalender ist ein direkt Nachfolger von TstringGrid
TcalType = (ktYear, ktMonth, ktWeek, ktDay);	Spezieller Typ, der die Erscheinungsweise festlegt
TupdMeth = (umSize, umShow, umBoth);		Spezieller Typ, der das Update-Verfahren festlegt
TspecialDay = (sdaNone, sdaAll, sdaGermany, sdaAustria, sdaSwitzerland);
						Spezieller Typ, der die Anzeige der Feiertage beeinflut.
	
Procedure UpdateCalendar (Method : TupdMeth); virtual;	Methode zum Neuzeichnen der Komponente
Property Date: TdateTime;			das Referenzdatum
Property Kind: TcalType				die Erscheinungsweise
Property FreeColor: Tcolor;			die Farbe der Wochenendfelder
Property WeekFormat: String;			Datumsformat fr die Woche
Property DayFormat: String;			Datumsformat fr den Tag
Property SpecialDay: TSpecialDay;		Auswahl der Feiertage
Property BeforeDateprinted: TdateEvent;		Ereignis, ber das Termine in den Kalender einzutragen sind
Property BeforeTimeprinted: TtimeEvent;		Ereignis, ber das Termine in den Kalender einzutragen sind (ktDay)
Property BeforeCellcolored: TcolorEvent;	Ereignis, ber das bestimmte Zellen einzufrben sind
((Tabelle der Eigenschaften in TKalender))

Wenn Sie den Gltigkeitsbereich der Datumsfunktionen selbst erweitern wollen, mssen Sie die Historie des Kalenders beachten. Wie dem Bertelsmann Universal Lexikon zu entnehmen ist, hat der Abt Dionysius Exiguus die christliche Zeitrechnung festgelegt, der in seinen Ostertafeln das Jahr der Menschwerdung des Herrn als Jahr Eins annahm. Wie wir heute wissen, erblickte Jesus jedoch 3 bis 7 Jahre vor dem angenommenen Datum das Licht der Welt.

Die Anfnge unseres Kalenders finden sich im gyptischen, der seit dem 4. Jahrtausend vor Christus ein reines Sonnenjahr mit 365 Tagen und 12 Monaten zu je 30 Tagen plus fnf Zusatztage ohne Schalttage definiert hat. 238 vor Christus nderte sich das zu einem Sonnenjahr mit 365 Tagen inklusive einem Schalttag in jedem vierten Jahr.

Die Rmer hatten zuerst ab dem 8. Jahrhundert vor Christus ein Mondjahr zu zehn, seit Knig Numa (715 v. Chr.) zu zwlf Monaten. Julius Csar besann sich auf die gypter und fhrte kurz vor seinem Tod 46 vor Christus ein reines Sonnenjahr mit 365 Tagen sowie einem Schalttag in jedem vierten Jahr ein (Julianischer Kalender).

In der Neuzeit fhrte Papst Gregor XIII. (Gregorianischer Kalender) in den katholischen Lndern seit dem 15. Oktober 1582 ein reines Sonnenjahr mit 365 Tagen und damit unseren heutigen Kalender ein. Das protestantische Deutschland folgte am 1. Mrz 1700, England 1752, Schweden 1753, Japan 1873, Bulgarien sowie die Trkei 1916, die UdSSR 1918, Rumnien 1919, Griechenland 1923 und zuletzt China 1949.

Bei der Ersteinfhrung folgte auf den 4. Oktober 1582 des alten Kalenders sofort der 15. Oktober 1582. Schaltjahre sind jedes vierte Jahr mit 366 Tagen, eine Ausnahme bilden die nicht durch 400 teilbaren Jahrhunderte. Die genaue Jahreslnge betrgt damit 365 Tage 5 Stunden 49 Minuten 12 Sekunden, da heit das Jahr ist um 26 Sekunden lnger als die jetzige natrliche Jahreslnge



Dateien und Verzeichnisse:
==========================

Delphi 1 und 16-Bit DLL:
------------------------
datum\16\cKalend.pas	Deklaration der Konstanten
datum\16\KALEND.DCU	Delphi 1 Funktionsbibliothek
datum\16\Kalend.int	Delphi 1 Funktionsbibliothek Interfacedefinitionen

datum\16\CDATE16.DLL	16-Bit DLL
datum\16\cdate16.dpr	Delphi-Projekt fr die DLL

datum\16\DLLTEST.EXE	DLL-Testprogramm
datum\16\dlltest.dpr	Delphi-Projekt fr das DLL-Testprogramm
datum\16\u_dllt16.dfm	Delphi-Formular zum DLL-Testprogramm
datum\16\u_dllt16.pas	Delphi-Unit zum DLL-Testprogramm

datum\16\TERMIN.EXE	Komponenten-Testprogramm
datum\16\termin.dpr	Delphi-Projekt fr das Komponenten-Testprogramm
datum\16\U_termin.dfm	Delphi-Formular zum Komponenten-Testprogramm
datum\16\U_termin.pas	Delphi-Unit zum Komponenten-Testprogramm

Delphi 1 Komponente
-------------------
datum\16\lib\KALENDER.DCU	Delphi 1 Komponente
datum\16\lib\kalender.dcr	Ressource der Delphi 1 Komponente



Delphi 3 und 32-Bit DLL:
------------------------
datum\32\cKalend.pas	Deklaration der Konstanten
datum\32\Kalend.dcu	Delphi 3 Funktionsbibliothek
datum\32\Kalend.int	Delphi 3 Funktionsbibliothek Interfacedefinitionen

datum\32\cdate32.dll	32-Bit DLL
datum\32\cdate32.dpr	Delphi-Projekt fr die DLL

datum\32\dlltest.exe	DLL-Testprogramm
datum\32\dlltest.dpr	Delphi-Projekt fr das DLL-Testprogramm
datum\32\u_dllt32.dfm	Delphi-Formular zum DLL-Testprogramm
datum\32\u_dllt32.pas	Delphi-Unit zum DLL-Testprogramm

datum\32\termin.exe	Komponenten-Testprogramm
datum\32\termin.dpr	Delphi-Projekt fr das Komponenten-Testprogramm
datum\32\U_termin.dfm	Delphi-Formular zum Komponenten-Testprogramm
datum\32\U_termin.pas	Delphi-Unit zum Komponenten-Testprogramm

Delphi 3 Komponente
-------------------
datum\32\lib\Kalender.dcu	Delphi 3 Komponente
datum\32\lib\KALENDER.DCR	Ressource der Delphi 3 Komponente



OCX/ActiveX Komponente:
-----------------------
datum\ocx\KalenderX.ocx		OCX/ActiveX Komponente
datum\ocx\REGSVR32.EXE		Windows 95-OCX-Registrierer
datum\ocx\register.bat		Registrieren des OCX/ActiveX unter Windows 95
datum\ocx\unreg.bat		Deregistrierung des OCX/ActiveX unter Windows 95
