Лабораторная работа №6

Использование компонентов ввода дат и времени

 

Задание 1.

Компонент DateTimePicker

 

            Компонент предназначен для безошибочного ввода пользователем дат и времени. Имеет различные варианты оформления. Возможен ввод даты в режиме выпадающего календаря или последовательным перебором. Возможно отображение даты в длинном (8 январь 2007) или коротком (8.01.2007) формате. Возможно задание диапазона дат, которые может вводить пользователь.

            Основное свойство: Date. Содержит введенную дату или время в формате TDateTime. Перевод в строковый формат осуществляется функциями DateToStr и TimeToStr соответственно.

            Ввод даты или времени определяет свойство Kind.

            Формат ввода даты определяется значением свойства DateFormat.

            Вариант оформления определяется свойством DateMode.

 

Методика создания приложения

 

  1. Создадим новый проект.
  2. Расположим на форме компоненты, согласно рисунку.

  1. Напишем обработчики событий «OnClick» для каждой копки.

 

Задаем что будем вводить

 

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).

 

Методика создания приложения

 

  1. Создадим новый проект.
  2. Расположим на форме компоненты, согласно рисунку.

  1. Напишем обработчики событий «OnClick» для каждой копки и «OnExit» для MaskEdit.

 

Разрешаем/запещаем множественный выбор

 

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); //-Начало

 

Запустим программу на выполнение. Зададим режим выбора диапазона дат. Выделим диапазон дат. Нажмем Созданную нами кнопку. Убедимся, что в метки выведены даты начала и конца выделенного диапазона

 

 

 

 

 

 

 

 

 

 

 

Hosted by uCoz