Лабораторная работа №6
Использование компонентов ввода дат и времени
Задание 1.
Компонент DateTimePicker
Компонент предназначен для безошибочного ввода пользователем дат и времени. Имеет различные варианты оформления. Возможен ввод даты в режиме выпадающего календаря или последовательным перебором. Возможно отображение даты в длинном (8 январь 2007) или коротком (8.01.2007) формате. Возможно задание диапазона дат, которые может вводить пользователь.
Основное свойство: Date. Содержит введенную дату или время в формате TDateTime. Перевод в строковый формат осуществляется функциями DateToStr и TimeToStr соответственно.
Ввод даты или времени определяет свойство Kind.
Формат ввода даты определяется значением свойства DateFormat.
Вариант оформления определяется свойством DateMode.
Методика создания приложения
Задаем что будем вводить
if (DateTimePicker1->Kind == dtkTime)
DateTimePicker1->Kind = dtkDate; //-Вводим дату
else DateTimePicker1->Kind = dtkTime; //-Вводим время
Задаем способ ввода даты
if (DateTimePicker1->Kind == dtkDate) //-Если выбран режим
//- ввода даты
{
if (DateTimePicker1->DateMode == dmComboBox)
DateTimePicker1->DateMode = dmUpDown; //-Последовательный перебор
else DateTimePicker1->DateMode = dmComboBox; //-Выпадающий календарь
}
else ShowMessage("Перейдите в режим ввода даты");
Задаем формат даты
if (DateTimePicker1->Kind == dtkDate)//-Если выбран режим
//- ввода даты
{
if (DateTimePicker1->DateFormat == dfShort)
DateTimePicker1->DateFormat = dfLong;//-Длинный формат
else DateTimePicker1->DateFormat = dfShort;//-Короткий формат
}
else ShowMessage("Перейдите в режим ввода даты");
Выводим значение даты или времени
//-Если выбран режи ввода дат
if (DateTimePicker1->Kind == dtkDate)
StaticText1->Caption = DateToStr(DateTimePicker1->Date);
//-Если выбран режим ввода времени
if (DateTimePicker1->Kind == dtkTime)
StaticText1->Caption = TimeToStr(DateTimePicker1->Date);
Задаем диапазон ввода дат
//-Минимальное значение
DateTimePicker1->MinDate = DateTimePicker2->Date;
//-Максимальное значение
DateTimePicker1->MaxDate = DateTimePicker3->Date;
Завершение работы
Close();
Задание 2.
Компонент MonthCalendar
Компонент MonthCalendar похож на компонент DateTimePicker в режиме ввода дат, однако он обладает некоторыми дополнительным возможностями:
‑ Присутствует множественный выбор дат в некотором диапазоне (свойство MultiSelect).
‑ Можно указать номера недель с начала года (свойство WeekNumber).
‑ Можно перестроить календарь, задавая первый день недели (свойство FirstDayOfWeek).
Методика создания приложения
Разрешаем/запещаем множественный выбор
if (MonthCalendar1->MultiSelect)
MonthCalendar1->MultiSelect = false; //-Запрещен
else MonthCalendar1->MultiSelect = true; //-Разрешен
Разрешаем/запрещаем вывод номеров недель
if (MonthCalendar1->WeekNumbers)
MonthCalendar1->WeekNumbers = false; //-Запрещен
else MonthCalendar1->WeekNumbers = true; //-Разрешен
Проверка правильности ввода номера дня недели (событие «OnExit» для MaskEdit)
if (StrToInt(MaskEdit1->Text)>6)
MaskEdit1->Text = 6;
Изменение дня начала недели
if (MaskEdit1->Text.Length() == 0)//-Если не введен
{
ShowMessage("Введите номер дня недели");
return;
}
else //-Если введен изменяем
MonthCalendar1->FirstDayOfWeek = StrToInt(MaskEdit1->Text);
Завершение работы
Close();
Расширим программу. Добавим две метки Label и кнопку Button.
Напишем обработчик для кнопки по событию «OnClick»
Вывод начальных и конечных значений диапазона
Label1->Caption =
DateToStr(MonthCalendar1->EndDate);//-Конец
Label2->Caption =
DateToStr(MonthCalendar1->Date); //-Начало
Запустим программу на выполнение. Зададим режим выбора диапазона дат. Выделим диапазон дат. Нажмем Созданную нами кнопку. Убедимся, что в метки выведены даты начала и конца выделенного диапазона