Безусловно, календарь будет очень полезен пользователям. Однако было бы желательно не только выбирать даты, но и вводить их в элементы управления. Компонент TDateTimePicker совмещает календарь и однострочный текстовый редактор, причем календарь полностью совпадает с рассмотренным выше (оба компонента являются наследниками класса TCommonCaiendar). Свойства и методы компонента представлены в табл. 5.7.
Таблица 5.7. Основные свойства и методы компонента TDateTimePicker
Объявление |
Описание |
type TDTCalAlignment = (dtaLeft, dtaRight) ; property CalAlignment : TDTCalAlignment; |
Выравнивает панель календаря по левой или правой стороне компонента |
property Checked: Boolean; |
Возвращает True, если флажок в редакторе включен |
type TDTDateFormat = (df Short, dfLong) ; property DateFormat: TDTDateFormat; |
Определяет формат представления даты |
type TDTDateMode = (dmComboBox, dmUpDown) ; property DateMode: TDTDateMode; |
Задает стиль компонента |
property DroppedDown: Boolean; |
Возвращает True, если панель календаря включена |
type TDateTimeKind = (dtkDate, dtkTime) ; property Kind: TDateTimeKind; |
Определяет возвращаемый результат — дату или время. Время можно вводить только в стиле dmUpDown |
property Parselnput: Boolean; |
Включает или отключает метод-обработчик OnUserlnput |
property ShowCheckbox: Boolean; |
Управляет видимостью флажка |
type TTime = type TDateTime; property Time: TTime; |
Содержит установленное время |
property OnChange: TNotifyEvent; |
Вызывается при вводе даты или времени |
property OnCloseUp: TNotifyEvent; |
Вызывается при сворачивании панели календаря |
property OnDropDown: TNotifyEvent; |
Вызывается при разворачивании панели календаря |
type TDTParselnputEvent = procedure (Sender : TObject; const UserString: string; var DateAndTime: TDateTime; var AllowChange: Boolean) of object; property OnUser Input: TDTParselnputEvent; |
Вызывается при прямом вводе значения в редактор. Параметр UserString содержит вводимое значение. Параметр DateAndTime содержит значение даты или времени. Параметр AllowChange управляет изменением значения |
Компонент TDateTimePicker может обеспечивать ввод даты или времени.
Помимо календаря в элемент управления встроен флажок, который расположен в левой части редактора. Его видимостью можно управлять.
В зависимости от значения свойства Kind элемент управления настраивается на ввод даты или времени. Результат ввода даты сохраняется в свойстве Date. Дату можно выбирать из всплывающего календаря или путем перебора. Результат ввода времени сохраняется в свойстве Time.
Свойство Parseinput при значении True разрешает ручной ввод значения. В этом случае разработчик может использовать метод-обработчик
type TDTParselnputEvent = procedure(Sender: TObject; const UserString: string; var DateAndTime: TDateTime; var AllowChange: Boolean) of object; property OnUserlnput: TDTParselnputEvent;
В нем можно предусмотреть необходимые действия, например проверку введенного значения:
procedure TForml.DateTimePicker2UserInput(Sender: TObject;
const UserString: String; var DateAndTime: TDateTime; var AllowChange: Boolean);
begin
try
DateAndTime := StrToDateTime(UserString);
except
on E: EConvertError do ShowMessage('Неверное значение');
end;
end;
Обратите внимание, что здесь обязательно должно присутствовать присвоение результата ввода параметру DateAndTime, иначе элемент управления не получит новое значение.