|
<< Нажмите, чтобы показать Содержание >> Поиск и замена текста в ТРВ-Редакторе (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 заменяет выделенную строку новой.