Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебники 60105.doc
Скачиваний:
10
Добавлен:
01.05.2022
Размер:
827.9 Кб
Скачать
      1. Компонент RichEdit

В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font. При сохранении введенного пользователем текста будет создан текстовый файл, содержащий только символы и не содержащий элементов форматирования. При последующем чтении этого файла в Memo формат будет определяться текущим состоянием свойства Font компонента Memo, а не тем, в каком формате ранее вводился текст.

Компонент RichEdit работает с текстом в обогащенном формате RTF. Текст данного формата хранит дополнительную служебную информацию, управляющую свойствами каждого абзаца и сменой шрифта по ходу текста.

RichEdit использует вспомогательные объекты класса TTextAttributes для хранения атрибутов шрифта. Эти атрибуты распространяются на весь текст через свойство редактор DefAttributes или на выделенную часть текста – через его свойство SelAttributes. Класс TTextAttributes содержит следующие свойства:

  • Color – цвет текста;

  • Height – высота текста с учетом межстрочного интервала;

  • Name - название шрифта;

  • Size – размер шрифта;

  • Style – стиль текста; может принимать комбинации следующих значений: fsItalic – курсив, fsBold – полужирный, fsUnderline – с подчеркиванием, fsStrikeOut – с перечеркиванием.

Для каждого текстового абзаца создается объект класса TParaAttributes, в котором сохраняются атрибуты абзаца:

  • Alignment – выравнивание абзаца;

  • Numbering – наличие маркера слева от текста: nsBullet – есть маркер в виде точки; nsNone – маркера нет.

Например, для первого абзаца изменим стиль текста на курсив с подчеркиванием, второй, третий и четвертый абзацы выровняем по центру и пометим маркером, для пятого абзаца поменяем размер шрифта (рис. 10):

// - - - - Object Pascal - - - -

RichEdit1.SelAttributes.Style := [fsUnderline, fsItalic];

RichEdit1.Paragraph.Alignment := taCenter;

RichEdit1.Paragraph.Numbering := nsBullet;

RichEdit1.SelAttributes.Size := 12;

// - - - - - - - C++ - - - - - - -

RichEdit1->SelAttributes->Style =

RichEdit1->SelAttributes->Style << fsUnderline;

RichEdit1->SelAttributes->Style =

RichEdit1->SelAttributes->Style << fsItalic;

RichEdit1->Paragraph->Alignment = taCenter;

RichEdit1->Paragraph->Numbering = nsBullet;

RichEdit1->SelAttributes->Size = 12;

  1. Примеры форматирования текста в компоненте RichEdit

    1. Списки строк

      1. Компонент ListBox

Компонент ListBox представляет собой стандартный для Windows список строк, с помощью которого пользователь может выбрать один или несколько элементов.

Основное свойство компонента, содержащее список строк - Items. Как и свойство Lines у компонента Memo, Items имеет тип TStrings, соответственно, к строкам спискам применимы все свойства и методы данного класса (Add, Delete, Clear, Insert, Count и т.д.).

У компонента ListBox есть свойство MultiSelect, разрешающее пользователю множественный выбор в списке. Если MultiSelect = false (значение по умолчанию), то пользователь может выбрать только один элемент списка. В этом случае свойство ItemIndex хранит индекс выбранной строки. Если ни одна строка не выбрана, то ItemIndex = -1.

Для списка, допускающего множественный выбор, число выбранных строк хранится в свойстве SelCount. Чтобы узнать, выбрана строка или нет, надо проверить свойство Selected. Если Selected равно true, то строка выбрана.

Например, надо записать в список ListBox2 номера строк, выделенных в списке ListBox1. Это можно реализовать с помощью следующего кода:

// - - - - Object Pascal - - - -

for i := 0 to ListBox1.Items.Count - 1 do

if ListBox1.Selected[i]

then ListBox2.Items.Add(IntToStr(i + 1));

// - - - - - - - C++ - - - - - - -

for (int i = 0; i < ListBox1->Items->Count; i++)

if (ListBox1->Selected[i])

ListBox2->Items->Add(IntToStr(i + 1));

Результат работы программы приведен на рис. 11.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]