Метод ScanIndexedColorUsage
Повертає детермінований перелік усіх 56 фізичних слотів палітри книги, а також визначень і посилань індексованих кольорів, що їх використовують
Метод доступний як в IXLSWorkbook, так і в TXLSXWorkbook і не змінює палітру, комірки, стилі, умовні формати чи стан книги
Синтаксис
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
Результат
Повернений масив завжди містить 56 записів у порядку зростання фізичних слотів від 8 до 63
| Поле | Значення |
|---|---|
ColorIndex | Відповідний публічний індекс палітри від 1 до 56 |
PaletteSlot | Фізичний слот індексованих кольорів BIFF чи OOXML від 8 до 63 |
ARGB | Нормалізований непрозорий колір, збережений у слоті на цей момент, або нуль, якщо його не можна розв'язати |
DefinitionCount | Кількість індексованих визначень, що вказують на слот |
ReferenceCount | Кількість об'єктів, комірок чи охоплених позицій умовних форматів, що посилаються на ці визначення |
Kinds | Множина, що описує кожну спостережувану категорію споживачів |
Locked | True, коли у слота є щонайменше одне визначення чи посилання й тому він має зберігатися планом оптимізації палітри |
Охоплення споживачів
Kinds може включати шрифти, передні та задні плани заливок, градієнти, межі, умовні формати, діаграми, фігури, коментарі, налаштування аркуша та інших індексованих споживачів
Сканування класичного XLS включає шрифти, заливки та межі XF, лінії сітки аркуша, кольори фігур і коментарів, посилання шрифтів форматованого тексту та діаграм, застарілі умовні формати, а також гістограми чи колірні шкали BIFF12
Сканування XLSX включає матеріалізовані посилання на стилі комірок, накладання стилів, іменовані стилі, пули шрифтів, заливок, градієнтів і меж, диференційні стилі, гістограми та колірні шкали
Прямі кольори RGB, кольори теми, автоматичні, системні та недійсні колірні токени не блокують фізичні слоти палітри
Продуктивність і контракт стану
Сканування обходить лише збережені розріджені комірки та наявні метадані стилів; воно не матеріалізує упаковані комірки і не перебирає невикористані координати аркуша
Лічильники використовують насичувальну 64-розрядну арифметику, тож великі діапазони не можуть переповнитися до меншого значення
Повторні виклики над незміненою книгою повертають ідентичні записи та залишають лічильники власної палітри й статистику сховища незмінними
Приклад
Usage := Workbook.ScanIndexedColorUsage;
for I := 0 to High(Usage) do
if Usage[I].Locked then
PreservePaletteSlot(Usage[I].PaletteSlot);