Шаг 15.
Компоненты библиотеки RX.
Вкладка Controls. Компонент TRxRichEdit

    На этом шаге мы рассмотрим компонент TRxRichEdit.

    Компонент TRxRichEdit (рис.1) представляет собой стандартный редактор Windows – “rich edit control”.


Рис.1. Компонент TRxRichEdit

   В отличие от компонента TRichEdit, входящем в состав VCL, компонент TRxRichEdit поддерживает такие дополнительные возможности, как многоуровневые операции отмены/возврата операций, поиск текста в обоих направлениях от положения курсора, автоматическое определение и выделение URL-ссылок в тексте и т.д.

    Можно определить, какая версия библиотеки используется приложением, по значению переменной RichEditVersion.

    Кроме того, компонент TRxRichEdit поддерживает вставку OLE-объектов (в том числе графических изображений) и активизацию их по месту. Работа с OLE-объектами в редактируемом тексте определяется значениями свойств AllowObjects, AllowInPlace и AutoVerbMenu.

   Класс TRxRichEdit реализует несколько методов для работы со стандартными диалогами Windows: InsertObjectDialog, PasteSpecialDialog, ObjectPropertiesDialog, FindDialog, ReplaceDialog.

    Некоторые свойства и методы компонента:

Таблица 1. Свойства компонента TRxRichEdit
Свойство Описание
property AllowObjects: Boolean; Свойство определяет, возможно ли будет вставлять OLE-объекты в редактор TRxRichEdit.
  • True (по умолчанию) разрешает использование OLE-объектов.
property AllowInPlace: Boolean; Свойство определяет, позволяет ли компонент активацию содержавшихся в нем объектов OLE.
  • True и объект не является графическим - объект OLE активизирован.
  • False - объект OLE активизирован в отдельном окне.
property AutoVerbMenu: Boolean; Определяет, создает ли компонент автоматически появляющееся меню, содержащее пункты для работы с OLE. Используйте свойство, чтобы определить, может ли объект OLE добавить пункты к меню компонента:
  • True - OLE добавляет пункты к меню или создает новое popup-меню.
  • False - никакие пункты меню автоматически не создаются.
function InsertObjectDialog: Boolean; Отображает диалоговое окно. InsertObjectDialog позволяет пользователю создавать объект OLE. Объект OLE может быть вложен или связан. Возвращает True , если окно диалога было успешно показано и пользователь сделал выбор (нажал кнопку OK). Если AllowObjects - Flase, этот метод просто возвращает False без каких-либо действий.
function PasteSpecialDialog: Boolean; Отображает диалоговое окно. SteSpecialDialog позволяет пользователю осуществить специальную вставку в окно редактирования TrxRichEdit (из буфера ). PasteSpecialDialog позволяет пользователю выбирать формат данных, определять, будет ли объект OLE быть показан как изображение (и если так, выбирать различное изображение). Возвращает True, если окно диалога было успешно показано и пользователь нажал кнопку OK. Если AllowObjects - Flase, этот метод просто возвращается False без каких-либо действий.
function FindDialog(const SearchStr: string): TFindDialog; Метод вызывает появление стандартного диалога TFindDialog для поиска текста в редакторе TRxRichEdit. После поиска текста, найденная строка становится выделенной в редакторе, если текст не найден, происходит событие OnTextNotFound.
function ReplaceDialog(const SearchStr, ReplaceStr: string): TReplaceDialog; Метод вызывает появление стандартного диалога TReplaceDialog для поиска и замены текста в редакторе TRxRichEdit. Если текст не найден, происходит событие OnTextNotFound.

    Приведем пример: поместим на форму компоненты RxRichEdit1, RxSpeedButton1 и RxSpeedButton2 (рис.2).


Рис.2. Форма с размещенными на ней компонентами RxRichEdit1, RxSpeedButton1 и RxSpeedButton2

    Кнопка RxSpeedButton1 будет вызывать открытие диалогового окна для вставки какого-либо объекта, а кнопка RxSpeedButton2 - диалоговое окно для специальной вставки из буфера.

    Для компонента RxSpeedButton1 напишем обработчик события OnClick:

procedure TForm1.RxSpeedButton1Click(Sender: TObject);
begin
  RxRichEdit1.InsertObjectDialog;
end;

    Для компонента RxSpeedButton2 напишем обработчик события OnClick:

procedure TForm1.RxSpeedButton2Click(Sender: TObject);
begin
  RxRichEdit1.PasteSpecialDialog;
end;

    Работа программы показана на рис.3(а-д).


Рис.3а. Компонент RxRichEdit1 содержит текст


Рис.3б. Диалоговое окно для вставки объекта


Рис.3в. Вставка объекта в поле редактирования компонента RxRichEdit1


Рис.3г. Диалоговое окно для специальной вставки объекта


Рис.3д. Вставка текста из буфера в поле редактирования компонента RxRichEdit1

    Текст этого примера можно взять здесь.

    На следующем шаге мы рассмотрим компонент TRxClock.




Предыдущий шаг Содержание Следующий шаг