HotXLS-Dokumentation

ResolveIndexedColor-Methode

Klassifiziert ein Token für eine indizierte Farbe und löst einen konkreten ARGB-Wert auf, wenn die Arbeitsmappenpalette oder ein vom Aufrufer bereitgestellter Systemfarben-Auflöser einen liefert

Die Methode ist sowohl für IXLSWorkbook als auch für TXLSXWorkbook verfügbar und ändert den Arbeitsmappenzustand nicht

Syntax

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;

Indexräume

RaumInterpretation
xicsPublicColorIndexÖffentliche Palettenindizes 1..56 werden auf BIFF-Palettenslots 8..63 abgebildet; ein vorzeichenbehafteter oder vorzeichenloser xlColorIndexAutomatic wird als automatisch klassifiziert
xicsBiffIcvBIFF-Indizes werden gegen die gewählte Rolle validiert: Schrift- und Kommentarfarben verwenden die IcvFont-Teilmenge, Rahmen- und Füllfarben die IcvXF-Teilmenge, Diagrammfarben die IcvChart-Teilmenge, und die allgemeine Suche verwendet die vollständige Icv-Tabelle
xicsOoxmlIndexedOOXML-Indizes 0..63 adressieren die indizierte Palette, 64 und 65 identifizieren System-Vordergrund und -Hintergrund, und größere Werte sind ungültig

Ergebnis

FeldBedeutung
KindxickPalette, xickAutomatic, xickSystem oder xickInvalid
RawIndexDer unveränderte Eingabewert
PaletteSlotDer nullbasierte physische Palettenslot oder -1, wenn das Token nicht palettenbasiert ist
SystemColorRoleDie semantische Systemrolle, einschließlich Fenstertext, Fensterhintergrund, Diagrammtext, Diagrammhintergrund, Diagrammneutral oder QuickInfo-Text
ARGBDie normalisierte konkrete Farbe, wenn HasResolvedColor true ist
HasResolvedColorNur true, wenn ein Palettennachschlag, eine Festformatfarbe oder der explizite Rückruf einen RGB-Wert ergeben hat

Der Rückgabewert der Funktion entspricht HasResolvedColor; die Klassifikation bleibt in AResolution verfügbar, wenn die Funktion false zurückgibt

Systemfarben-Kontrakt

Die kurze Überladung liest nie den aktuellen Windows-Desktop und lässt daher automatische und umgebungsabhängige Systemfarben unaufgelöst

Die lange Überladung übergibt sowohl TXLSSystemColorRole als auch TXLSIndexedColorRole an ASystemResolver, sodass der Aufrufer eine explizite UI-, Export- oder Headless-Rendering-Richtlinie anwenden kann

Die Rückrufausgabe muss die Kanalreihenfolge $AARRGGBB verwenden; ein Alpha-Byte von null wird auf $FF normalisiert, während ein Rückrufergebnis von false das semantische Token klassifiziert, aber unaufgelöst lässt

Ein Windows-COLORREF verwendet die Kanalreihenfolge $00BBGGRR und muss in $AARRGGBB konvertiert werden, bevor der Rückruf ihn zurückgibt

Ungültige Tokens rufen den Rückruf nie auf, und das feste BIFF-Diagrammneutral-Token wird ohne Rückruf zu opakem Schwarz aufgelöst

Beispiel

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

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

Siehe auch