Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700269.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
1.78 Mб
Скачать

5.4.10. Визуализация больших текстовых фрагментов

Для визуализации больших текстовых фрагментов используются компоненты Memo ( , страница Standard, компонент визуализирует только текст) и RichEdit ( , страница Win32, визуализируется текст в обогащенном формате rtf).

Memo – многострочный текстовый редактор, позволяющий редактировать текст окна, в которое можно вводить множество строк. Формат всего текста одинаков и определяется свойством Font. Свойство Lines, доступное как во время проектирования, так и во время выполнения, имеет множество свойств и методов типа TStrings, которые обычно используются для формирования и редактирования текста. Весь текст содержится в свойстве Text.

Окно редактирования снабжено многими функциями, свойственными большинству редакторов. Например, в нем предусмотрены типичные комбинации "горячих" клавиш: Ctrl+C – копирование выделенного текста в буфер обмена Clipboard (команда Copy), Ctrl+X – вырезание выделенного текста в буфер Clipboard (команда Cut), Ctrl+V – вставка текста из буфера обмена в позицию курсора (команда Paste), Ctrl+Z – отмена последней команды редактирования.

Компонент RichEdit представляет собой многофункциональное средство редактирования текстов, позволяющее работать с обогащенным rtf-форматом, т.е. выбирать различные атрибуты форматирования для разных фрагментов текста. В этом основное отличие RichEdit от подобного, но более простого компонента Memo.

Для изменения атрибутов вновь вводимого фрагмента текста задается свойство SelAttributes, которое в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Например, если приложение имеет компонент RichEdit1 и диалог выбора шрифта FontDialog1, то следующий код позволит менять атрибуты вновь вводимого или выделенного текста:

if FontDialog1.Execute then

with RichEdit1.SelAttributes do begin

Color:=FontDialog1.Font.Color;

Name :=FontDialog1.Font.Name;

Size :=FontDialog1.Font.Size;

Style:=FontDialog1.Font.Style;

end;

RichEdit1.SetFocus;

Приведенный код можно сократить, воспользовавшись тем, что объекты SelAttributes и Font совместимы по типу.

if FontDialog1.Execute then

RichEdit1.SelAttributes.Assign(FontDialog1.Font);

RichEdit1.SetFocus;

В компоненте имеется также свойство DefAttributes, содержащее атрибуты по умолчанию.

За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств:

Alignment – определяет выравнивание текста;

FirstIndent – число пикселей отступа красной строки;

Numbering – управляет вставкой маркеров, как в списках;

LeftIndent – отступ в пикселях от левого поля;

RightIndent – отступ в пикселях от правого поля;

TabCount – количество позиций табуляции;

Tab – значения позиций табуляции в пикселях.

Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения. Значения подсвойств свойства Paragraph относятся к тому абзацу, в котором находится курсор. Например, каждый из следующих операторов осуществит соответственное выравнивание:

RichEdit1.Paragraph.Alignment:=taLeftJustify; // влево

RichEdit1.Paragraph.Alignment:=taCenter; // по центру

RichEdit1.Paragraph.Alignment:=taRightJustify;// вправо

Следующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами:

RichEdit1.Paragraph.Numbering:=nsBullet;

Уничтожение списка в текущем абзаце осуществляется оператором

RichEdit1.Paragraph.Numbering:=nsNone;

Отметим, что компонент RichEdit также позволяет работать с графикой и OLE-объектами.