Документація HotXLS

Метод ResolveIndexedColor

Класифікує токен індексованого кольору та розв'язує конкретне значення ARGB, коли його надає палітра книги або переданий викличним кодом розв'язувач системних кольорів

Метод доступний як в IXLSWorkbook, так і в TXLSXWorkbook і не змінює стан книги

Синтаксис

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  ARole: TXLSIndexedColorRole;
  ASystemResolver: TXLSTryResolveSystemColor;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

Простори індексів

ПростірІнтерпретація
xicsPublicColorIndexПублічні індекси палітри 1..56 відповідають слотам палітри BIFF 8..63; знакове чи беззнакове xlColorIndexAutomatic класифікується як автоматичне
xicsBiffIcvІндекси BIFF перевіряються на відповідність обраній ролі: кольори шрифтів і коментарів використовують підмножину IcvFont, кольори меж і заливок — підмножину IcvXF, кольори діаграм — підмножину IcvChart, а загальний пошук — повну таблицю Icv
xicsOoxmlIndexedІндекси OOXML 0..63 адресують індексовану палітру, 64 і 65 ідентифікують системні колір тексту та колір тла, а більші значення недійсні

Результат

ПолеЗначення
KindxickPalette, xickAutomatic, xickSystem або xickInvalid
RawIndexНезмінене вхідне значення
PaletteSlotФізичний слот палітри з нумерацією від нуля або -1, коли токен не пов'язаний з палітрою
SystemColorRoleСемантична системна роль: текст вікна, тло вікна, текст діаграми, тло діаграми, нейтральний колір діаграми чи текст спливної підказки
ARGBНормалізований конкретний колір, коли HasResolvedColor істинне
HasResolvedColorІстинне лише тоді, коли пошук за палітрою, фіксований колір формату чи явний зворотний виклик дали значення RGB

Повернене функцією значення збігається з HasResolvedColor; класифікація залишається доступною у AResolution, коли функція повертає false

Контракт системних кольорів

Коротке перевантаження ніколи не читає поточну стільницю Windows і тому залишає автоматичні та залежні від середовища системні кольори нерозв'язаними

Довге перевантаження передає і TXLSSystemColorRole, і TXLSIndexedColorRole до ASystemResolver, дозволяючи викличному коду застосувати явну політику користувацького інтерфейсу, експорту чи візуалізації без інтерфейсу

Вихідні дані зворотного виклику мають використовувати порядок каналів $AARRGGBB; нульовий байт альфи нормалізується до $FF, а результат зворотного виклику false залишає семантичний токен класифікованим, але нерозв'язаним

Windows COLORREF використовує порядок каналів $00BBGGRR і має бути перетворений на $AARRGGBB до повернення зі зворотного виклику

Недійсні токени ніколи не викликають зворотний виклик, а фіксований нейтральний токен діаграм BIFF розв'язується в непрозорий чорний без зворотного виклику

Приклад

if Workbook.ResolveIndexedColor(12, xicsPublicColorIndex, Resolution) then
  UseArgb(Resolution.ARGB);

if not Workbook.ResolveIndexedColor($40, xicsBiffIcv, Resolution) then
  Assert(Resolution.Kind = xickSystem);

Див. також