Новости

100 компонентів Delphi - DateTimePicker, MonthCalendar, Calendar

3.4.3 Введення і відображення дат і часу - компоненти DateTimePicker, MonthCalendar, Calendar

Приклади компонентів введення і відображення дат і часу наведені на рис. 3.13.

З цих компонентів найбільш зручним є DateTimePicker (на рис. 3.13, зліва вгорі показаний цей компонент в режимі введення часу, а нижче - в двох варіантах режиму введення дати). Компонент дуже ефектний за рахунок появи випадає календаря (іноді навіть занадто ефектний для строго оформленого додатку) та забезпечує безпомилковий з точки зору синтаксису введення дат і часу. Його властивість Kind визначає режим роботи компонента: dtkDate - введення дати, dtkTime - введення часу.

При введенні дат можна задати властивість DateMode рівним dmComboBox - наявність випадає календаря, або рівним dmUpDown - наявність кнопок збільшення і зменшення (див. Середній компонент DateTimePicker на рис. 3.13), що нагадують ті, які використовуються в описаних раніше компонентах UpDown і SpinEdit. Тільки в даному випадку користувач може незалежно встановлювати за допомогою кнопок число, місяць і рік. Формат представлення дат визначається властивістю DateFormat, яке може набувати значень dfShort - короткий формат (наприклад, 01.12.99), або dfLong - повний формат (наприклад, 1 грудня 1999 г.).

Значення дати за замовчуванням можна задати в інспектор об'єктів через властивість Date. Це ж властивість читається для визначення заданої користувачем дати. При читанні Date треба враховувати тип цієї властивості - TDateTime, що представляє собою число з плаваючою комою, ціла частина якого містить число днів, відраховані від деякого початку календаря, а дрібна частина дорівнює частині 24-годинного дня, тобто характеризує час і не відноситься до дати. Для 32-розрядних версій Delphi за початок календаря прийнята дата 12/30/1899 00 годин. У Delphi 1 за початок відліку прийнятий рік 1, тобто для перекладу дати Delphi 1 в дату наступних версій Delphi треба відняти від дати число 693594.

Для перетворення значення властивості Date в рядок можна скористатися функцією DateToStr. Наприклад, оператор

Memol.Lines.Add ( 'Дата:' + DateToStr (DateTimePicker1.Date)); додасть у вікно 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.

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: