Шаг 5.
Компоненты библиотеки RX.
Вкладка Controls. Компонент TDateEdit

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

    Компонент TDateEdit (наследник TComboEdit) представляет собой строку редактирования для ввода значений дат. Как наследник TComboEdit, кроме непосредственно строки редактирования имеет кнопку, нажатие которой приводит к появлению либо модальной формы, либо popup-календаря (в зависимости от значения свойства CalendarStyle) для выбора даты (рис.1).


Рис.1. Компонент TDateEdit

    Рассмотрим свойства компонента TDateEdit.

Таблица 1. Свойства и методы компонента 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 составляется из трех обработчиков:

  1. procedure TForm3.ComboEdit1ButtonClick(Sender: TObject);
  2. procedure TForm3.ComboEdit2ButtonClick(Sender: TObject);
  3. procedure TForm3.ComboEdit3ButtonClick(Sender: TObject);

    Работа программы показана на рис.3(а-е).


Рис.3а. Выбор даты с помощью календаря


Рис.3б. Заполнение строки редактирования 'Число'


Рис.3в. Заполнение строки редактирования 'Месяц'


Рис.3г. Заполнение строки редактирования 'Год'


Рис.3д. Очистка всех строк редактирования


Рис.3е. Сообщение о том, что строка редактирования календаря пуста, выбор даты невозможен

    Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонент TRxCalcEdit.




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