Classe TXLSXStructuralEditRegistry
TXLSXWorksheet.StructuralEditRegistry coordena atualizações sensíveis a referências após inserção e exclusão de linhas ou colunas
Os participantes internos sempre atualizam fórmulas, nomes, validações, formatos condicionais, comentários, hiperlinks, desenhos, tabelas, associações de consulta, cenários, tabelas de dados, metadados de impressão, intervalos protegidos, minigráficos, pivôs tipados e referências reconhecíveis de extensões preservadas do HotXLS
Os aplicativos podem registrar participantes ordenados para seus próprios metadados de planilha sem substituir a transação interna
Declarações
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;
Campos de edição
| RowFrom | Primeira linha afetada com base 1, ou zero quando as linhas não são alteradas |
| RowDelta | Contagem positiva de linhas inseridas ou contagem negativa de linhas excluídas |
| ColFrom | Primeira coluna afetada com base 1, ou zero quando as colunas não são alteradas |
| ColDelta | Contagem positiva de colunas inseridas ou contagem negativa de colunas excluídas |
Regras do participante
- Os participantes são executados na ordem de registro após todas as atualizações de referência internas
- Registrar a mesma interface mais de uma vez não tem efeito
Countinforma apenas os participantes do aplicativo porque as atualizações internas estão sempre ativas- Os participantes não devem alterar o registro nem iniciar outra edição estrutural de dentro do callback
Exemplo
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);