Компоненты Memo и RichEdit являются окнами редактирования многострочного текста. В компоненте Memo формат всего текста одинаков и определяется свойством Font.Компонент RichEditработает с текстом в формате RTF, который позволяет выбирать различные атрибуты форматирования для разных фрагментов текста. При желании изменить атрибуты вновь вводимого фрагмента текста можно задать свойство SelAttributes. Это свойство , в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Установленные атрибуты шрифта влияют на выделенный текст, если же текст не выделен ,то эти атрибуты начинают действовать на вновь вводимый текст. За выравнивание , отступы и другие атрибуты в пределах текущего абзаца отвечает свойство Paragraph, которое в свою очередь имеет ряд подсвойств:
Alignment - определяет выравнивание текста;
FirstIndent - число пикселей отступа красной строки;
Numbering - управляет вставкой маркеров, как в списках;
LeftIndent - отступ в пикселях от левого поля;
RightIndent - отступ в пикселях от правого поля;
TabCount- количество позиций табуляции;
Tab - значения позиций табуляции в пикселях.
Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения, например, в событии создания формы или при нажатии какой-нибудь кнопки. Значения подсвойств свойства Paragraphотносятся к тому абзацу, в котором находится курсор. Например, каждый из следующих операторов осуществит соответственное выравнивание текущего абзаца:
Перечисленные свойства отличают компонентRichEditот компонента Memo.Общими для этих компонентов являются следующие основные свойства :
Alignment - определяет способ выравнивания текста внутри компонента - по левому краю, правому краю, центру. Значение по умолчанию - по левому краю.
Font - определяет атрибуты шрифта.
Lines - это свойство доступное как при проектировании, так и во время выполнения, имеет множество свойств и методов типа TStrings, которые обычно используются для формирования и редактирования текста.
MaxLength - указывает максимальное количество символов, которое пользователь может вводить в компонент.
Modified - указывает, редактировался ли пользователем текст в компоненте.
PopupMenu -определяет появление всплывающего меню, связанного с данным компонентом.
ReadOnly - указывает, может ли пользователь изменять текст в компоненте.
SelLength, SelStart, SelText –имеют те же значения , что и компонентеEdit.
Text - текст окна в виде одной строки
WantTabs - указывает, можно ли вставить в текст символы табуляции
WordWrap - указывает, переносится ли текст на новую строку, если он превышает ширину компонента.
Элементами списка строк в компонентах Memo и RichEditможно манипулировать,используя следующие типовые методы свойства Lines :
Add ( ) – добавляет новую текстовую строку к концу списка и возвращает номер добавленной сроки.
Append( ) – добавляет новую текстовую строку к концу списка.
Clear( ) – очищает список.
Delate( ) - удаляет элемент с указанным номером.
Insert( ) – вставляет текстовую строку в позицию с указанным номером.
Move( )- перемещает элемент из одной позиции в другую.
LoadFromFile( ) – выгружает список из файла.
SaveToFile ( ) – загружает список в файл.
Примеры использования основных свойств и методов многострочных редакторов представлены на рисунках5.5 –5.8.На рисунке 5.5 показан внешний вид интерфейса, а программный код этого приложения приведен на рисунке 5.6.
Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.3. В приложение включены три многострочных окна редактирования (текстовых поля) Memo. Первое из них(Memo1) используется для ввода исходного текста, второе(Memo2) – для отображения изменений исходного текста в результате переключения радио кнопок (RadioButton1 – RadioButton8), а третье (Memo3) – для демонстрации операторов кода при выполнении программы. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.5) и не требует дополнительных пояснений.
Таблица 5.3
Компонент
Свойство
Значение
Форма
Caption
Основные свойства текстового поля Memo
Кнопка
Name
Button1
Caption
Ввод текста
Радио кнопки
Caption
Ввод новой строки текста
Caption
Перенос всего текста в Поле2
Caption
Считывание выделенной строки
Caption
Помещение выделенной строки в нач.списка
Caption
Удаление 3-ей строки
Сaption
Замена местами 2-ой и 4- ой строк
Caption
Запись
Caption
Считывание
Метки
Caption
Поле1
Caption
Поле2
Caption
Код программы
Многострочное окно редактиров.
Name
Memo1
Name
Memo2
Name
Memo3
Другие свойства компонентов принимаются по умолчанию.
Рис.5.5.Интерфейса приложения,демонстрирующего свойства и методы
компонента Memo
// Программный код приложения,демонстрирующего свойства и методы компонента //Memo
Рис.5.6 Программный код приложения,демонстрирующего свойства и методы
компонента Memo
Программный код( Рис.5.6) на базе исходного текста позволяет демонстрировать основные свойства и методы многострочного окна редактирования Memo.Запускающим ключомдля демонстрации каждого свойства(метода)является событиеOnClick (включение радио кнопки),а операторы программного кода ,реализующие то или иное свойство ( метод ) отображаются в окне редактирования Memo3.Листинг программного кода снабжен подробными комментариями и не требует дополнительных пояснений.
Внешний вид интерфейса приложения, позволяющего демонстрировать свойства и методы компонента RichEdit показан на рисунке 5.7,апрограммный код этого приложения приведен на рисунке 5.8.Обозначения, принятые в приложении, и свойства используемых компонентов, установленные во время проектирования, поясняются в таблице 5.4. В приложение включены три многострочных окна редактирования . Первое из них(Memo1) используется хранения исходного текста, второе(Memo2) – для демонстрации операторов кода при выполнении программы , а третье (RichEdit1) – для иллюстрации свойств и методов. На ряду с тремя кнопками типа Button , шестью радио кнопками типа RadioButton в приложении задействован и невидимый компонент- FontDialog1, с помощью которого осуществляется изменение параметров шрифта в окне редактирования RichEdit1. Назначение остальных компонентов приложения понятно из интерфейса (рис.5.7) и не требует дополнительных пояснений.
Таблица 5.4
Компонент
Свойство
Значение
Форма
Caption
Основные свойства поля RichEdit
Кнопки
Caption
Копирование текста(Button1)
Caption
Атрибуты шрифта(Button2)
Caption
Передача фокуса(Button3)
Радио кнопки
Caption
Абзац влево(RadioButton1)
Caption
Абзац по центру(RadioButton2)
Caption
Абзац вправо(RadioButton3)
Caption
Строка в начало текста(RadioButton4)
Сaption
Стока на 4-ой позиции(RadioButton5)
Caption
Удаление текста(RadioButton6)
Диалог выб.шрифта
Name
FontDialog1
Метки
Caption
Поле Memo1
Caption
Поле RichEdit1
Caption
Строки кода
Многострочное окно редактиров.
Name
Memo1
Name
Memo2
Name
RichEdit1
Другие свойства компонентов принимаются по умолчанию.
Рис.5.7. Интерфейс приложения,демонстрирующего свойства и методы
компонента RichEdit
// Программный код приложения,демонстрирующего свойства и методы компонента //RichEdit
Рис.5.8 Программный код приложения,демонстрирующего свойства и методы
компонента RichEdit
В программный коде( Рис.5.8) при щелчке по кнопке Button1, будет реализован обработчик этого события, и произойдет копирование текста из компонента Memo1 в компонент RichEdit1.При щелчке по кнопке Button2будет реализовано событие по вызову диалога FontDialog1,с помощью которого осуществляется изменениепараметров шрифта. Различные элементы редактирования фрагментов текста реализуются при включении радио кнопок RadioButton1 - RadioButton6.Операторы программногокода ,соответствующие каждому событию отображаются в окне редактирования Memo2.Основные операторы программного кода снабжены подробными комментариями, поясняющими их назначение.
События компонентов Memo и RichEdit ,в основном,такие же как и у однострочного редактора Edit. В многострочных редакторах они используются крайне редко.