Docs HotXLS

SetThemeColor method (Interior)

Définit la couleur de remplissage de trame (avant-plan) de la cellule sur l'un des 12 emplacements de couleurs du thème Office, avec un ajustement de teinte facultatif. Équivalent de Interior.Color pour les appelants qui veulent cibler directement les couleurs du thème Office (pour qu'Excel re-teinte la cellule avec la palette de thème du classeur) au lieu de figer un RGB fixe. Disponible depuis la v2.61.0 (vague D du backlog graphique, phase 4)

Syntaxe

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

Paramètres

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 utilise la couleur de base de l'emplacement de thème ; les valeurs négatives assombrissent (luminance HSL vers 0), les valeurs positives éclaircissent (luminance HSL vers 1). Le lecteur HotXLS encode cela en entier signé Q15 dans le FullColorExt.nTintShade field of the XFExt record

Remarques

Le setter emprunte deux chemins pour que la même cellule s'affiche correctement dans Excel 2007+ comme dans Excel 2003 :
Cells set via SetThemeColor round-trip on load: Interior.Color renvoie le RGB résolu (thème + teinte appliqués via la palette de thème BIFF), si bien que les appelants voient toujours une valeur LongWord concrète
Custom theme palettes set in Excel via Page Layout → Colors survivent au chargement et à l'enregistrement via l'enregistrement BIFF8 Theme ($0892), si bien que tout SetThemeColor se résout via le thème réel du classeur plutôt que via le schéma Office par défaut

Exemple

Remplit la ligne d'en-tête avec accent1 et marque les cellules d'avertissement avec un accent rouge éclairci de 50 % (accent2 + teinte 0.5)

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;

Voir aussi