Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
104
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Компонент тМеmo

TObject->TPersistent->TComponent->TControl->TWinControl->TCustomEdit->

—”TCu s t omMerno-”TMemo

Модуль STDCTRLS

Страница Палитры компонентов Standard

Компонент представляет собой многострочный редактор текста. Содержимое редактора представлено как объект, содержащий текст в виде набора строк:

(Pb) property Lines: TStrings;

Текст в редакторе может выравниваться по левому, правому краям и по центру:

(Р1э) property Alignment: TAlignment;

TAlignment = (taLeftJustify, taRightJustify, taCenter) ;

При наборе текста пользователь может ввести различные управляющие символы, в частности, клавишами <Enter> и <ТаЬ>. Эти символы могут быть обработаны редактором, а могут быть сразу переданы форме. В случае, если свойства

§ property WantReturns: Boolean;

property WantTabs: Boolean;

обращены в True, символы передаются редактору. Обратим внимание на то, что если установлено WantTabs, то с помощью клавиатуры передать фокус такому редактору можно, а после этого отдать другому компоненту — нельзя. Если свойства равны False, символы передаются форме. В этом случае для ввода этих символов в редактор можно воспользоваться комбинациями <Ctrl>+<Enter> и <Ctrl>+<Tab> соответственно.

Два свойства отвечают за организацию прокрутки текста в окне редактора:

(Pb) property Wordwrap: Boolean ;

— отвечает за поведение редактора при достижении правой границы во время набора текста. Если свойство равно True, то при этом происходит переход на новую строку. В случае False при достижении правой границы происходит горизонтальная прокрутка текста и пользователь может продолжать набор; на новую строку можно перейти, нажав <Enter>;

(Pb) property ScrollBars: TScrollStyle;

TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth) ;

— устанавливает наличие полос прокрутки в вертикальном и горизонтальном направлениях. Если есть горизонтальная полоса, то свойство Wordwrap теряет смысл: вместо переноса происходит прокрутка.

Следующие свойства аналогичны определенным в TEdit — BorderStyle, HideSelection, MaxLength, OEMConvert и ReadOnly.

Для получения полноценного приложения — текстового редактора, в него нужно включить компонент TMemo и снабдить средствами чтения, записи и печати файлов, поиска и замены текста и т. п. Такой редактор вы найдете в примере DEMOEDIT на дискете, прилагаемой к книге.

Компонент tMaskEdit

TObject->TPersistent->TComponent->TControl—”TWinControl->TCustomEdit-> —>TCustomMaskEdit—^TMaskEdit Модуль MASK Страница Палитры компонентов Additional

Этот специальный редактор допускает лишь ввод текста, соответствующего заданному программистом шаблону, например, паролей, регистрационных но­меров, дат и других данных, которые имеют определенный формат представ­ления.

Шаблон ввода в виде строки содержится в свойстве:

(РЬ) property EditMask: string;

Если он не определен, TMaskEdit работает как обычный редактор. Свойство

(Ro) property IsMasked: Boolean;

показывает, определен ли шаблон редактирования (значение EditMask не равно пустой строке).

"Черновой" текст, содержащий введенные пользователем символы, соответст­вует свойству:

property EditText: string;

В то же время отформатированный (наложенный на шаблон) текст содержится в свойстве Text.

Опишем правила, применяемые при составлении шаблона. Шаблон состоит из трех частей, разделяемых символом ';' или другим, заменяющим его. Первая часть является обязательной — она определяет собственно маску ввода. Каж­дому символу в поле ввода редактора соответствует специальный символ в маске, определяющий, что можно ввести на этом месте.

Описатели маски ввода представлены в таблице:

Символ маски

Означает, что на этом месте во вводимом тексте...

L

должна быть буква (A-Z, a-z, А-Я, а-я).

I

может быть буква.

А

должен быть буквенно-цнфровой символ.

а

может быть буквенно-цифровой символ.

С

должен быть любой символ ASCII.

с

может быть любой символ ASCII.

0

должна быть любая цифра.

9

может быть любая цифра.

#

может быть любая цифра или знаки '+', •-'.

"Должен" означает, что пользователь обязан ввести в поле соответствующий символ, "может" — что не обязан. Например, шаблон "LLOO" обязывает поль­зователя ввести пароль из двух букв и двух цифр, a "LL99" — из двух букв и не более двух цифр.

Кроме описателей полей ввода, в шаблоне могут быть литералы и другие форматирующие символы.

Литералами будем называть символы, которые появляются при отображении строки ввода, но не могут изменяться пользователем и предназначены только для ее оформления. Перед литералом должен стоять символ 'V. Типичный пример — ввод телефонных номеров. Для семизначного номера с возмож­ностью ввода междугороднего кода нужен шаблон "!\(999\)000-0000;1;_". Тогда код города (если он есть) в отформатированном тексте будет заключен в скобки.

Специальные символы приведены в следующей таблице:

Символ

Значение

\

Символ, непосредственно предшествующий литералу.

Разделитель для часов, минут и секунд при вводе времени.

/

Разделитель для дней, месяцев и лет при вводе даты.

\

Разделитель полей в маске.

'

Символ определяет подавление пробелов: если он есть в маске (в любом месте), в выходном тексте подавляются пробелы перед текстом; в противном случае — идущие после текста.

>

Символ, после которого все вводимые буквы преобразуются к верхнему регистру.

<

Символ, после которого все вводимые буквы преобразуются к нижнему регистру.

о

После этой пары символов преобразование регистров отменяется.

-

Пустое поле при вводе (отображается как пробел). Курсор не будет останавливаться в этой позиции.

Вторая часть шаблона — это символ '0' или '!', определяющий, записываются ли литералы в обработанный текст (свойство Text). При 0 символы опускаются. Использование такого компонента при работе с базами данных дает возмож­ность экономии места.

Например, пользователь ввел цифры 1234567. Тогда при действующем шаб­лоне "999\-99\-00;1;_" свойство Text будет равно "123-45-67", а для шаблона "999\-99\-00;0;_" - "1234567".

Третья часть содержит символ, который будет показываться в полях, пред­назначенных для ввода. Например, шаблон для ввода номеров машин "L 00\-00 LL;1;X" будет выглядеть как "X ХХ-ХХ XX". По умолчанию этот символ определяется значением константы DefaultBlank(cM. ниже).

Вторая и третья части шаблона могут отсутствовать.

Синтаксис шаблона может быть изменен за счет переопределения прог­раммистом специальных символов '_'> ';' и '0'. Для этого нужно изменить определенные в модуле Mask константы:

const

DefaultBlank: Char = '_';

MaskFieldSeparator: Char = ';';

MaskNoSave: Char = '0';

Для ввода шаблонов в Delphi есть довольно удобный специальный редактор, содержащий некоторые полезные образцы. К сожалению, в этой версии в нем есть ошибка — при вводе маски он не всегда сразу воспринимает введенные изменения. В этом случае еще раз компилируйте создаваемое приложение.

Непосредственную проверку введенного текста осуществляет метод:

procedure ValidateEdit;

Он обычно вызывается при нажатии кнопки Default в модальной форме и при каждой утере фокуса редактором. При отсутствии введенных символов в тех местах, где они необходимы, возникает исключительная ситуация EDBEditError.

Метод

function GetTextLen: Integer;

возвращает длину текста Text.

Соседние файлы в папке Delphi