На этом шаге мы рассмотрим компонент TDateEdit.
Компонент TDateEdit (наследник TComboEdit) представляет собой строку редактирования для ввода значений дат. Как наследник TComboEdit, кроме непосредственно строки редактирования имеет кнопку, нажатие которой приводит к появлению либо модальной формы, либо popup-календаря (в зависимости от значения свойства CalendarStyle) для выбора даты (рис.1).
Рис.1. Компонент TDateEdit
Рассмотрим свойства компонента TDateEdit.
Свойство | Описание |
---|---|
property CalendarStyle: TCalendarStyle; | Свойство задает тип используемого компонентой календаря. CsPopup - выпадающий календарь (наподобие выпадающего списка у TСomboBox), csDialog - модальный диалог для выбора даты. |
Const PopupCalendarSize: TPoint = (X: 187; Y: 124); | Константа задает размер выпадающего календаря. |
property DirectInput: Boolean; | Свойство управляет тем, будет ли разрешен прямой ввод данных в строку редактирования компоненты TComboEdit (или унаследованных от нее компонент). False - прямой ввод данных в строку запрещен, пользователь должен использовать кнопку для вызова диалога для внесения изменений в данные компонента. |
Приведем пример: создадим приложение, которое позволит извлекать дату из компонента TDateEdit, добавляя значение в компонент TComboEdit.
Поместим на форму TDateEdit , TComboEdit1, TComboEdit2, TComboEdit3, RxLabel1, RxLabel2, RxLabel3, RxSpeedButton1 и RxSpeedButton2 (рис.2).
Рис.2. Форма с расположенными на ней компонентами TDateEdit ,
TComboEdit1, TComboEdit2,
TComboEdit3, RxLabel1,
RxLabel2, RxLabel3,
RxSpeedButton1 и RxSpeedButton2
RxSpeedButton1 (“Добавить все данные”) – это кнопка для добавления данных в TComboEdit1, TComboEdit2, TComboEdit3.
RxSpeedButton2 (“Очистить”) – это кнопка для удаления записей из компонент TDateEdit, TComboEdit1, TComboEdit2, TComboEdit3.
Свойства Caption компонентов RxLabel1, RxLabel2, RxLabel3 содержат значения ‘Число', 'Месяц', 'Год' соответственно.
Свойству DirectInput компонентов TDateEdit, TComboEdit1, TComboEdit2, TComboEdit3 придадим значение False , чтобы запретить прямой ввод данных в строки редактирования.
С помощью свойства Glyph на кнопках компонентов TComboEdit1, TComboEdit2, TComboEdit3 разместим картинку.
Для компонента RxSpeedButton2 напишем обработчик события OnClick:
procedure TForm3.RxSpeedButton2Click(Sender: TObject); begin DateEdit1.Clear; ComboEdit1.Clear; ComboEdit2.Clear; ComboEdit3.Clear; ShowMessage('Данные удалены!'); end;
Для компонента ComboEdit1 напишем обработчик события OnButtonClick:
procedure TForm3.ComboEdit1ButtonClick(Sender: TObject); begin If (DateEdit1.Text=' . . ') then ShowMessage('Дата не выбрана!') else begin ComboEdit1.Text:=copy(DateEdit1.Text,1,2); // Копируем первые 2 символа end; end;
Для компонента ComboEdit2 напишем обработчик события OnButtonClick:
procedure TForm3.ComboEdit2ButtonClick(Sender: TObject); begin If (DateEdit1.Text=' . . ') then ShowMessage('Дата не выбрана!') else begin s:=copy(DateEdit1.Text,4,2); // копируем 2 символа начиная с 4-го n:=StrToInt(s); // переводим строку в число Case n of // определяем соответствие //числа с названием месяца 1:ComboEdit2.Text:='Январь'; 2:ComboEdit2.Text:='Февраль'; 3:ComboEdit2.Text:='Март'; 4:ComboEdit2.Text:='Апрель'; 5:ComboEdit2.Text:='Май'; 6:ComboEdit2.Text:='Июнь'; 7:ComboEdit2.Text:='Июль'; 8:ComboEdit2.Text:='Август'; 9:ComboEdit2.Text:='Сентябрь'; 10:ComboEdit2.Text:='Октябрь'; 11:ComboEdit2.Text:='Ноябрь'; 12:ComboEdit2.Text:='Декабрь'; end; end; end;
Для компонента ComboEdit3 напишем обработчик события OnButtonClick:
procedure TForm3.ComboEdit3ButtonClick(Sender: TObject); begin If (DateEdit1.Text=' . . ') then ShowMessage('Дата не выбрана!') else begin ComboEdit3.Text:=copy(DateEdit1.Text,7,4); // копируем 4 символа, начиная с 7-го end; end;
Для компонента RxSpeedButton1 обработчик события OnClick составляется из трех обработчиков:
Работа программы показана на рис.3(а-е).
Рис.3а. Выбор даты с помощью календаря
Рис.3б. Заполнение строки редактирования 'Число'
Рис.3в. Заполнение строки редактирования 'Месяц'
Рис.3г. Заполнение строки редактирования 'Год'
Рис.3д. Очистка всех строк редактирования
Рис.3е. Сообщение о том, что строка редактирования календаря пуста, выбор даты невозможен
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TRxCalcEdit.