|
<< Нажмите, чтобы показать Содержание >> 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.
См. также методы:
▪Deselect;
См. также события:
▪OnSelect.
См. также:
▪Как переместить каретку в начало или конец документа в TRichViewEdit;
▪Как переместить каретку в начало абзаца в TRichViewEdit.
См. также:
▪метод ячейки таблицы Edit.