HotXLS-dokumentation Innehåll Startsida Översikt XlsApplyThemeColorToDrawing XLS color model Startsida Innehåll Översikt

XlsGetDrawingThemeColor funktion

Enhet: lxHandle
Recovers the theme idx + tint a caller previously passed into XlsApplyThemeColorToDrawing for a given drawing color slot. Returnerar True with both out values populated when the workbook's in-memory side-table has an entry for the slot; returns False otherwise so the caller can fall through to ColorFormat.RGB Available since v2.64.0 (chart backlog wave D phase 7)

Syntax

function XlsGetDrawingThemeColor( ColorFormat : TXLSColorFormat; Workbook : TXLSWorkbook; out ThemeIdx: Word; out Tint : Double): Boolean;

Parametrar

ColorFormat — the drawing color slot to query (same handle that was passed to XlsApplyThemeColorToDrawing) Workbook — the host TXLSWorkbook — the side-table lives on the workbook instance, not the color slot ThemeIdx (out) — the recorded 0-based theme slot when the funktion returns True; 0 otherwise Tint (out) — the recorded tint in the range -1.0 .. +1.0 when the funktion returns True; 0 otherwise

Anmärkningar

The side-table is keyed by (ColorFormat._Container, ColorFormat._Pid) — the same key the setter uses. Same shape + same property id always lands on the same entry, so successive XlsApplyThemeColorToDrawing calls overwrite each other rather than accumulating history Single-process scope. The side-table is not serialized to disk — BIFF8 OfficeArt has no theme color slot in its on-disk format, so the theme intent itself cannot be persisted, only the resolved RGB is. After SaveAs or Open, the workbook is a fresh TXLSWorkbook instance whose side-table is empty, and this getter returns False for every query. Application code that needs persistent intent should keep its own state alongside the workbook Calling the getter with a slot that was set via plain ColorFormat.RGB (instead of XlsApplyThemeColorToDrawing) also returns False — there was no theme intent to remember, the RGB is the source of truth

Exempel

Walks the first worksheet's shapes and writes the theme idx + tint to the log when one is present, falling back to the raw RGB otherwise
var i : Integer; Shape : TXLSShape; ThemeIdx : Word; Tint : Double; begin for i := 0 to Workbook.Worksheets[1].Shapes.Count - 1 do begin Shape := Workbook.Worksheets[1].Shapes.Items[i]; if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint) then LogLine(Format('shape %d: theme=%d tint=%.2f', [i, ThemeIdx, Tint])) else LogLine(Format('shape %d: rgb=%.8x', [i, Shape.Fill.ForeColor.RGB])); end; end;

Se även

XlsApplyThemeColorToDrawing funktion
klass TXLSColorFormat
TXLSColorFormat.RGBegenskap
IXLSInterior.SetThemeColormetod
Classic XLS color model Copyright © 2010-2026 losLab Software