RichEdit в Delphi

Многострочное окно редактирования текстов в обогащенном формате .rtf, позволяющее производить выбор цвета, шрифта, поиск текста и т.д.


Страница библиотеки Win32

Класс TRichEdit

Иерархия TObiectTPersistentTComponentTControlTWinControlTCustomEdit — TCustomMemo — TCustomRichEdit

Модуль stdctrls

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

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

У Свойства Lines, которое доступно как в период составления проекта, так и в период его выполнения, есть в наличии множество свойств и методов типа TStrings). Свойство Text содержит в себе весь текст. Имееются свойства времени выполнения SelLength, SelStart, SelText, которые определят длину выделенного текста, а также позицию перед первым символом выделенного текста и сам выделенный текст. Если остутствует выделенный текст, то свойство SelStart однозначно определяет текущее положение курсора.

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

if FontDialogl.Execute then with RichEditl.SelAttributes do begin

Color:=FontDialogl.Font.Color;

Name:=FontDialogl.Font.Name;

Size:=FontDialogl.Font.Size;

Style:=FontDialogl.Font.Style; end;

RichEditl.SetFocus;

В приведенном коде дает возможность присваивать поочередно значение каждого свойства. Но этот текст можно сильно сократить, потому что типы объектов SelAttributes и Font являются совместимыми, поэтому можно присвоить сразу все свойства одного объекта другому:

if FontDialogl.Execute then

RichEditl.SelAttributes.Assign(FontDialogl.Font); RichEditl.SetFocus;

Свойство DefAttributes, которое содержит в себе атрибуты по умолчанию. Эти атрибуты продолжают действовать до тех пор, пока не изменятся атрибуты в свойстве SelAttributes. Но значения атрибутов в DefAttributes сохраняются, поэтому всегда имеется возможность
в любой момент этим значениям быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.

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

Alignment Определяет выравнивание текста.
Firstlndent Число пикселов отступа красной строки.
Numbering Управляет вставкой маркеров, как в списках.
Leftlndent Отступ в пикселах от левого поля.
Rightlndent Отступ в пикселах от правого поля.
TabCount Количество позиций табуляции.
Tab Значения позиций табуляции в пикселах.

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

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

RichEditl.Paragraph.Alignment:=taCenter; // По центру

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

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

RichEditl.Paragraph.Numbering:=nsBullet;

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

RichEditl.Paragraph.Numbering:=nsNone;

Свойство Modified, которое доступно только во время выполнения, показывает, было ли редактирование текста в окне. Если вам необходимо использовать это свойство, то в момент начала работы пользователя с текстом Modified следует установить в false. Тогда при последующем обращении к этому свойству можно по его значению (true или false) узнать, было или нет редактирование.

Свойство Wordwrap, равное true, указывает на то, что допускается перенос длинных строк. Установка свойства ReadOnly в true задает текст только для чтения. Свойство MaxLength задает максимально возможную длину вводимого текста. Если MaxLength = 0, то длина текста не имеет ограничений. Свойства WantReturns и WantTab определяют доступность ввода пользователем в текст символов перевода строки и табуляции (TAB).

Свойство Scrollbars задает будут ли в наличии полосы прокрутки текста в окне. По умолчанию свойство ScrollBars равно ssNone, что означает отсутствие полос прокрутки. Пользователь может перемещаться в данном случае по тексту только при помощи курсора. Свойство ScrollBars может принимать: ssHorizontal, ssVertical или ssBoth, что означает присудствие горизонтальной прокрутки, вертикальной прокрутки или обеих полос одновременно.

Свойство CaretPos указывает на запись, поле X которой содержит индекс символа в строке, перед которым распологается курсор, а поле Y — индекс строки, в которой находится курсор. Итак, учитывая, что индексы начинаются с 0, значения Memol.CaretPos.Y+1 и Memol.CaretPos.Х+1 определяют соответственно номер строки и символа в ней, перед которым располагается курсор.

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

. delphi как из edit вставить текст в richedit
. создать описание RichEdit Delphi
Комментирование и размещение ссылок запрещено.