Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Memo

Компонент Memo – это многострочное окно редактирования текста. Компонент Memo обладает теми же функциями, что и Edit. Для быстрого редактирования текста имеются комбинации «горячих» клавиш:

  • Ctrl+C – копирование выделенного текста.
  • Ctrl+V – вставка текста.
  • Ctrl+X – вырезание выделенного текста.
  • Ctrl+Z – отмена последней команды редактирования.

Свойство Font компонента Memo одинаковый формат (шрифт и его атрибуты) для всего текста. Отредактированный текст при копировании из окна Memo не будет содержать элементы форматирования. Или отредактированный текст скопированный, например, из Word с элементами форматирования, то при вставке в окно Memo, будет вставлен как текст и к нему применяться те стили, которые указаны в свойстве Font.

Свойства Memo

  • Lines типа TStrings – содержит текст окна и представляет из себя список строк. Через «Инспектор Объектов» можно задать начальный текст в Lines. Lines имеет ряд параметров:
    • Add или Append – добавляет текст в конец строки;
    • Clear – очистка Memo от всего текста.
  • Alignment – устанавливает выравнивание текста.
  • WordWrap – разрешает перенос длинных строк.
  • Readonly – запрещает редактировать текст в Memo.
  • MaxLength – устанавливает максимально допустимое количество символов вводимого текста.
  • WantTabs – устанавливает действие над кнопкой Tab. Если установлено true, при нажатии кнопки Tab в Memo, будет добавлена табуляция. Если установлено false, то будет переключаться фокус между компонентами на форме.
  • ScrollBars – устанавливает полосу прокрутки в окне. В компоненте Memo полосы всегда отображаются, независимо от размера окна и текста. ScrollBars имеет ряд параметров:
    • ssNone – скрывает полосу прокрутки;
    • ssHorizontal – устанавливает горизонтальную прокрутку;
    • ssVertical – устанавливает вертикальную прокрутку;
    • ssBoth – устанавливает и горизонтальную и вертикальную.
  • Count – отображает количество строк текста в Memo.
  • Strings[int Index] типа AnsiString – предоставляет доступ к любой строке текста. В C++ Builder, индекс начинаются с 0.
Memo1->Lines->Strings[0]; //Текст первой строки
  • SelStart – указывает индекс текста, на котором установлен указатель мыши.
  • CaretPos – отображает структуру:
    • X – содержит индекс символа перед курсором мыши;
    • Y – отображает индекс строки, где расположен курсор.

Пример добавления текста в Memo

Edit1->Text = "C++ Builder";
Memo1->Lines->Add("Учимся программировать");
Memo1->Lines->Add("Язык " + Edit1->Text);

RichEdit

Компонент RichEdit – это удобное многострочное окно редактирования текста. Компонент RichEdit имеет большинство функций компонентов Memo и Edit. Так же есть наличие комбинации «горячих» клавиш. Окно редактирования RichEdit обладает множеством сообщений Windows, которые позволяют управлять текстом.

Компонент RichEdit позволяет редактировать текст формате RTF. Свойство SelAttributes типа TTextAttributes позволяет менять атрибуты добавляемого текста и имеет ряд подсвойств:

  • Color – устанавливает цвет текста.
  • Name – устанавливает имя шрифта.
  • Size – устанавливает размер.
  • Style – определяет стиль текста.

С помощью диалога выбора шрифта FontDialog можно легко менять атрибуты текста в RichEdit.

Свойства RichEdit

  • Lines типа TStrings – содержит текст окна и представляет из себя список строк. Через «Инспектор Объектов» можно задать начальный текст в Lines. Lines имеет ряд параметров:
    • Add или Append – добавляет текст в конец строки;
    • Clear – очистка RichEdit от всего текста.
  • DefAttributes – содержит начальные атрибуты текста. Они действуют на всём промежутке времени, даже после изменения атрибутов в SelAttributes, которые могут быть методом Assign. Этот метод можно присвоить к атрибутам SelAttributes, чтобы можно было быстро вернуть начальный стиль. Свойство DefAttributes доступно во время выполнения приложения. Это очень полезно, т.к. его атрибуты можно назначить в обработчике события на создание формы OnCreate.
  • Paragraph типа TParaAttributes – служит для выравнивания, отступов и т.д. текста в пределах текущего абзаца и имеет ряд свойств:
Значение Описание
Alignment

Устанавливает выравнивание текста:

  • taLeftJustify – по левому краю;
  • taRightJustify – по правому краю;
  • taCenter (по центру).
Firstlndent

Устанавливает размер красной строки в пикселях.

Numbering

Устанавливает маркерный список:

  • nsNone –маркеры отключены;
  • nsBullet – добавляет маркеры к списку.
Leftlndent

Устанавливает отступ от левого поля в пикселях.

Rightlndent

Устанавливает отступ от правого поля в пикселях.

RichEdit1->Paragraph->Alignment = taLeftJustify; //Выравнивание по левому краю
RichEdit1->Paragraph->Alignment = taCenter; //Выравнивание по центру
RichEdit1->Paragraph->Alignment = taRightJustify; //Выравнивание по правому краю
RichEdit1->Paragraph->Numbering = nsBullet; //Делает список маркированным
RichEdit1->Paragraph->Numbering = nsNone; //Убирает маркер
  • WantTabs – устанавливает действие над кнопкой Tab. Если установлено true, при нажатии кнопки Tab в RichEdit, будет добавлена табуляция. Если установлено false, то будет переключаться фокус между компонентами на форме.
  • Alignment – устанавливает выравнивание текста.
  • WordWrap – разрешает перенос длинных строк.
  • MaxLength – устанавливает максимально допустимое количество символов вводимого текста.
  • Readonly – запрещает редактировать текст в RichEdit.
  • ScrollBars – устанавливает полосу прокрутки в окне. В компоненте RichEdit полосы отображаются автоматически, когда текст не помещается в окно. ScrollBars имеет ряд параметров:
    • ssNone – скрывает полосу прокрутки;
    • ssHorizontal – устанавливает горизонтальную прокрутку;
    • ssVertical – устанавливает вертикальную прокрутку;
    • ssBoth – устанавливает и горизонтальную и вертикальную.
  • Count – отображает количество строк текста в RichEdit.
  • Strings[int Index] типа AnsiString – предоставляет доступ к любой строке текста.
  • SelStart – указывает индекс текста, на котором установлен указатель мыши.
  • CaretPos – отображает структуру:
    • X – содержит индекс символа перед курсором мыши;
    • Y – отображает индекс строки, где расположен курсор.

Пример изменения текста в RichEdit

if(FontDialog1->Execute()) //Проверка запущен ли FontDialog
RichEdit1->SelAttributes->Assign(FontDialog1->Font); //Устанавливает свойства выделенного текста
RichEdit1->SetFocus(); //Переход к окну редактирования RichEdit

Пример определения индекса символа и строки в RichEdit

RichEdit1->Lines->Clear();
RichEdit1->Lines->Add("Учись программированию на C++ Builder бесплатно!");
int x = RichEdit1->CaretPos.x+1;
int y = RichEdit1->CaretPos.y+1;
Label1->Caption = "Индекс символа - " + IntToStr(x);
Label2->Caption = "Номер строки - " + IntToStr(y);

Пример определения индекса символа и строки в RichEdit

Поделиться