Обзор компонентов библиотеки C++Builder_______________________147

При последующем чтении этого файла в Memo формат будет определяться теку-
щим состоянием свойства Font компонента Memo, а не тем, в каком формате ранее
вводился текст.

Компонент Bichedit работает с текстом в обогащенном формате RTF. При же-
лании изменить атрибуты вновь вводимого фрагмента текста вы можете задать
свойство SelAttributes. Это свойства типа TTextAttributes, которое в свою очередь
имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и
ряд других. Например, введите на форму компонент Richedit, диалог выбора
шрифта FontDialog (см. раздел 3.6.4) и кнопку Button, которая позволит пользо-
вателю менять атрибуты текста. В обработчик щелчка кнопки введите текст:

if(FontDialogl->Execute())

RichEditl->SeiAttributes->Assign(Font Dialogl->Font) ;

RichEditl->SetFocus() ;

Запустите приложение и увидите, что вы можете менять атрибуты текста, вы-
полняя отдельные фрагменты различными шрифтами, размерами, цветами, сти-
лями. Устанавливаемые атрибуты влияют на выделенный текст или, если ничего
не выделено, то на атрибуты нового текста, вводимого начиная с текущей позиции
курсора (позиция курсора определяется свойством SelStart).

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

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

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

Alignment (выравнивание), принимающее значения taLeftJustify (влево), taCen-
ter (по центру) или taRightJustify (вправо); Firstlndent — число пикселей отступа
красной строки; Numbering — вставка маркеров, как в списках (значение nsNone
— отсутствие маркеров, значение nsBullet — маркеры ставятся); Leftlndent и Rig-
htlndent — отступы в пикселях от левого и правого поля; TabCount и Tab — коли-
чество позиций табуляции и значения этих позиций в пикселях (при вводе текста
эти свойства имеют смысл только при значении свойства WantTabs = true, что
разрешает пользователю вводить в текст символ табуляции). Значения подсвойств
свойства Paragraph можно задавать только в процессе выполнения приложения,
например, в событии создания формы или при нажатии какой-нибудь кнопки.
Значения подсвойств свойства Paragraph относятся к тому абзацу, в котором нахо-
дится курсор. Например, оператор

RichEditl->Paragraph->Alignment = taCenter;

осуществит выравнивание текущего абзаца по центру. А оператор
RichEditl->Paragraph->Numbering = nsBullet;

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

Мы рассмотрели основные отличия Memo и Richedit. Теперь остановимся на
общих свойствах этих окон редактирования.

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