Тема7 Дополнительные компоненты Delphi

Цель: Формирование знаний о компонентах страницы Win32.

План:

1 TDateTimePicker — ввод и отображение даты/времени

2. TMonthCalendar- календарь

3. Системные диалоги

 

1 TDateTimePicker — ввод и отображение даты/времени

Компонент предназначен для ввода и/или отображения даты и времени. При показе даты в режиме DateMode=dmComboBox календарь можно не рас­крывать и установить дату вручную в верхнем окне. Это удобно, если нужно установить сразу и день, и месяц, и год На раскрытом календаре изменить месяц можно небольшими кнопками в верхней части компонента Кален­дарь закрывается после выбора даты или при щелчке на раскрывающей кнопке. Установив в свойство Kind значение dtkTime, можно заставить ком­понент отображать время Это время в момент установки компонента на форму соответствует системному времени, и в дальнейшем его можно изме­нить, задав новое значение свойству Time.

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

Свойство Описание
TDTCalAlignment = (dtaLeft, dtaRight) ; property CalAlignment: TDTCalAlignment; Определяет положение раскрывающегося календа­ря dtaLeft— слева от компонента, dtaRight — справа от компонента Учитывается только для Kind= dtkDate И DateMode=dmComboBox
property CalColors: TDateTimeColors ; С календарем связан объект класса TDateTimeColors, свойства которого определяют цвета календаря
property Checked: Boolean; Если выполняются условия Checked=True и ShowCheckBox=True, флажок рядом с полем даты (времени) будет показан и установлен Наличие флажка или его отсутствие разрешает или запрещает ручной ввод даты или времени
property Date: TDate; Содержит введенную дату
TDTDateFormat = (dfShort, dfLong); property DateFormat: TDTDateFormat; Определяет формат показа даты dfShort— 08. 09. 99, dfLong — 8 Сентября 1999 г
TDTDateMode = (dmComboBox, dmUpDown); property DateMode: TDTDateMode; Определяет способ выбора даты dmComboBox — с помощью раскрывающегося календаря, dmUpDown — с помощью встроенного компонента TupDown
TDateTimeKind = (dtkDate, dtkTime); property Kind: TDateTimeKind, Определяет содержимое компонента dtkDate — дата, dtkTime — время
property MaxDate: TDate; Определяет максимальную дату, которую может вы­брать или ввести пользователь
property MmDate: TDate, Определяет минимальную дату, которую может вы­брать или ввести пользователь
property Parselnput: Boolean, Если содержит значение True, возникает событие OnUserinput при каждом вводе пользователя в тек­стовое поле
property ShowCheckbox: Boolean, Если содержит значение True, рядом с полем даты (времени) вставляется флажок, с помощью которого пользователь может запретить ручное изменение да­ты (времени)
property Time: TTime; Содержит введенное пользователем время

 

 

События компонента TDateTimePicker:

Событие Описание
property OnChange: TNotifyEvent; Возникает при любом изменении содержимого компонента
property OnCloseUp: TNotifyEvent; Возникает при закрытии календаря
property OnDropDown: TNotifyEvent; Возникает при открытии календаря
DTParselnputEvent = procedure (Sender: TObject; const UserString: String; var DateAndTime: TDateTime; var AllowChange: Boolean) of object; property OnUserlnput: TDTParselnputEvent; Возникает при ручном вводе в текстовое поле, если ParseInput=True. UserString— вве­денная пользователем строка; DateAndTime — значения свойств Date и Time. В параметре AllowChange обработчик разрешает или за­прещает изменение даты или времени

 

 

2 ТМоnth Calendar – календарь

Компонент предназначен для выбора или отображения даты. Он очень по­хож на календарь, который появляется в компоненте TDateTimePicker (при значении dmComboBox в свойстве DateMode), но, в отличие от последнего, может отображать одновременно несколько смежных месяцев — в зависи­мости от своих размеров.

 

Свойства компонента TMonthCaiendar:

 

