Documentazione HotXLS

Metodo ResolveIndexedColor

Classifica un token di colore indicizzato e risolve un valore ARGB concreto quando lo fornisce la tavolozza del workbook o un risolutore di colori di sistema fornito dal chiamante

Il metodo è disponibile sia su IXLSWorkbook sia su TXLSXWorkbook e non modifica lo stato del workbook

Sintassi

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;

Spazi di indice

SpazioInterpretazione
xicsPublicColorIndexGli indici pubblici della tavolozza 1..56 corrispondono agli slot della tavolozza BIFF 8..63; xlColorIndexAutomatic con o senza segno viene classificato come automatico
xicsBiffIcvGli indici BIFF vengono validati rispetto al ruolo selezionato: i colori di caratteri e commenti usano il sottoinsieme IcvFont, i colori di bordi e riempimenti il sottoinsieme IcvXF, i colori dei grafici il sottoinsieme IcvChart, e la ricerca generale usa la tabella Icv completa
xicsOoxmlIndexedGli indici OOXML 0..63 indirizzano la tavolozza indicizzata, 64 e 65 identificano primo piano e sfondo di sistema, e i valori maggiori non sono validi

Risultato

CampoSignificato
KindxickPalette, xickAutomatic, xickSystem o xickInvalid
RawIndexIl valore di input invariato
PaletteSlotLo slot fisico della tavolozza in base zero, oppure -1 quando il token non è basato sulla tavolozza
SystemColorRoleIl ruolo di sistema semantico, compreso testo della finestra, sfondo della finestra, testo del grafico, sfondo del grafico, neutro del grafico o testo della descrizione comando
ARGBIl colore concreto normalizzato quando HasResolvedColor è true
HasResolvedColorTrue solo quando la ricerca nella tavolozza, un colore a formato fisso o il callback esplicito hanno prodotto un valore RGB

Il valore restituito dalla funzione corrisponde a HasResolvedColor; la classificazione resta disponibile in AResolution quando la funzione restituisce false

Contratto dei colori di sistema

L'overload breve non legge mai il desktop Windows corrente e quindi lascia irrisolti i colori di sistema automatici e dipendenti dall'ambiente

L'overload lungo passa sia TXLSSystemColorRole sia TXLSIndexedColorRole a ASystemResolver, permettendo al chiamante di applicare una politica esplicita di interfaccia utente, esportazione o rendering headless

L'output del callback deve usare l'ordine dei canali $AARRGGBB; un byte alfa pari a zero viene normalizzato a $FF, mentre un risultato false del callback lascia il token semantico classificato ma irrisolto

Un COLORREF Windows usa l'ordine dei canali $00BBGGRR e deve essere convertito in $AARRGGBB prima che il callback lo restituisca

I token non validi non invocano mai il callback, e il token fisso neutro dei grafici BIFF si risolve in nero opaco senza callback

Esempio

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

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

Vedere anche