Элемент управления для работы с датами


Очень часто встречаются приложения, в которых пользователю предлагается ввести дату. В четвертом уроке "Работа с элементами управления" было показано как можно реализовать эту идею. Но в Visual C++ 6.0 добавился класс CDateTimeCtrl, который позволяет ввести значение вручную или вызвать календарь и выбрать необходимую дату из него.

Создайте SDI-приложение при помощи AppWizard. Назовите его DateTime.
Щелкните правой кнопкой мыши на имени класса CDateTimeView в окне ClassView и выберите в контекстном меню пункт Add Member Variable.
В поле Variable type (тип переменной) укажите тип CDateTimeCtrl. В поле Variable Declaration (описание переменной) укажите имя переменной m_date. В поле Access (доступ) установите флажок на поле Protected (защищенный). Нажмите на кнопку ОК.
Теперь перейдем к формированию линейного регулятора.
Все элементы управления формируются методом OnCreate() класса представления CDateTimeView. Эта функция обрабатывает сообщение Windows WM_CREATE. Чтобы включить этот метод в класс представления щелкните правой кнопкой мыши на имени класса CDateTimeView в коне ClassView и выберите в контекстном меню пункт Add Windows Message Handler (Добавить обработчик сообщений). Выберите WM_CREATE из списка слева и затем щелкните на кнопку Add and Edit (Добавить и редактировать). После комментария TODO вставьте строку:
     CreateDateTime() 

Снова щелкните правой кнопкой мыши на имени класса CDateTimeView в окне ClassView и выберите в контекстном меню пункт Add Member Function (Добавить функцию член). Задайте тип возвращаемого значения в поле Function Type (тип функции) как void, а в поле Function Declaration (описание функции) введите объявление функции CreateDateTime(). Метод должен быть объявлен открытым (public). Нажмите на кнопку ОК.

Добавьте в эту функцию следующий код:

     void CDateTimeView::CreateDateTime()
     {
          m_date.Create(WS_CHILD | WS_VISIBLE | DTS_SHORTDATEFORMAT, CRect (100,40,300,70), this, IDC_DATE) 
     }


В меню View запустите Resource Symbols... Откроется диалоговое окно Resource Symbols. Нажмите на кнопку New... В диалоговом окне New Symbol в поле Name введите IDC_DATE, поле Value оставьте по умолчанию. Нажмите на кнопку ОК, затем на кнопку Close.
Откомпилируйте приложение и вы увидите линейный регулятор.

Если у Вас все работает, то пора разобраться что мы написали.
В классе CDateTimeCtrl, объектом которого является m_date, определены специальные константы стилей, которые можно использовать при создании экземпляра класса.

DTS_APPCANPARSE Настраивает элемент ввода даты таким образом, что он передает часть функций управления приложению в то время, когда пользователь вводит дату
DTS_LONGDATEFORMAT Выводит дату в расширенном формате. Например, Monday, December 13, 1999 в версии для США.
DTS_RIGHTALIGN Выравнивает выведенную информацию по правой границе поля (по умолчанию выполняется выравнивание по левой границе)
DTS_SHOWNONE Вывод даты является необязательной функцией. Настройка вывода даты выполняется специальным флажком.
DTS_SHORTDATEFORMAT Выводит дату в сокращенном формате. Например, 12/13/99 в версии для США.
DTS_TIMEFORMAT Помимо датыЮ выводит время.
DTS_UPDOWN Для ввода даты вместо календаря используется инкрементный регулятор.

Среди многочисленных методов класса CDateTimeCtrl, которые позволяют настраивать шрифт, цвет и многое другое, важнейшим является функция GetTime(). Этот метод считывает установленные пользователем время и дату.
Этот метод формирует объект класса COleDateTime или CTime, либо структуру SYSTEMTIME, члены которой доступны всем ыункциям приложения.
Поработайте с этим элементом управления и вы увидите насколько он удобен.

Содержание

Hosted by uCoz



Смотрите также:



Hosted by uCoz