Legt die Zellfüll-(Vordergrund-)Schattierungsfarbe auf einen der 12 Office-Design-Farbschemas mit optionaler Tönung fest. Begleiter von
Interior.Color für Aufrufer, die Office-Design-Farben direkt ansprechen möchten (sodass Excel die Zelle mit der Design-Palette der Arbeitsmappe erneut tönen kann), anstatt ein festes RGB zu verwenden. Verfügbar seit v2.61.0 (Diagramm-Rückstand Welle D Phase 4)
Syntax
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parameter
ThemeIdx — 0-basierter Design-Slot:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Entspricht der Standard-Office-Design-Reihenfolge, die von der XLSX-Seite verwendet wird
Tint — spec-konformer Aufhellungs-/Abdunkelungs-Anpassungswert im Bereich -1,0 .. +1,0
0,0 verwendet die Basisfarbe des Design-Slots; negative Werte verdunkeln (HSL-Helligkeit gegen 0),
positive Werte hellen auf (HSL-Helligkeit gegen 1). Der HotXLS-Leser kodiert dies als Q15-vorzeichenbehaftete
Ganzzahl im FullColorExt.nTintShade-Feld des XFExt-Datensatzes
Hinweise
Der Setter geht zwei Wege, damit dieselbe Zelle sowohl in Excel 2007+ als auch in Excel 2003 korrekt gerendert wird:
- Indiziertes icv im XF-Datensatz (legacy) — das Theme plus Tint wird über die BIFF-Theme-Palette der Arbeitsmappe in ein RGB aufgelöst, das dann den nächstgelegenen 56-Farben-Paletteindex auswählt. Excel 97-2003 sieht diese Annäherung beim Öffnen der Datei
- FullColorExt-Platz in XFExt $087D (Excel 2007+) — der Writer schreibt einen Rich-Color-Nebendatensatz mit
xclrType=3 (Theme), xclrValue=ThemeIdx und nTintShade, abgeleitet aus Tint. Excel 2007+ verwendet dies, um die exakte Theme-Absicht wiederherzustellen und die Zelle bei jeder Änderung der Theme-Palette der Arbeitsmappe neu einzufärben — genau der Rückwärtskompatibilitäts-Trick, den Microsoft nutzt, wenn „Speichern unter“ eine mit Theme gestaltete .xlsx auf .xls herabstuft
Über
SetThemeColor gesetzte Zellen werden beim Laden übertragen:
Interior.Color gibt das aufgelöste RGB zurück (Design + Tönung über die BIFF-Design-Palette der Arbeitsmappe angewendet), sodass Aufrufer immer einen konkreten LongWord-Wert sehen
Benutzerdefinierte Design-Paletten, die in Excel über Seitenlayout → Farben gesetzt wurden, überleben Laden und Speichern durch den BIFF8-Theme-($0892)-Datensatz, sodass jede aufruferseitige SetThemeColor-Referenz durch das tatsächliche Design der Arbeitsmappe aufgelöst wird, anstatt durch das Standard-Office-Schema
Beispiel
Füllt die Kopfzeile mit accent1 und markiert Warnzellen mit einem 50% aufgehellten roten Akzent (accent2 + 0,5 Tönung)
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;
Siehe auch