Класс TXLSXStructuralEditRegistry
TXLSXWorksheet.StructuralEditRegistry координирует обновления, чувствительные к ссылкам, после вставки и удаления строк или столбцов
Встроенные участники всегда обновляют формулы HotXLS, имена, проверки, условные форматы, примечания, гиперссылки, рисунки, таблицы, привязки запросов, сценарии, таблицы данных, метаданные печати, защищённые диапазоны, спарклайны, типизированные сводные таблицы и распознаваемые сохранённые ссылки расширений
Приложения могут регистрировать упорядоченных участников для собственных метаданных листа без замены встроенной транзакции
Объявления
type
TXLSXStructuralEdit = record
RowFrom: Integer;
RowDelta: Integer;
ColFrom: Integer;
ColDelta: Integer;
end;
IXLSXStructuralEditParticipant = interface
procedure ApplyStructuralEdit(Worksheet: TXLSXWorksheet;
const Edit: TXLSXStructuralEdit);
end;
TXLSXStructuralEditRegistry = class
procedure RegisterParticipant(
const Participant: IXLSXStructuralEditParticipant);
procedure UnregisterParticipant(
const Participant: IXLSXStructuralEditParticipant);
procedure Clear;
property Count: Integer;
end;
Поля правки
| RowFrom | Первая затронутая строка с отсчётом от 1 или ноль, когда строки не изменены |
| RowDelta | Положительное количество вставленных строк или отрицательное количество удалённых строк |
| ColFrom | Первый затронутый столбец с отсчётом от 1 или ноль, когда столбцы не изменены |
| ColDelta | Положительное количество вставленных столбцов или отрицательное количество удалённых столбцов |
Правила участников
- Участники выполняются в порядке регистрации после всех встроенных обновлений ссылок
- Повторная регистрация одного и того же интерфейса не даёт эффекта
Countсообщает только участников приложения, поскольку встроенные обновления всегда активны- Участники не должны изменять реестр или запускать другое структурное редактирование изнутри обратного вызова
Пример
type
TMetadataUpdater = class(TInterfacedObject,
IXLSXStructuralEditParticipant)
public
procedure ApplyStructuralEdit(Worksheet: TXLSXWorksheet;
const Edit: TXLSXStructuralEdit);
end;
Updater := TMetadataUpdater.Create;
Sheet.StructuralEditRegistry.RegisterParticipant(Updater);
Sheet.InsertRows(4, 2);