На этом шаге мы рассмотрим компонент TDateTimePicker.
Компонент TDateTimePicker (Ввод даты-времени) представляет собой раскрывающийся список и используется для ввода даты и времени с клавиатуры (в соответствии с локальными настройками Windows). При раскрытии списка открывается календарь (компонент TMonthCalendar). При проектировании настраиваются следующие свойства компонента.
Свойства компонента 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.
Событие | Описание |
---|---|
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);
function DateToStr (Date: TDateTime): String;
function DayOfWeek (Date: TDateTime): Integer;
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;
function EncodeTime (Hour. Min, Sec, MSec: Word): TDateTime;
function FormatDateTime (const Format: String; DateTime: TDateTime): String;
function IsLeapYear (Year: Word): Boolean;
function MSecsToTimeStamp (MSecs: Comp): TTimeStamp;
function Now: TDateTime;
function StrToDate (const S: String): TDateTime;
function StrToDateTime (const S: String): TDateTime;
function StrToTime (const S: String): TDateTime;
function SystemTimeToDateTime (const SystemTime: TSystemTime): TDateTime;
function Time: TDateTime;
function TimeStampToDateTime (const TimeStamp: TTimeStamp): TDateTime;
function TimeStampToMSecs (const TimeStamp: TTimeStamp): Comp;
function TimeToStr (Time: TDateTime): String;
На следующем шаге мы рассмотрим компонент TMonthCalendar.