Sätter cellens skuggfyllnadsfärg (förgrund) till en av de 12 Office-temafärgplatserna med valfri justering av tint. Motsvarigheten till
Interior.Color för anropare som vill adressera Office-temafärger direkt (så att Excel kan tona om cellen med arbetsbokens temapalett) i stället för att låsa en fast RGB. Tillgängligt sedan v2.61.0 (chart backlog våg D fas 4)
Syntax
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parametrar
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 använder temaplatsens basfärg; negativa värden mörkar (HSL-luminans mot 0), positiva värden ljusar (HSL-luminans mot 1). HotXLS-läsaren kodar detta som ett Q15-tecknat heltal i FullColorExt.nTintShade field of the XFExt record
Anmärkningar
Settern går två vägar så att samma cell renderas korrekt i både Excel 2007+ och Excel 2003:
- Indexed icv on the XF record (legacy) — tema + tint slås upp genom arbetsbokens BIFF-temapalett till en RGB som sedan väljer det närmaste palettindex bland de 56 färgerna. Excel 97-2003 ser denna approximation när filen öppnas
- FullColorExt slot on XFExt $087D (Excel 2007+) — the writer emits a rich-color side record with
xclrType=3 (theme), xclrValue=ThemeIdx, and nTintShade derived from Tint. Excel 2007+ använder detta för att återfå den exakta temabetydelsen och tonar om cellen närhelst arbetsbokens temapalett ändras — samma bakåtkompatibilitetsknep som Microsoft använder när "Spara som" nedgraderar en temastyrd .xlsx till .xls
Cells set via
SetThemeColor round-trip on load:
Interior.Color returnerar den upplösta RGB-färgen (tema + tint tillämpad via BIFF-temapaletten) så att anropare alltid ser ett konkret LongWord-värde
Custom theme palettes set in Excel via Page Layout → Colors överlever inläsning och sparning via BIFF8-posten Theme ($0892), så alla anroparsidiga SetThemeColor -referens slås upp genom arbetsbokens faktiska tema i stället för standardschemat Office
Exempel
Fyller rubrikraden med accent1 och märker varningsceller med en 50% ljusare röd 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;
Se även