Delphi - TMonthCalendar komponens

forráskód letöltése
Ebben a cikkben a Delphi 4.0-tól létező TMonthCalendar komponenssel ismerkedhetünk meg részletesen.

Ez a komponens arra szolgál, hogy a felhasználótól egy dátumot, illetve egy dátum tartományt kérjünk be. A dátumokat a felhasználó úgy választhatja ki, hogy közben mindig egy teljes hónapot láthat egy táblázatban. Ha viszont növeljük a komponens szélességét és magasságát annyira, hogy több ilyen naptár is elfér egymás mellett és alatt, akkor automatikusan meg is jelenik és így akár egyszerre több hónap is láthatóvá válik. Ebben a cikkben a Delphi 4.0-tól létező TMonthCalendar komponenssel ismerkedhetünk meg részletesen.

Ez a komponens arra szolgál, hogy a felhasználótól egy dátumot, illetve egy dátum tartományt kérjünk be. A dátumokat a felhasználó úgy választhatja ki, hogy közben mindig egy teljes hónapot láthat egy táblázatban. Ha viszont növeljük a komponens szélességét és magasságát annyira, hogy több ilyen naptár is elfér egymás mellett és alatt, akkor automatikusan meg is jelenik és így akár egyszerre több hónap is láthatóvá válik.

A dátumot a Date property-n keresztül érhetjük el TDate típusban. Itt adhatunk kezdő értéket, illetve innen olvashatjuk ki, hogy mit is választott a felhasználó.

A komponens színeit a CalColors property-n keresztül állíthatjuk be. E property-n belül több property-t is találhatunk, melyek típusa TColor. Az alábbiakban felsoroljuk, hogy melyik minek a színét állítja be.

BackColor - ha több naptár látható, akkor a naptárak közötti háttér színt adja meg
MonthBackColor - a naptár háttér színe
TextColor - a naptár szövegének a színe
TitleBackColor - a fejléc szöveg hátterének a színe
TitleTextColor - a fejléc szövegének a színe
TrailingTextColor - minden hónapnál vannak olyan napok, melyek az előzőből nyúlnak át, illetve a következőnek az első napjai, ezeknek a színét itt adhatjuk meg. Tipp: ha szeretnénk, hogy ezek a számok ne legyenek láthatóak, akkor válasszunk itt ugyanolyan színt, mint a naptár háttérszíne.

Lehetőségünk van arra is, hogy ne csak egy napot válasszunk ki a naptárban, hanem egy összefüggő dátum tartományt. Ehhez először a MultiSelect property-nek igaz értéket kell adni. Ezután kijelölhető egy dátum tartomány. Maximum a MaxSelectRange property-ben megadott számú napot lehet kijelölni.

Mikor egy dátum tartományt jelölünk ki, akkor a kezdő dátumot a Date property-ből, míg a befejező dátumot az EndDate property-ből olvashatjuk ki.

A ShowToday logikai típusú property-vel szabályozhatjuk, hogy látszódjon-e a komponens alján a mai dátum kiírása, vagy sem.

A mai dátumot egy piros körrel jelöli is a naptár, kivéve ha a ShowTodayCircle property-t hamisra állítjuk.

A FirstDayOfWeek property-vel beállíthatjuk, hogy melyik nappal kezdődjön a hét.

Korlátozhatjuk a felhasználót abban is, hogy mi legyen a legkisebb, illetve a legnagyobb dátum, amit a komponensben ki tud választani. Ezt a MinDate és a MaxDate property-vel tehetjük meg, melyek TDate típusúak.

Ha a WeekNumbers logikai típusú property értékét igazra állítjuk, akkor minden hét előtt megjelenik, hogy az hányadik az adott évben.


Lehetőségünk nyílik arra is, hogy a felhasználó számára kiemeljünk néhány napot a naptárban. Ez a kiemelés annyiból áll, hogy az ilyen napoknak a száma vastag betűtípussal lesz kiírva. Ehhez fel kell használnunk az OnGetMonthInfo eseményt, ahol a BoldDays eljárás hívásával megadhatjuk, hogy melyek azok a napok minden hónapban, amelyeket szeretnénk kiemelni. Ennek az eljárásnak az első paramétere egy tömb, itt kell felsorolnunk a napokat. A második paramétert az OnGetMonthInfo esemény szolgáltatja, ezt egyszerűen csak tovább kell adnunk.