Поиск и замена текста в ТРВ-Редакторе (TRichView)

<< Нажмите, чтобы показать Содержание >>

Поиск и замена текста в ТРВ-Редакторе (TRichView)

Основные методы для поиска текста:

function TRichView.SearchTextW(s: TRVUnicodeString;

  SrchOptions: TRVSearchOptions): Boolean;

function TRichViewEdit.SearchTextW(s: TRVUnicodeString;

  SrchOptions: TRVESearchOptions): Boolean;

Эти методы ищут вхождение в документ строки s. Если найдено:

если назначен обработчик события OnTextFound, он вызывается;

в противном случае, или если параметр DoDefault события OnTextFound = True, методы выделяют строку в документе и делают её видимой (прокручивая окно).

Выделение текста требует форматированный документ, поэтому, если результат поиска не обрабатывается исключительно в OnTextFound, поиск текста также требует, чтобы документ был отформатирован.

Метод TRichView начинает поиск с текущего выделения (если оно есть) или с первого (или последнего, если поиск ведется вверх) видимого элемента документа. Если опция rvsroFromStart включена в параметр SrchOptions, метод начинает поиск с начала (или конца, если поиск ведется вверх) документа.

Метод TRichViewEdit начинает поиск с позиции каретки.

Вместо выделения или позиции курсора можно использовать последнюю сохранённую позицию результата поиска. Эта позиция сохраняется методом StoreSearchResult и используется в качестве начальной точки, если rvsroFromStored/rvseoFromStored включены в SrchOptions.

Все методы поддерживают следующие опции:

поиск вверх или вниз;

с учётом или без учёта регистра букв;

поиск слов целиком;

поиск в каждом текстовом элементе отдельно, либо найденная строка может содержаться в нескольких соседних текстовых элементах.

s может содержать символ табуляции (#9). Однако, он имеет смысл только если установлена опция, разрешающая искать строку в нескольких текстовых элементах.

Модуль RVMisc.pas содержит функции, преобразующие опции диалога поиска в параметры методов поиска:

function GetRVSearchOptions(fo: TFindOptions): TRVSearchOptions;

function GetRVESearchOptions(fo: TFindOptions):TRVESearchOptions;

Реализовать замену текста в редакторе довольно просто. Метод SearchText выделяет старую подстроку, а InsertText заменяет выделенную строку новой.