Metoda ScanIndexedColorUsage
Zwraca deterministyczny wykaz wszystkich 56 fizycznych slotów palety skoroszytu oraz definicji i odwołań kolorów indeksowanych, które z nich korzystają
Metoda jest dostępna zarówno w IXLSWorkbook, jak i w TXLSXWorkbook i nie modyfikuje palety, komórek, stylów, formatów warunkowych ani stanu skoroszytu
Składnia
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
Wynik
Zwracana tablica zawsze zawiera 56 wpisów w rosnącej kolejności slotów fizycznych od 8 do 63
| Pole | Znaczenie |
|---|---|
ColorIndex | Odpowiadający publiczny indeks palety od 1 do 56 |
PaletteSlot | Fizyczny slot kolorów indeksowanych BIFF lub OOXML od 8 do 63 |
ARGB | Znormalizowany nieprzezroczysty kolor obecnie zapisany w slocie albo zero, jeśli nie można go rozwiązać |
DefinitionCount | Liczba definicji indeksowanych wskazujących na slot |
ReferenceCount | Liczba obiektów, komórek lub objętych pozycji formatów warunkowych odwołujących się do tych definicji |
Kinds | Zbiór opisujący każdą zaobserwowaną kategorię konsumentów |
Locked | True, gdy slot ma co najmniej jedną definicję lub odwołanie i dlatego musi być zachowany przez plan optymalizacji palety |
Zakres konsumentów
Kinds może obejmować czcionki, pierwsze i tylne plany wypełnień, gradienty, obramowania, formaty warunkowe, wykresy, kształty, komentarze, ustawienia arkusza oraz innych indeksowanych konsumentów
Skanowanie klasycznego XLS obejmuje czcionki, wypełnienia i obramowania XF, linie siatki arkusza, kolory kształtów i komentarzy, odwołania czcionek tekstu sformatowanego i wykresów, starsze formaty warunkowe oraz paski danych lub skale kolorów BIFF12
Skanowanie XLSX obejmuje zmaterializowane odwołania do stylów komórek, nakładki stylów, style nazwane, pule czcionek, wypełnień, gradientów i obramowań, style różnicowe, paski danych i skale kolorów
Bezpośrednie kolory RGB, kolory motywu, tokeny automatyczne, systemowe i nieprawidłowe nie blokują fizycznych slotów palety
Wydajność i kontrakt stanu
Skanowanie przechodzi wyłącznie przez zapisane rozrzedzone komórki i istniejące metadane stylów; nie materializuje spakowanych komórek ani nie iteruje po nieużywanych współrzędnych arkusza
Liczniki używają 64-bitowej arytmetyki saturacyjnej, dzięki czemu duże zakresy nie mogą się zawinąć do mniejszej wartości
Powtarzane wywołania na niezmienionym skoroszycie zwracają identyczne wpisy i pozostawiają liczniki palety niestandardowej oraz statystyki magazynu bez zmian
Przykład
Usage := Workbook.ScanIndexedColorUsage;
for I := 0 to High(Usage) do
if Usage[I].Locked then
PreservePaletteSlot(Usage[I].PaletteSlot);