HotXLS Docs

SetThemeColor method (Interior)

Sets the cell shading fill (foreground) colour to one of the 12 Office theme colour slots with an optional tint adjustment. Companion of Interior.Colour for callers who want to address Office theme colours directly (so Excel can re-tint the cell with the workbook's theme palette) instead of pinning a fixed RGB. Available since v2.61.0 (chart backlog wave D phase 4).

Syntax

procedure SetThemeColor(ThemeIdx: Word; Tint: Double);

Parameters

ThemeIdx — 0-based theme slot: 0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..accent6, 10=hlink, 11=foHlink. Matches the standard Office theme order used by the XLSX side.
Tint — spec-style lighter/darker adjustment in the range -1.0 .. +1.0. 0.0 uses the theme slot's base colour; negative values darken (HSL luminance toward 0), positive values lighten (HSL luminance toward 1). The HotXLS reader encodes this as a Q15 signed integer in the FullColorExt.nTintShade field of the XFExt record.

Remarks

The setter walks two paths so the same cell renders correctly in both Excel 2007+ and Excel 2003:
Cells set via SetThemeColor round-trip on load: Interior.Colour returns the resolved RGB (theme + tint applied through the BIFF theme palette) so callers always see a concrete LongWord value.
Custom theme palettes set in Excel via Page Layout → Colours survive load and save through the BIFF8 Theme ($0892) record, so any caller-side SetThemeColor reference resolves through the workbook's actual theme rather than the default Office scheme.

Example

Fills the header row with accent1 and tags warning cells with a 50% lightened red accent (accent2 + 0.5 tint).

var
  Header   : IXLSRange;
  Warnings : IXLSRange;
begin
  Header := Workbook.Sheets[1].Range['A1', 'G1'];
  Header.Interior.SetThemeColor(4, 0.0);   // accent1, base shade

  Warnings := Workbook.Sheets[1].Range['G2', 'G20'];
  Warnings.Interior.SetThemeColor(5, 0.5);   // accent2, 50% lighter

  Workbook.SaveAs('ThemeFills.xls', xlExcel97);
end;

See also