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 :
- Indexed icv on the XF record (legacy) — le thème + teinte se résout via la palette de thème BIFF du classeur en un RGB, qui sélectionne ensuite l'index de palette 56 couleurs le plus proche. Excel 97-2003 voit cette approximation à l'ouverture du fichier
- 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+ s'en sert pour retrouver l'intention exacte du thème et re-teinte la cellule dès que la palette de thème du classeur change — la même astuce de compatibilité ascendante que Microsoft utilise quand un "Save As" rétrograde un .xlsx stylé par thème en .xls
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