Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

3 .11. Поля ввода текста (edit box, memo, rich edit)

3.11.1. Конструкторы полей ввода текста (edit)

К первой группе таких оконных объектов, которые можно считать состоящими из некоторого множества элементов (строк текста), относятся поля ввода. Они создаются конструкторами:

NewEditBox( Parent, options ) - создает объект однострочного или многострочного поля ввода. Однострочное поле ввода всегда содержит один элемент, и большинство вышеприведенных свойств и методов для него нехарактерно (хотя они и работают). Но это поле фактически является частным случаем многострочного поля ввода текста (memo), создаваемого тем же конструктором (но с опцией eoMultiline в параметре options);

NewRichEdit( Parent, options ) - создает объект для редактирования текста с расширенным форматированием (rich edit, позволяет редактировать .rtf-файлы);

NewRichEdit1( Parent, options ) - аналогично предыдущему, но используется не самая последняя доступная в системе версия rich edit-редактора, а версия 1 (что может понадобиться для целей обеспечения совместимости, например).

Обратите внимание, что при использовании в проекте rich edit – контролов, в опциях проекта не должен присутствовать символ условной компиляции NOT_USE_RICHEDIT.

3.11.2. Особенности применения общих свойств (edit)

Особенности вышеприведенных свойств и методов для работы с визуальными списковыми объектами, при работе с полями ввода таковы:

редактируемый многострочный текст разбивается на отдельные элементы (строки) условно. А именно, разделителем между строками является комбинация символов #13#10 (символы возврата каретки и перевода строки). Это, в частности, означает, что при использовании пословного переноса (опция eoNoHScroll), строка визуально может располагаться в нескольких строках, тем не менее, продолжая оставаться единым "элементом" списка строк;

свойство CurIndex не имеет смысла для полей ввода, так как выделение в них производится не построчно, а посимвольно (выделенным может быть непрерывный участок текста, в том числе начинающийся в одной строке, и заканчивающийся в другой);

по той же причине, свойство ItemSelected[ ] имеет несколько другое значение: оно выполняет проверку того, что данная строка полностью или частично находится в выделенном фрагменте;

для добавления или вставки целой строки с использованием методов Add и Insert добавляемую строку необходимо завершать символами #13#10 (иначе, сами эти символы в текст не вставляются, и строка объединяется с последующими символами в один элемент);

события OnMeasureItem, OnDrawItem для полей ввода неприменимы.

3.11.3. Опции полей ввода (edit)

Поля ввода имеют ряд свойств, методов и событий, характерных именно для работы с полями ввода текстов. Но прежде, все-таки стоит более подробно рассмотреть опции (свойство Options – для зеркальных объектов MCK, или параметр options, при ручном вызове конструирующих функций) таких объектов редактирования, задаваемые при их создании:

eoNoHScroll - запрещает использование горизонтальной линейки прокрутки, в результате слишком длинные строки текста разбиваются на отдельные строки по границам слов;

eoNoVScroll - запрещает использование вертикальной линейки прокрутки (в итоге поле не позволяет ввести строк больше, чем может быть отображено в поле текста без использования вертикальной прокрутки);

Замечание: предыдущие два свойства игнорируются для однострочного поля ввода, которое никогда не имеет линеек прокрутки.

eoLowerCase - все буквы в тексте изображаются (и вводятся) в нижнем регистре;

eoMultiline - создает многострочное поле ввода текста (в том числе, возможно создание однострочного поля ввода для rich edit-текста, если эта опция опущена);

eoNoHideSel - предотвращает скрытие выделения текста цветом, когда окно объекта не находится в фокусе ввода с клавиатуры;

eoOemConvert - позволяет отображать корректно символы национальной кодировки OEM (это тот набор символов, который использовался в DOS);

eoPassword - все символы в поле ввода при отображении заменяются символом-заменителем, назначенным системой по умолчанию или заданным дополнительно символом. Используется в полях ввода паролей, используемых непрофессионалами;

eoReadOnly - поле используется только для отображения текста, помещенного в него из программы, пользователь не может редактировать такой текст (но попадание в фокус клавиатуры, если не запрещено, все еще возможно - для выделения фрагментов текста, и, например, копирования их в буфер обмена);

eoUpperCase - все буквы в тексте изображаются (и вводятся) в верхнем регистре;

eoWantReturn - многострочное поле ввода будет при нажатии клавиши <Enter> переводить каретку, завершая ввод текущей строки (в текст фактически при этом вставляются символы #13#10);

eoWantTab - поле ввода будет при нажатии клавиши <Tab> вставлять в текст символ табуляции (с кодом #9), при отсутствии этой опции эта клавиша используется для табуляции между элементами, принимающими фокус ввода;

eoNumber - поле для ввода чисел (т.е. воспринимаются только цифры).