На этом шаге мы рассмотрим компонент TDirectoryEdit.
Компонент TDirectoryEdit представляет собой строку редактирования для ввода имен каталогов файловой системы. Являясь наследником TComboEdit, компонент TDirectoryEdit имеет кнопку, нажатие на которую приводит к открытию модального диалога выбора каталога (используется функция SelectDirectory из модуля FileCtrl). Выбранное имя каталога заносится в строку редактирования, если пользователь нажмет кнопку ОK в диалоге выбора имени каталога. Вы имеете доступ к выбранному имени каталога как к свойству Text компонента TDirectoryEdit.
Внешний вид компонента (рис.1):
Рис.1. Компонент TDirectoryEdit с открытым диалоговым окном
Рассмотрим свойства данного компонента :
Свойство | Описание |
---|---|
property DirectInput: Boolean; | Свойство отвечает за разрешение (или запрет) прямого ввода данных в строку редактирования компоненты TDirectoryEdit . DirectInput = False - прямой ввод данных в строку запрещен, и пользователь должен использовать кнопку для вызова диалога для внесения изменений в данные компонента. |
property ButtonWidth: Integer; | Ширину кнопки, являющейся составной частью TDirectoryEdit. Если это свойство имеет значение 0, то кнопка не показывается и событие OnButtonClick не вызывается (несмотря на значение свойства ClickKey). |
property ClickKey: TShortCut; | Свойство задает "горячую" клавишу или комбинацию клавиш для данного компонента, при нажатии которых будет автоматически открываться модальный диалог выбора каталога. |
type TDirDialogKind = (dkVCL, dkWin32); |
Определяет вид модального диалога выбора имени файла:
|
property DialogOptions: TSelectDirOpts; | Позволяет задать режимы для диалога выбора имени каталога (в 32-битной версии при установке свойства DialogKind в значение dkWin32 значение свойства DialogOptions игнороируется). |
property GlyphKind: TGlyphKind; | Свойство позволяет указать, что кнопка имеет предопределенное изображение,
задаваемое типом TGlyphKind:
|
Приведем пример: создадим приложение, которое позволит заполнять компонент TTextListBox, добавляя каждый раз в новую строку имя выбранного в компоненте TDirectoryEdit имени каталога (аналогично примеру для компонента TFilenameEdit).
Поместим на форму TextListBox1, RxSpeedButton1 и RxSpeedButton2 (рис.2).
Рис.2. Форма с расположенными на ней компонентами TextListBox1,
RxSpeedButton1 и RxSpeedButton2
RxSpeedButton1 (“Добавить строку”) – это кнопка для добавления новой строки в список TextListBox.
RxSpeedButton2 (“Очистить список”) – это кнопка для удаления записей из списка.
Свойству DirectInput компоненты DirectoryEdit1 придадим значение False, чтобы запретить прямой ввод данных в строку. Для компонента TextListBox1:
TextListBox1.Items[0]:=' Выбор имени каталога:' – строка будет служить заголовком списка.
Для компонента RxSpeedButton1 напишем обработчик события OnClick:
procedure TForm1.RxSpeedButton1Click(Sender: TObject); begin TextListBox1.Items.Add(DirectoryEdit1.Text);//функция добавления строки // в список end;
Для компонента RxSpeedButton2 напишем обработчик события OnClick:
procedure TForm1.RxSpeedButton2Click(Sender: TObject); begin TextListBox1.Clear; DirectoryEdit1.Clear; TextListBox1.Items.Add(' Выбор имени каталога:'); // добавляем строку - заголовок Showmessage('Данные удалены!'); end;
Работа программы показана на рис.3(а-г).
Рис.3а. Диалоговое окно компонента TDirectoryEdit
Рис.3б. Добавлена строка в список TextListBox1
Рис.3в. Добавлена вторая строка в список TextListBox1
Рис.3г. Очистка списка
Текст этого примера можно взять здесь.
На следующем шаге мы рассмотрим компонент TDateEdit.