Свойство Описание
property CalColors: TMonthCalColors; С компонентом связан объект класса TMonthCalColors (см.далее)
property Date: TDate; Определяет выбранную дату
property EndDate: TDate; Определяет конечную дату диапазона вы­бранных дат
type TCalDayOfWeek = (dowMonday, dowTuesday, dowWednesday, dowThursday, dowFriday, dowSaturday, dowSunday, dowLocaleDefault); property FirstDayOfWeek: TCalDayOfWeek; Определяет первый день недели
property MaxDate: TDate; Содержит максимальную дату, месяц ко­торой еще будет доступен для отображе­ния в компоненте. Если свойство содер­жит пустое значение, отображается любой следующий месяц
property MaxSelectRange: Integer; Содержит максимальное количество дат в выбранном диапазоне
property MinDate: TDate; Содержит минимальную дату, месяц кото­рой еще будет доступен для отображения в компоненте. Если свойство содержит пустое значение, отображается любой предыдущий месяц
property MultiSelect: Boolean; Разрешает/запрещает возможность выде­ления диапазона дат
property ShowToday: Boolean; Разрешает/запрещает показ текущей да­ты (по показаниям системных часов) внизу календаря
Property ShowTodayCircle: Boolean; Разрешает/запрещает обводить кружком текущую дату
property WeekNumbers: Boolean; Разрешает/запрещает показ порядковых номеров недель от начала года в левой колонке

 

 

Свойства объекта класса TMonthCalColors:

Backcolor — цвет фона, разделяющего смежные месяцы;

MonthBackColor — цвет фона дат;

Textcolor — цвет дат;

TitleBackColor — цвет фона заголовка месяца;

TitleTextcolor — цвет текста заголовка;

TrailingTextcolor — цвет текста ведущих и ведомых дат.

Системные диалоги

Функции InputBox и InputQuery

Функция InputBox объявлена в модуле Dialogs следующим образом:

function InputBox(const ACaption, APrompt, ADefault: string): string;

Она предлагает пользователю диалоговое окно с заголовком Acaption, с предложением Aprompt пользователю что-то написать и с окошком редактирования, в котором предварительно загружено начальное значение текста Adefault. Если пользователь нажмет в окне ОК, то функция вернет введенную им строку текста. Если же пользователь в диалоге нажал Cancel, или нажал Esc, или закрыл окно системной кнопкой, то функция вернет строку Adefault, даже если перед этим пользователь что-то написал в окне редактирования.

Например, оператор

Name:= InputBox(‘Пожалуйста, представьтесь’, ‘Укажите, как в дальнейшем обращаться к Вам’, ‘Неизвестный’);

отобразит следующее окно:

и вернет в переменную Name текст, введенный пользователем, или строку «Неизвестный»

Понять по возвращенному результату, написал ли пользователь какой-то текст, или отказался от ввода, можно, сравнив возвращенный результат со значением Adefault. Впрочем, результат останется неизменным и в случае, если пользователь ничего не написал в диалоге, но нажал кнопку ОК.

Если надо достоверно знать, отказался ли пользователь от диалога, или нажал ОК, следует использовать похожую на InputBox функцию InputQuery:

 

function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;

 

Смысл параметров ACaption и Aprompt тот же, что в функции InputBox. Параметр Value – это строка текста в окне редактирования. Вы можете присвоить ей начальное значение, а после вызова InputQuery в параметре Value будет находиться ответ пользователя.

Функция InputQuery возвращает true только в том случае, если пользователь вышел из диалога, нажав ОК. В остальных случаях (при нажатии Esc, при щелчке на системной кнопке окна или на кнопке Cancel) возвращается false, а значение параметра Value сохраняется тем, какое было до обращения к InputQuery.

Например, операторы:

Name:= 'Неизвестный';

if InputQuery('Пожалуйста, представьтесь',

'Укажите, как в дальнейшем обращаться к Вам', Name) then

ShowMessage('Здравствуйте, господин ' + Name + '!')

else

ShowMessage('Вы не представились, господин Неизвестный ');

 

отобразят окно, представленное выше и после окончания диалога выдадут сообщение, зависящее от того, нажал ли пользователь в диалоге ОК, или нет.

 

 

Литература: 2, с.145-167.

Контрольные вопросы.

1. Для чего предназначен компонент TDateTimePicker?

2. Какие варианты использования компонента TDateTimePicker вы знаете?

3. Перечислите свойства компонента TDateTimePicker и их назначение?

4. Перечислите события компонента TDateTimePicker и их назначение?

5. Для чего предназначен компонент ТМоnth Calendar?