HotXLS-documentatie

SetThemeColor method (Interior)

Stelt de arceringsopvulkleur (voorgrond) van de cel in op één van de 12 Office-themakleursloten met een optionele tintaanpassing. Companion van Interior.Color voor aanroepers die Office-themakleuren direct willen aanspreken (zodat Excel de cel opnieuw kan kleuren met het themapalet van de werkmap) in plaats van een vaste RGB-waarde vast te leggen. Beschikbaar sinds v2.61.0 (chart backlog wave D fase 4)

Syntaxis

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 Volgt de standaard Office-themavolgorde zoals de XLSX-kant die gebruikt
Tint — aanpassing lichter/donkerder in spec-stijl, in het bereik -1.0 .. +1.0 0.0 gebruikt de basiskleur van het themaslot; negatieve waarden maken donkerder (HSL-luminantie richting 0), positieve waarden lichter (HSL-luminantie richting 1). De HotXLS-lezer codeert dit als een Q15-signed integer in het veld FullColorExt.nTintShade van het XFExt-record

Opmerkingen

De setter doorloopt twee paden zodat dezelfde cel correct wordt weergegeven in zowel Excel 2007+ als Excel 2003:
Cells set via SetThemeColor round-trip on load: Interior.Color geeft de herleide RGB terug (thema + tint toegepast via het BIFF-themapalet), zodat aanroepers altijd een concrete LongWord-waarde zien
Custom theme palettes set in Excel via Page Layout → Colors survive load en save through the BIFF8 Theme ($0892) record, so any caller-side SetThemeColor verwijzing wordt herleid via het werkelijke thema van de werkmap in plaats van het standaardschema van Office

Voorbeeld

Vult de koprij met accent1 en markeert waarschuwingscellen met een 50% lichter gemaakte rode accentkleur (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;

Zie ook