******************************
Rocnikovy projekt - Kalendar
******************************

Pavel Sasek
sasek.pavel@tiscali.cz
letni semestr 2002/2003


Program Kalendar zobrazi a pripadne vytiskne rocni kalendar se zvolenymi obrazky.


I. Uzivatelska cast
-------------------

Program je tvoren jednim oknem, ktere se sklada z nekolika casti - nahledu, posuvniku, tlacitek a komponenty SpinEdit.
Nahled zobrazuje vybrany mesic kalendare, mesic lze zvolit posuvnikem. V horni casti stranky nahledu je letopocet, pod nim vybrany obrazek, pak nazev mesice a dole vypis jednotlivych dnu (1 - 28/29/30/31) do radku podle tydnu. Tlacitka muzeme rozdelit na tri skupiny:
- Prvni obsahuje dvanact tlacitek s nazvy mesicu (leden az prosinec) a voli se jimi obrazek, ktery bude na strance daneho mesice.
- Druha skupina tlacitek (tlacitko Rok a Mesice) je uzavrena do ramecku s nadpisem Pismo. Jejich stisk vyvola FontDialog a urcuji pismo, jakym se napise letopocet, respektive nazvy mesicu.
- Nakonec tlacitko Tisk - umoznuje vsechny nebo vybrane stranky kalendare vytisknout.
Komponenta SpinEdit v ramecku Rok slouzi k volbe letopoctu.


II. Programatorska cast
-----------------------

Kazdy mesic ma vlastni komponentu Image, na jejiz Canvas se kresli dana stranka kalendare. Samostatnou komponentu Image ma rovnez nahled, kam se stranka (ktera - podle hodnoty posuvniku) kopiruje pomoci StretchDraw.
Tlacitka ve skupine Obrazky volaji po stisku proceduru Button01Click, komponenta SpinEdit1 proceduru SpinEdit1Change (zde navic proceduru Kalendar), tlacitko Rok proceduru ButtonRokPismoClick, tlacitko Mesice proceduru ButtonMesicePismoClick, tlacitko Tisk proceduru ButtonTiskClick, posuvnik pri zmene proceduru TrackBar1Change.

- procedura FormCreate: Volaji se zde procedury SpinEdit1Change a Mesice.

- funkce KteryImage: Pomocna funkce pro cykly, prevadi cislo 1 - 12 na Image1 - Image12, zaroven do promenne popis vlozi nazev mesice.

- procedura Kalendar: Vytvori pomocnou matici s cisly dnu 1 - 28/29/30/31 (s pomoci DayOfWeek) v radcich podle tydnu a pak ji vytiskne na Canvas komponenty Image? (podle parametru - kam).

- procedura Button01Click: Vklada obrazek ze souboru (podle OpenPictureDialog) na Canvas komponenty Image? (podle parametru - Sender), zmensi ho v pomeru pomoci StretchDraw.

- procedura TrackBar1Change: Pomoci StretchDraw zkopiruje Canvas komponenty Image?, dane hodnotou posuvniku, na Canvas komponenty ImageNahled.

- procedura SpinEdit1Change: Na Canvas vsech komponent Image napise letopocet a pro vsechny zavola proceduru Kalendar.

- procedura Mesice: Na Canvas vsech komponent Image napise nazev mesice.

- procedura ButtonTiskClick: Vytiskne zvolene stranky (podle PrintDialog) - s pomoci StretchDraw je zkopiruje na platno Printer.

- procedura ButtonRokPismoClick: Zvolena nastaveni pisma (podle FontDialog) se ulozi do promenne RokPismo a zavola proceduru SpinEdit1Change (provedou se zmeny, aktualizuje se nahled).

- procedura ButtonMesicePismoClick: Zvolená nastaveni pisma (podle FontDialog) se ulozi do promenne MesicePismo a zavola proceduru Mesice (provedou se zmeny, aktualizuje se nahled).