Metoda ScanIndexedColorUsage
Vrací deterministický inventář všech 56 fyzických slotů palety sešitu a definic a odkazů na indexované barvy, které je používají
Metoda je k dispozici na IXLSWorkbook i TXLSXWorkbook a nemění paletu, buňky, styly, podmíněné formáty ani stav sešitu
Syntaxe
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
Výsledek
Vrácené pole vždy obsahuje 56 položek ve vzestupném pořadí fyzických slotů od 8 do 63
| Pole | Význam |
|---|---|
ColorIndex | Odpovídající veřejný index palety od 1 do 56 |
PaletteSlot | Fyzický slot indexovaných barev BIFF nebo OOXML od 8 do 63 |
ARGB | Normalizovaná neprůhledná barva aktuálně uložená ve slotu, nebo nula, pokud ji nelze rozpoznat |
DefinitionCount | Počet indexovaných definic směřujících na slot |
ReferenceCount | Počet objektů, buněk nebo pokrytých pozic podmíněného formátu, které na tyto definice odkazují |
Kinds | Množina popisující každou pozorovanou kategorii konzumentů |
Locked | True, když má slot alespoň jednu definici nebo odkaz, a musí být proto zachován plánem optimalizace palety |
Pokrytí konzumentů
Kinds může zahrnovat písma, popředí výplní, pozadí výplní, přechody, ohraničení, podmíněné formáty, grafy, tvary, komentáře, nastavení listů a další indexované konzumenty
Prohledávání classic XLS zahrnuje písma, výplně a ohraničení XF, mřížku listů, barvy tvarů a komentářů, odkazy na písma formátovaného textu a grafů, starší podmíněné formáty a datové lišty či barevné škály BIFF12
Prohledávání XLSX zahrnuje materializované odkazy na styly buněk, překryvy stylů, pojmenované styly, fondy písem, výplní, přechodů a ohraničení, diferenciální styly, datové lišty a barevné škály
Přímé barvy RGB, barvy motivů, automatické, systémové a neplatné tokeny barev fyzické sloty palety nezamknou
Kontrakt výkonu a stavu
Prohledávání prochází pouze uložené řídké buňky a stávající metadata stylů; nematerializuje zkomprimované buňky ani neprochází nepoužívané souřadnice listu
Počty používají saturující 64bitovou aritmetiku, takže velké rozsahy se nemohou zalamovat na menší hodnotu
Opakovaná volání nad nezměněným sešitem vracejí identické položky a ponechávají počty vlastní palety a statistiky úložiště beze změny
Příklad
Usage := Workbook.ScanIndexedColorUsage;
for I := 0 to High(Usage) do
if Usage[I].Locked then
PreservePaletteSlot(Usage[I].PaletteSlot);