Documentație HotXLS

Metoda ResolveIndexedColor

Clasifică un token de culoare indexată și rezolvă o valoare ARGB concretă atunci când paleta registrului de lucru sau un resolver de culori de sistem furnizat de apelant oferă una

Metoda este disponibilă atât pe IXLSWorkbook, cât și pe TXLSXWorkbook și nu modifică starea registrului de lucru

Sintaxă

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;

Spații de indecși

SpațiuInterpretare
xicsPublicColorIndexIndecșii publici ai paletei 1..56 se mapează pe sloturile paletei BIFF 8..63; xlColorIndexAutomatic, cu semn sau fără semn, este clasificat ca automat
xicsBiffIcvIndecșii BIFF sunt validați față de rolul selectat: culorile de font și comentariu folosesc submulțimea IcvFont, culorile de bordură și umplere submulțimea IcvXF, culorile graficelor submulțimea IcvChart, iar căutarea generală folosește tabla completă Icv
xicsOoxmlIndexedIndecșii OOXML 0..63 adresează paleta indexată, 64 și 65 identifică prim-planul și fundalul sistemului, iar valorile mai mari sunt invalide

Rezultat

CâmpSemnificație
KindxickPalette, xickAutomatic, xickSystem sau xickInvalid
RawIndexValoarea de intrare neschimbată
PaletteSlotSlotul fizic al paletei cu bază zero, sau -1 când token-ul nu se bazează pe paletă
SystemColorRoleRolul semantic de sistem, inclusiv textul ferestrei, fundalul ferestrei, textul graficului, fundalul graficului, neutralul graficului sau textul tooltip
ARGBCuloarea concretă normalizată când HasResolvedColor este true
HasResolvedColorTrue doar când căutarea în paletă, o culoare cu format fix sau callback-ul explicit a produs o valoare RGB

Valoarea returnată de funcție coincide cu HasResolvedColor; clasificarea rămâne disponibilă în AResolution când funcția returnează false

Contractul culorilor de sistem

Supraîncărcarea scurtă nu citește niciodată desktopul curent Windows și, prin urmare, lasă culorile de sistem automate și dependente de mediu nerezolvate

Supraîncărcarea lungă transmite atât TXLSSystemColorRole, cât și TXLSIndexedColorRole către ASystemResolver, permițând apelantului să aplice o politică explicită de UI, de export sau de randare headless

Ieșirea callback-ului trebuie să folosească ordinea canalelor $AARRGGBB; un octet alfa zero este normalizat la $FF, în timp ce un rezultat false al callback-ului lasă token-ul semantic clasificat, dar nerezolvat

Un COLORREF Windows folosește ordinea canalelor $00BBGGRR și trebuie convertit la $AARRGGBB înainte ca callback-ul să îl returneze

Token-urile invalide nu invoacă niciodată callback-ul, iar token-ul fix de culoare neutră a graficului BIFF se rezolvă în negru opac fără callback

Exemplu

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

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

Consultați și