Задава цвета на запълването (преден план) на клетката към един от 12 слота за цветове на Office тема с незадължителна корекция на тона. Спътник на
Interior.Color за извикващи, желаещи да адресират директно цветовете на темата на Office (за да може Excel да оцвети клетката отново с тематичната палитра на работната книга) вместо да фиксират конкретен RGB. Наличен от v2.61.0 (диаграма, изоставане вълна D, фаза 4)
Синтаксис
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Параметри
ThemeIdx — слот на тема с нулева база:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Съответства на стандартния ред на темата на Office, използван от страната XLSX
Tint — корекция за осветляване/потъмняване по спецификация в диапазона -1.0 .. +1.0
0.0 използва основния цвят на слота на темата; отрицателните стойности потъмняват (яркост HSL към 0),
положителните стойности осветляват (яркост HSL към 1). Четецът на HotXLS кодира това като Q15 знаково
цяло число в полето FullColorExt.nTintShade на записа XFExt
Забележки
Сетерът върви по два пътя, за да може клетката да се изобрази правилно в Excel 2007+ и Excel 2003:
- Индексиран icv в записа XF (старо) — темата и оттенъкът се преобразуват през BIFF палитрата на работната книга в RGB и след това се избира най-близкият индекс от 56-цветната палитра. Excel 97-2003 вижда това приближение, когато файлът бъде отворен
- Слот FullColorExt в XFExt $087D (Excel 2007+) — записвачът изписва запис за богати цветове встрани с
xclrType=3 (тема), xclrValue=ThemeIdx и nTintShade, получен от Tint. Excel 2007+ използва това, за да възстанови точната тематична идея и повторно оцветява клетката, когато палитрата на темата на работната книга се промени — същия трик за обратна съвместимост, който Microsoft използва, когато „Save As“ понижава тематично стилизиран .xlsx до .xls
Клетките, зададени чрез
SetThemeColor, запазват стойностите си при зареждане:
Interior.Color връща разрешения RGB (тема + тон, приложен чрез тематичната палитра BIFF), така че извикващите винаги виждат конкретна LongWord стойност
Персонализираните тематични палитри, зададени в Excel чрез Оформление на страница → Цветове, оцеляват при зареждане и запис чрез записа BIFF8 Theme ($0892), така че всяка извикваща страна референция SetThemeColor се разрешава чрез действителната тема на работната книга, а не чрез схемата по подразбиране на Office
Пример
Запълва заглавния ред с accent1 и маркира предупредителни клетки с 50% осветлен червен акцент (accent2 + тон 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;
Вижте също