Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория Win32 и Dialog.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
729.97 Кб
Скачать

Компонент DataTimePicker

Компонент Delphi DataTimePicker расположен на странице Win32 Палитры компонентов. Он предназначен для ввода времени и даты (формат записи зависит от локальных настроек Windows).

Рисунок 16 – Компонент DataTimePicker

Компонент DataTimePicker позволяет вводить значение четырмя способами:

  • вводя прямо в строке ввода;

  • с помощью кнопок изменения месяца (расположены по бокам от названия месяца и года);

  • в процессе работы приложения, при нажатии на кнопку с треугольничком смотрящим вниз, расположенном справа (для даты).

  • в приложении используя кнопки изменения величины, похожие на те которые используются в  компоненте SpinEdit.

При изменении в поле времени или даты, генерируется событие OnChange.  При раскрытии календаря возникает событие OnDropDown, при закрытии - OnCloseUp.

Основные свойства компонента DateTimePicker:

  • Kind - задает содержимое компонента. При dtkDate в поле вводятся даты, dtkTime - вводится время;

  • DataMode - (используется при работе с датами), dmUpDown - с помощью кнопок изменения, dmCombobox - с помощью календаря;

  • DateFormat - представление даты в коротком -dfShort (26.02.2012) или длинном - dfLong (26 февраля 2012) формате;

  • ShowCheckBox - если значение равно TRUE, то рядом слева от строки будет квадратик (поле с флажком), его состояние можно проверить, оно будет содержаться в поле Checked;

  • Date - отображает текущую выделенную дату,

  • MaxDate и MinDate - максимальная и минимальная допустимая дата соответственно.

Компонент Delphi MonthCalendar

Рисунок 17 – Компонент MonthCalendar

Рисунок Компонент Delphi MonthCalendar (Календарь) находиться на странице Win32 Палитры компонентов. С его помощью легко и быстро можно можно выбрать нужную дату используя. мышь.

Рисунок 18 – Компонент MonthCalendar, помещенный на форму

Поместив компонент на форму, он сразу же будет готов к работе.

Текущая дата указывается выделением красным кружком, внизу развернуто пишется сегодняшнее число. Выбранная дата подсвечена синим цветом. Выбор даты производиться щелчком мыши на нужном дне. Если надо изменить месяц, то щелкаем мышью по кнопкам с треугольничками, расположенными по краям от названия месяца и года, на синем фоне. Если надо будет вернуться на сегодняшнюю дату, то на поле компонента правой кнопкой щелкнуть и в появившемся меню (одна строчка) выбрать пункт "к сегодняшней дате".

Свойство Date содержит значение даты и используется пользователем в приложении. Если мы хотим видеть номера недели для этого свойству WeekNumbers присвоить значение TRUE. Неделя может начинаться с другого дня, например с воскресенья. За это отвечает свойство FirstDayOfWeek, для воскресенья это - dowSunday, по умолчанию берутся системные настройки. За вывод нижней строки с сегодняшним днем отвечает свойство ShowToday.

Компоненты DateTimePicker, MonthCalendar, Calendar

Примеры компонентов ввода и отображение дат и времени приведены на рисунке 19.

Рисунок 19 - Примеры компонентов отображения дат и времени

Из этих компонентов наиболее удобным является DateTimePicker (на рисунке 19, слева вверху показан этот компонент в режиме ввода времени, а ниже — в двух вариантах режима ввода даты). Компонент очень эффектен за счет появления выпадающего календаря (иногда даже слишком эффектен для строго оформленного приложения) и обеспечивает безошибочный с точки зрения синтаксиса ввод дат и времени. Его свойство Kind определяет режим работы компонента: dtkDate — ввод даты, dtkTime — ввод времени.

При вводе дат можно задать свойство DateMode равным dmComboBox — наличие выпадающего календаря, или равным dmUpDown — наличие кнопок увеличения и уменьшения (см. средний компонент DateTimePicker на рисунке 19), напоминающих те, которые используются в описанных ранее компонентах 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.