Sætter cellens skyggeudfyldningsfarve (forgrund) til en af de 12 Office-temafarvepladser med valgfri justering af farvetone. Modstykke til
Interior.Color til kaldere, der vil adressere Office-temafarver direkte (så Excel kan give cellen ny farvetone via projektmappens temapalet) i stedet for at fastlåse en fast RGB. Tilgængelig siden v2.61.0 (chart backlog wave D fase 4)
Syntaks
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parametre
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 bruger temaspladsens grundfarve; negative værdier gør mørkere (HSL-luminans mod 0), positive værdier lysner (HSL-luminans mod 1). HotXLS-læseren koder dette som et Q15-signed heltal i FullColorExt.nTintShade field of the XFExt record
Bemærkninger
Setteren går to veje, så samme celle gengives korrekt i både Excel 2007+ og Excel 2003:
- Indexed icv on the XF record (legacy) — tema + farvetone opløses gennem projektmappens BIFF-temapalet til en RGB-værdi, som derefter vælger det nærmeste 56-farvers paletindeks. Excel 97-2003 ser denne approksimation, når filen åbnes
- 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+ bruger den til at genskabe den præcise temaintention og giver cellen ny farvetone, hver gang projektmappens temapalet ændres — samme bagudkompatibilitetstrick, som Microsoft bruger, når "Save As" nedgraderer en temastyret .xlsx til .xls
Cells set via
SetThemeColor round-trip on load:
Interior.Color returnerer den opløste RGB (tema + farvetone anvendt gennem BIFF-temapaletten), så kaldere altid ser en konkret LongWord-værdi
Custom theme palettes set in Excel via Page Layout → Colors overlever indlæsning og gemning via BIFF8 Theme-recorden ($0892), så alle SetThemeColor -reference opløses gennem projektmappens faktiske tema i stedet for standard-Office-skemaet
Eksempel
Udfylder overskriftsrækken med accent1 og markerer advarselsceller med en 50 % lysnet rød accent (accent2 + 0,5 farvetone)
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 også