Введення та відображення дат та часу – компоненти DateTimePicker, MonthCalendar, Calendar
Введення та відображення дат та часу – компоненти DateTimePicker, MonthCalendar, Calendar
- розмір шрифту зменшити розмір шрифту збільшити розмір шрифту
- Друк
Введення та відображення дат та часу – компоненти DateTimePicker, MonthCalendar, Calendar
Приклади компонентів введення та відображення дат та часу наведено на рис.1.

Приклади компонентів відображення дат та часу
З цих компонентів найбільш зручним є DateTimePicker (на рис.1, ліворуч угорі показаний цей компонент у режимі введення часу, а нижче - у двох варіантах режиму введення дати). Компонент дуже ефектний за рахунок появи календаря, що випадає (іноді навіть занадто ефектний для строго оформленого додатка) і забезпечує безпомилковий з точки зору синтаксису введення дат і часу. Його властивість Kind визначає режим роботи компонента: dtkDate - введення дати, dtkTime - введення часу.
Значення дати за замовчуванням можна встановити в Інспекторі Об'єктів через властивість Date. Це властивість читається визначення заданої користувачем дати. При читанні Date треба враховувати тип цієї властивості - TDateTime, що є числом з плаваючою комою, ціла частина якого містить число днів, відраховане від деякого початку календаря, а дробова частина дорівнює частині 24-годинного дня, тобто. характеризує час і належить до дати. Для 32-розрядних версій Delphi за початок календаря прийнято дату 12/30/1899 00 годин. У Delphi 1 початку відліку прийнято рік 1, тобто. для переведення дати Delphi 1 на дату наступних версій Delphi треба відняти з дати число 693594.
Для перетворення значення властивості Date у рядок можна скористатися функцією DateToStr. Наприклад, оператор
додасть у вікно Memo1 рядок виду "Дата: 01.12.98".
При введенні дат можна задати значення властивостей 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.