На этом шаге мы рассмотрим компонент TDateTimePicker.
Компонент TDateTimePicker (Ввод даты-времени) представляет собой раскрывающийся список
и используется для ввода даты и времени с клавиатуры (в соответствии с локальными настройками Windows).
При раскрытии списка открывается календарь (компонент TMonthCalendar). При проектировании настраиваются
следующие свойства компонента.
Свойства компонента TDateTimePicker.
Таблица 1. Свойства компонента TDateTimePicker
Свойство | Описание |
---|---|
type TDTCalAlignment = (dtaLeft, dtaRight); property CalAlignment: TDTCalAlignment; |
Определяет размещение календаря относительно поля:
|
property CalColors: TMonthCalColors; | С календарем связан объект класса TDateTimeColors, свойства которого определяют цвета календаря |
property Checked: Boolean; | Если выполняются условия Checked=True и ShowChecked=True, флажок рядом с полем даты (времени) будет показан и установлен. Наличие флажка или его отсутствие разрешает или запрещает ручной ввод даты или времени |
property Date: TDate; | Содержит введенную дату |
type TDTDateFormat = (dfShort, dfLong); property DateFormat: TDTDateFormat; |
Представление даты в коротком (dfShort) или длинном (dfLong) формате |
type TDTDateMode = (dmComboBox, dmUpDown); property DateMode: TDTDateMode; |
Режим работы компонента. Он может отображаться как раскрывающийся список (dmComboBox) или иметь счетчик для изменения даты (dmUpDown) |
type TDateTimeKind = (dtkDate, dtkTime); property Kind: TDateTimeKind; |
Если значение свойства равно dtkDate, компонент используется для ввода даты, при значении dtkTime - для ввода времени |
property MaxDate: TDate; property MinDate: TDate; |
Используются для ограничения диапазона вводимых дат |
property ParseInput: Boolean; | Если содержит значение True, возникает событие OnUserInput при каждом вводе пользователя в текстовое поле |
property ShowCheckbox: Boolean; | Имеет значение True, если рядом с полем отображается флажок для свойства Checked. Изменяет режим ввода данных |
property Time: TTime; | Содержит введенное пользователем время |
События компонента представлены в таблице 2.
Таблица 2. События компонента TDateTimePicker
Событие | Описание |
---|---|
property OnChange: TNotifyEvent; | Возникает при любом изменении содержимого компонента |
property OnCloseUp: TNotifyEvent; | Возникает при закрытии календаря |
property OnDropDown: TNotifyEvent; | Возникает при открытии календаря |
type TDTParseInputEvent = procedure (Sender: TObject; const UserString: String; var DateAndTime: TDateTime; var AllowChange: Boolean) of object; property OnUserInput: TDTParseInputEvent; |
Возникает при ручном вводе в текстовое поле, если ParseInput=True. UserString - введенная пользователем строка; DateAndTime - значение свойств Date и Time. В параметре AllowChange обработчик разрешает или запрещает изменения даты или времени |
Используются следующие форматы даты и времени.
TDate (или его аналог TDateTime), объявление которых сделано следующим образом.
type TDateTime = type Double;
TSystemTime представляет собой запись, содержащую полное описание текущих даты и времени.
TSystemTime = record wYear: Word; wMonth: Word; wDayOfWeek: Word; wDay; Word; wHour: Word; wMinute: Word; wSecond: Word; wMilliseconds: Word; end;
Также используется формат TTimeStamp.
TTimeStamp = record Time: Integer; Date: Integer; end;
Здесь в поле Time хранится число миллисекунд, прошедшее с полуночи, а в поле Date - число дней от
1 января 0001 года плюс 1.
Для работы с этими форматами используются стандартные процедуры, приведенные ниже. Кроме того, в приложениях,
где требуется выполнять задачи, жестко привязанные к временным интервалам, можно воспользоваться функцией
GetTickCount, возвращающей число миллисекунд, прошедших от начала суток до данного момента, но удобнее
применять компонент TTimer.
Для работы с форматами даты и времени используются следующие процедуры.
function Date: TDateTime;
Возвращает текущую дату.
function DateTimeToStr (DateTime: TDateTime): String;
Преобразование даты и времени в строку.
procedure DateTimeToSystemTime (DateTime: TDateTime; var SystemTime: TSystemTime);
Преобразование даты и времени из формата TDateTime в формат TSystemTime.
function DateToStr (Date: TDateTime): String;
Преобразование даты в строку.
function DayOfWeek (Date: TDateTime): Integer;
Номер дня недели (1..7).
procedure DecodeDate (Date: TDateTime; var Year, Month, Day: Word);
Выделение из даты года, месяца и дня.
procedure DecodeTime (Time: TDateTime; var Hour, Min, Sec, MSec: Word);
Выделение из даты часов, минут, секунд и миллисекунд.
function EncodeDate (Year, Month, Day: Word): TDateTime;
Преобразование явно заданных года, месяца и дня в дату формата TDateTime.
function EncodeTime (Hour. Min, Sec, MSec: Word): TDateTime;
Преобразование явно заданных часов, минут, секунд и миллисекунд в дату формата TDateTime.
function FormatDateTime (const Format: String; DateTime: TDateTime): String;
Преобразование даты/времени в строку в соответствии с собственным форматом.
function IsLeapYear (Year: Word): Boolean;
Имеет значение True, если год високосный.
function MSecsToTimeStamp (MSecs: Comp): TTimeStamp;
Перевод числа миллисекунд в формат TTimeStamp.
function Now: TDateTime;
Возвращает текущие дату и время.
function StrToDate (const S: String): TDateTime;
Преобразование строки, хранящей описание даты в формате, соответствующем локальным требованиям
Windows, в дату формата TDateTime.
function StrToDateTime (const S: String): TDateTime;
Преобразование строки, хранящей описание даты в формате, соответствующем локальным требованиям Windows,
в дату и время формата TDateTime.
function StrToTime (const S: String): TDateTime;
Преобразование строки, хранящей описание даты в формате, соответствующем локальным требованиям Windows,
во время в формате TDateTime.
function SystemTimeToDateTime (const SystemTime: TSystemTime): TDateTime;
Преобразование времени из формата TSystemTime в формат TDateTime.
function Time: TDateTime;
Возвращает текущее время.
function TimeStampToDateTime (const TimeStamp: TTimeStamp): TDateTime;
Преобразование из формата TTimeStamp в формат TDateTime.
function TimeStampToMSecs (const TimeStamp: TTimeStamp): Comp;
Преобразование значения времени в формате TTimeStamp в число миллисекунд.
function TimeToStr (Time: TDateTime): String;
Преобразование времени в строку.
На следующем шаге мы рассмотрим компонент TMonthCalendar.