|
<< Нажмите, чтобы показать Содержание >> Выделение в таблице |
Таблица:
▪может быть не выделена, или
▪может быть выделена полностью (как часть большего выделения), или
▪может быть выделена частично (выделение ячеек), или
▪может иметь выделенный фрагмент в содержимом одной ячейки (в самой ячейке или в редакторе ячейки).
ТРВ-Редактор не поддерживаем выделение, которое начинается за пределами таблицы и заканчивается внутри таблицы. Выделение, содержащее несколько элементов, может содержать таблицы только целиком (или не содержать их).
Любой метод для работы с выделенным фрагментом может быть вызван только если документ форматирован.
Чтобы узнать, выделена ли таблица полностью, как часть большего выделения, используйте 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 могут быть применены к выделенным ячейкам (вне зависимости от типа выделения):