100 Компонентів delphi - datetimepicker, monthcalendar, calendar
Приклади компонентів введення і відображення дат і часу наведені на рис. 3.13.
Мал. 3.13
Приклади компонентів відображення дат і часу
Значення дати за замовчуванням можна задати в інспектор об'єктів через властивість Date. Це ж властивість Новомосковскется для визначення заданої користувачем дати. При читанні Date треба враховувати тип цієї властивості - TDateTime. представляє собою число з плаваючою комою, ціла частина якого містить число днів, відраховані від деякого початку календаря, а дрібна частина дорівнює частині 24-годинного дня, тобто характеризує час і не відноситься до дати. Для 32-розрядних версій Delphi за початок календаря прийнята дата 12/30/1899 00 годин. У Delphi 1 за початок відліку прийнятий рік 1, тобто для перекладу дати Delphi 1 в дату наступних версій Delphi треба відняти від дати число 693594.
При введенні дат можна задати значення властивостей MaxDate і MinDate. визначають відповідно максимальну і мінімальну дату, яку може задати користувач.
Якщо під час написання часу dtkTime введене користувачем значення можна знайти в властивості Time. тип якого - той же розглянутий вище TDateTime. Перетворити час в рядок можна функцією TimeToStr.
Компонент MonthCalendar схожий на компонент DateTimePicker. працює в режимі введення дат. Правда, в компоненті MonthCalendar передбачені деякі додаткові можливості: можна допустити множинний вибір дат в деякому діапазоні (властивість MultiSelect), можна вказувати в календарі номера тижнів з початку року (властивість WeekNumbers), перебудовувати календар, задаючи перший день кожного тижня (властивість FirstDayOfWeek) і т.п. Для деяких офісних додатків все це досить зручно.
Компонент Calendar являє собою менш барвистий і більш буденно оформлений календар на один місяць. Замість властивості Date в ньому передбачені окремі властивості Year-рік, Month - місяць, Day - день. Все це цілі числа, з якими іноді зручніше мати справу, ніж з типом TDateTime. Перед відображенням на екрані або в процесі проектування треба задати значення Month і Year. щоб компонент відобразив календар на вказаний місяць зазначеного року. Втім, якщо вам треба мати календар на поточний місяць, треба встановити в true значення властивості UseCurrentDate (встановлено за умовчанням). У цьому випадку за замовчуванням буде показаний календар на поточний місяць з виділеним в ньому поточним днем. Властивість StartOfWeek задає день, з якого починається тиждень. За замовчуванням задано 0 - неділя, як це прийнято в західних календарях. Але для нас все-таки якось звичніше починати тиждень з робочого дня - понеділка. Так що бажано поставити StartOfWeek = 1.