TCustomRichView.SetSelectionBounds

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

TCustomRichView.SetSelectionBounds

Выделяет фрагмент документа (например, для копирования в буфер обмена)

procedure SetSelectionBounds(StartItemNo, StartItemOffs,

  EndItemNo, EndItemOffs: Integer);

Параметры:

StartItemNo номер первого выделяемого элемента (от 0).

StartItemOffs:

если первый выделяемый элемент является текстовым, то начало выделения находится перед его символом с номером StartItemOffs (символы в строках считаются от 1, последняя позиция (после текстового элемента) равна длине текста + 1). Исключение составляют пустые текстовые элементы, отформатированные стилем с EmptyWidth>0; для них позиция после элемента равна 2.

если первый выделяемый элемент не текстовый:

если StartItemOffs=0, выделение начинается перед этим элементом;

если StartItemOffs=1, выделение начинается после этого элемента.

EndItemNo номер последнего выделяемого элемента (от 0).

EndItemOffs:

если последний выделяемый элемент является текстовым, то конец выделения находится перед его символом с номером EndItemOffs (символы в строках отсчитываются от 1, последняя позиция (после текстового элемента) равна длине текста + 1). Исключение составляют пустые текстовые элементы, отформатированные стилем с EmptyWidth>0; для них позиция после элемента равна 2.

если последний выделяемый элемент не текстовый:

если EndItemOffs=0, выделение заканчивается перед этим элементом;

если EndItemOffs=1, выделение заканчивается после этого элемента.

 

Позиция каретки

В TRichViewEdit каретка всегда находится в конце выделения, поэтому этот метод перемещает каретку.

 

Выделения в ячейках таблиц

Перед выделением содержимого ячейки активируйте её редактирование (даже в компоненте TRichView!):

var RVData: TCustomRVFormattedData;

 
RVData := TCustomRVFormattedData(Table.Cells[r,c].Edit);
RVData.SetSelectionBounds(...);

 

Снятие выделения

Есть два способа снять выделение:

передать StartItemNo=-1

передать StartItemNo=EndItemNo и StartItemOffs=EndItemOffs (в редакторе это перемещает каретку в указанное место).

 

Дополнительная информация

Метод не перерисовывает компонент (используйте Invalidate)

Метод вызывает событие OnSelect.

Имеются два полезных метода, упрощающих работу с SetSelectionBounds: GetOffsBeforeItem и GetOffsAfterItem.

Метод может быть вызван только если документ форматирован.

Если вам удобно выделять с помощью значений, аналогичных свойствам RichEdit (SelStart и SelLength), используйте вместо этого функцию RVSetSelection из модуля RVLinear.

 

См. также методы:

SelectAll;

Deselect;

GetSelectionBounds.

См. также события:

OnSelect.

См. также:

Работа с выделением;

Как переместить каретку в начало или конец документа в TRichViewEdit;

Как переместить каретку в начало абзаца в TRichViewEdit.

См. также:

метод ячейки таблицы Edit.