Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯПВУ.Delphi.doc
Скачиваний:
17
Добавлен:
11.04.2015
Размер:
3.25 Mб
Скачать
    1. Редактируемые компоненты

Часто бывает необходимо не только показать статический (неизменяемый) текст на форме, но и редактировать (вводить с клавиатуры) нужную информацию. Для этой цели разработан ряд редактируемых визуальных компонентов. Примерами редактируемых компонентов являютсяTEdit (закладка Standart), TMemo (закладка Standart), TMaskEdit (закладка Additional). Все эти компоненты имеют общего предка – класс TWinControl. Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать отдельную текстовую строку. Компоненты класса TMemo используются для ввода, редактирования и/или отображения достаточно длинного текста, который может располагаться на нескольких строках. Следующие свойства являются общими для всех редактируемых компонентов.

Таблица 15 Свойства редактируемых компонентов

Text

Содержит редактируемую строку (для TEdit) или редактируемый текст в виде одной строки (для TMemo)

ReadOnly

Логическое свойство, разрешающее или запрещающее редактирование текста в компоненте

MaxLength

Определяет максимально допустимую длины текста в символах. Если имеет значение 0, длина строки не ограничена.

HideSelection

Если содержит False, выделение текста сохраняется при потере компонентом фокуса ввода

Для однострочного редактора существует ряд специфичных свойств и методов. Приведем некоторые из них.

Таблица 16 Свойства однострочного редактора

AutoSelect:

Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода

CharCase

Определяет автоматическое преобразование высоты букв: ecNormal – нет преобразования; ecUpperCase –- все буквы заглавные; ecLowerCase – все буквы строчные. Правильно работает с кириллицей

PasswordChar

Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей

SelLength

Содержит длину выделенной части текста

SelStart

Содержит номер первого символа выделенной части текста

SelText

Содержит выделенную часть текста

Для работы с однострочным редактором можно использовать методы компонента.

Таблица 17 Методы однострочного редактора

Сlears

Удаляет весь текст

ClearSelection

Удаляет выделенный текст

SelectAll

Выделяет весь текст

Undo

Восстанавливает текст в том виде, в каком он был перед последним получением компонентом фокуса ввода

В компоненте TMemo текст хранится в свойстве Lines класса TStrings и, таким образом, представляет собой пронумерованный набор строк (нумерация начинается с нуля). С помощью свойств и методов класса TStrings (Count, Add, Delete, Clear и т. д.) можно динамически формировать содержимое компонента. Для загрузки в компонент текста из файла и для сохранения текста в файле удобно использовать методы LoadFromFile и SaveToFile класса TStrings. Например, следующий обработчик события OnCreatе формы Form1 загружает в Memo1 текст проектного файла программы:

procedure TForm1.FormCreate(Sender: TObject);

begin

Memol.Lines.LoadFromFile(ChangeFileExt(Application.ExeName,'.dpr'))

end;

Специализированный редактор TMaskEdit предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask: String. Если это свойство не задано, TMaskEdit работает как обычный редактор TEdit. Свойство IsMasked: Boolean доступно только для чтения и содержит True, если строка шаблона задана. Свойство EditText: string содержит текст до наложения на него маски шаблона (т. е. то, что ввел пользователь), а свойство Text: String может (в зависимости от шаблона см. ниже) содержать либо исходный текст, либо результат наложения на него маски шаблона.

Для всех редактируемых компонентов определено событие OnChange, которое генерируется при изменении содержимого компонента. Для примера приведем обработчик события OnChange, в котором изменяется надпись при наборе текста в строке редактирования.

procedure TForm1.Edit1Change(Sender: TObject);

begin

Label1.Caption:='Идет ввод текста';

end;