Есть своя интересная статья по программированию? Тебе сюда ᐷ предложить свою статью


DateTimePicker, MonthCalendar и CCalendar - ввод и отображение даты/времени

4
+4
0
Компонент DateTimePicker
Из этих компонентов наиболее удобным является DateTimePicker. Компонент очень эффектен за счет появления выпадающего календаря (иногда даже слишком эффектен для строго оформленного приложения) и обеспечивает безошибочный с точки зрения синтаксиса ввод дат и времени. Его свойство Kind определяет режим работы компонента:
dtkDate - ввод даты;
dtkTime - ввод времени.
При вводе дат можно задать свойство DateMode равным dmComboBox - наличие выпадающего календаря, или равным dmUpDown - наличие кнопок увеличения и уменьшения, напоминающий компоненты UpDown и CSpinEdit. Но в данном случае с помощью кнопок пользователь может независимо устанавливать число, месяц и год. Формат представления дат определяется свойством DateFormat, которое может принимать значения dfShort - краткий формат (например, «22.03.11»), или dfLong - полный формат (например, «22 Марта 2011г.»).
 
Значение даты по умолчанию можно задать в Инспекторе Объектов через свойство Date. Это же свойство читается для определения заданной пользователем даты. При чтении Date надо учитывать тип этого свойства - TDateTime, представляющий собой число с плавающей запятой, целая часть которого содержит число дней, отсчитанное от некоторого начала календаря, а дробная часть равна части 24-часового дня, T.e. характеризует время и не относится к дате. За начало календаря принята дата 12/30/1899 00 часов.
 
Для преобразования значения свойства Date в строку можно воспользоваться функцией DateToStr. Например, оператор добавит в окно Memo1 строку вида "Дата: 08.03.00":
Memo1->Lines->Add("Дата: " + DateToStr(DateTimePicker1->Date));
При вводе дат можно задать значения свойств MaxDate и MinDate, определяющих соответственно максимальную и минимальную дату, которую может задать пользователь.
В режиме ввода времени dtkTime введенное пользователем значение можно найти в свойстве Time, тип которого такой же как и TDateTime. Преобразовать время в строку можно функцией TimeToStr.
 
Компонент MonthCalendar
Компонент MonthCalendar похож на компонент DateTimePicker, работающий в режиме ввода дат. Правда, в компоненте MonthCalendar предусмотрены некоторые дополнительные возможности:
- можно допустить множественный выбор дат в некотором диапазоне (свойство MultiSelect);
- можно указывать в календаре номера недель с начала года (свойство WeekNumbers);
- перестраивать календарь, задавая первый день каждой недели (свойство FirstDayOfWeek) и т.п.
Для некоторых офисных приложений все это достаточно удобно.
 
Компонент CCalendar
Компонент CCalendar представляет собой менее красочный и более обыденно оформленный календарь на один месяц. Вместо свойства Date в нем предусмотрены отдельные свойства Year - год, Month - месяц, Day - день. Все это целые числа, с которыми иногда удобнее иметь дело, чем с типом TDateTime. Перед отображением на экране или в процессе проектирования надо задать значения Month и Year, чтобы компонент отобразил календарь на указанный месяц указанного года. Впрочем, если вам надо иметь календарь на текущий месяц, надо нужно установить в true значение свойства UseCurrentDate (установлено по умолчанию). В этом случае по умолчанию будет показан календарь на текущий месяц с выделенным в нем текущим днем. Свойство StartOfWeek задает день, с которого начинается неделя. По умолчанию задано 0 - воскресенье, как это принято в западных календарях. Но для нас все-таки как-то привычнее начинать неделю с рабочего дня понедельника. Так что желательно задать StartOfWeek = 1.

Добавить комментарий


Защитный код Обновить