Шаг 11.
Вкладка Win32. Компонент TDateTimePicker

    На этом шаге мы рассмотрим компонент TDateTimePicker.

    Компонент TDateTimePicker (Ввод даты-времени) представляет собой раскрывающийся список и используется для ввода даты и времени с клавиатуры (в соответствии с локальными настройками Windows). При раскрытии списка открывается календарь (компонент TMonthCalendar). При проектировании настраиваются следующие свойства компонента.

    Свойства компонента TDateTimePicker.

Таблица 1. Свойства компонента TDateTimePicker
Свойство Описание
type TDTCalAlignment = (dtaLeft, dtaRight);
property CalAlignment: TDTCalAlignment;
Определяет размещение календаря относительно поля:
  • dtaLeft - слева от компонента;
  • dtaRight - справа от компонента.
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.




Предыдущий шаг Содержание Следующий шаг