Trieda TXLSXStructuralEditRegistry
TXLSXWorksheet.StructuralEditRegistry koordinuje aktualizácie citlivé na referencie po vložení a odstránení riadkov alebo stĺpcov
Vstavaní účastníci vždy aktualizujú vzorce HotXLS, názvy, validácie, podmienené formáty, komentáre, hypertextové odkazy, kresby, tabuľky, väzby dotazov, scenáre, dátové tabuľky, metadáta tlače, chránené rozsahy, sparklines, typované kontingenčné tabuľky a rozpoznateľné zachované referencie rozšírení
Aplikácie môžu registrovať usporiadaných účastníkov pre vlastné metadáta hárkov bez nahradenia vstavanej transakcie
Deklarácie
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;
Polia úprav
| RowFrom | Prvý ovplyvnený riadok od jednotky, alebo nula, keď sa riadky nemenia |
| RowDelta | Kladný počet vložených riadkov alebo záporný počet odstránených riadkov |
| ColFrom | Prvý ovplyvnený stĺpec od jednotky, alebo nula, keď sa stĺpce nemenia |
| ColDelta | Kladný počet vložených stĺpcov alebo záporný počet odstránených stĺpcov |
Pravidlá účastníkov
- Účastníci bežia v poradí registrácie po všetkých vstavaných aktualizáciách referencií
- Registrácia rovnakého rozhrania viac ako raz nemá žiadny účinok
Counthlási iba účastníkov aplikácie, pretože vstavané aktualizácie sú vždy aktívne- Účastníci nesmú meniť register ani spustiť ďalšiu štrukturálnu úpravu zvnútra spätného volania
Príklad
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);