Выделение в таблице

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

Выделение в таблице

Типы выделения

Таблица:

может быть не выделена, или

может быть выделена полностью (как часть большего выделения), или

может быть выделена частично (выделение ячеек), или

может иметь выделенный фрагмент в содержимом одной ячейки (в самой ячейке или в редакторе ячейки).

ТРВ-Редактор не поддерживаем выделение, которое начинается за пределами таблицы и заканчивается внутри таблицы. Выделение, содержащее несколько элементов, может содержать таблицы только целиком (или не содержать их).

Любой метод для работы с выделенным фрагментом может быть вызван только если документ форматирован.

Таблицы в большем выделении

Чтобы узнать, выделена ли таблица полностью, как часть большего выделения, используйте RichView.GetSelectionBounds (и сравните его результат с GetItemNo для таблицы).

Выделение нескольких ячеек

Таблицу можно выделить частично: выделение может начинаться с одной ячейки таблицы и заканчиваться другой.

Определить, выделена ли таблица частично, можно с помощью методов TRVTableItemInfo.GetSelectionBounds или GetNormalizedSelectionBounds (последний удобнее).

Вы можете выделить отдельные ячейки в таблице с помощью метода TRVTableItemInfo.Select и снять выделение с помощью метода TRVTableItemInfo.Deselect.

Вы можете полностью выделить отдельные строки или столбцы с помощью методов TRVTableItemInfo.SelectRows и SelectCols.

Вы можете определить, выделена ли данная ячейка, с помощью метода IsCellSelected.

Выделение внутри ячейки

Вы можете получить редактор и расположение редактируемой ячейки: GetEditedCell.

См. также: TRichViewEdit TopLevelEditor.

Перед выделением в ячейке необходимо активировать для неё встроенный редактор (в TRichView встроенных редакторов нет, но тот же код необходимо вызвать и в TRichView, а не только в TRichViewEdit).

Пример 1 (выделение содержимого table.Cells[0,0]):

table.EditCell(0,0);

table.Cells[0,0].GetRVData.SelectAll;

Пример 2 (делает то же)

uses CRVData, CRVFData;

var RVData: TCustomRVData;

...

RVData := table.Cells[0,0];

RVData := RVData.Edit;

TCustomRVFormattedData(RVData).SelectAll;

Способ из второго примера (вызов RVData := RVData.Edit, а затем выделение) может быть использован для любого типа RVData, не только для ячеек таблицы.

Операции редактирования

Некоторые методы RichViewEdit могут быть применены к выделенным ячейкам (вне зависимости от типа выделения):

ApplyTextStyle

ApplyParaStyle

ApplyStyleConversion

ApplyParaStyleConversion

DeleteSelection.