Mit Delphi einen Wochenkalender programmieren

Im Internet findet man viele Quellcodes und Anleitungen zur Programmierung eines Wochenkalenders in PHP. Für Delphi sieht es da leider nicht so gut aus.

Das war der Grund für mich mal ein Beispiel für PHP nach Delphi zu portieren. Herausgekommen ist ein Wochenkalender der mir neben den Tagen des aktuellen Monats auch die letzten Tage des Vormonats, die ersten Tage des Folgemonats und die Feiertage des angegebenen Bundeslandes  anzeigt. Der Kalender passt sich beim ändern der Größe des Fensters automatisch an. Schaltjahre werden ebenfalls berücksichtigt.

Wochenkalender

Zwischen den einzelnen Monaten kann man per Pfeil nach Links und Pfeil nach rechts Taste wechseln. Drückt man die nach oben Taste kommt man zurück zum aktuellen Monat.

Mein Wochenkalender wird komplett dynamisch erstellt. Die Hintergrund, wie auch die Schriftfarben aller Komponenten können frei geändert werden.

Hierzu zählen z.B. folgende.

  • Anzeige von Monat und Jahr über dem Kalender,
  • Wochentage von Mo – So über dem Kalender
  • Aktueller Tag
  • Normale Kalendertage
  • Letzte Tage des Vor- und erste Tage des Folgemonats.
  • Sonntage
  • Feiertage

 

Erstellen Sie zunächst ein neues Projekt und speichern Sie die unit als „uMain.pas“.
Wir benötigen für dieses Beispiel lediglich ein Panel, dem Sie den Namen „pnlContainer“ geben.
Dieses Panel wird, wie der Name schon sagt, als Container für alle dynamisch zu erstellenden Komponenten genutzt.

Hier der komplette Quellcode

uMain.pas

 

Jetzt brauchen wie noch die Unit „uFunktionen“, in der sich unter anderem die Funktionen zur Berechnung der Feiertage befindet.

uFunktionen.pas

Um die für das eigene Bundesland richtigen Feiertage angezeigt zu bekommen, muss im onCreate der Hauptform der Variablen „Bundesland“ der passende Wert zugewiesen werden. Hier die vollständige Liste

Wochenkalender

Der Code zur Berechnung der Feiertage ist nicht von mir, diesen habe ich vor vielen Jahren im Internet gefunden. Leider kann ich auch nicht mehr sagen wo genau ich diesen gefunden habe oder von wem dieser Code stammt.

Diesen Code könnte man jetzt noch dahingehend erweitern, dass man daraus einen Terminkalender macht. Hier könnte man die Termine in eine MySQL oder SQLite Datenbank schreiben. Für jeden Termin der anschließend ausgelesen und im Monatskalender angezeigt werden soll, könnte man nun dynamisch ein Label, Panel oder was auch immer erzeugen und den Namen des Termins, wie die Zeit anzeigen lassen.

 

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

Kommentar verfassen