Задаёт цвет заливки (основной) ячейки одному из 12 слотов цветов темы Office с необязательной корректировкой оттенка. Аналог метода
Interior.Color для темы
Синтаксис
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Параметры
ThemeIdx — индекс слота темы (отсчёт с 0):
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Tint — корректировка осветления/затемнения в стиле спецификации в диапазоне -1.0 .. +1.0
0.0 использует базовый цвет слота темы; отрицательные значения затемняют
Примечания
Установщик проходит два пути, чтобы одна и та же ячейка корректно отображалась как в 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 использует, когда «Сохранить как» понижает тему .xlsx до .xls
Ячейки, установленные через
SetThemeColor, сохраняются при загрузке:
Interior.Color возвращает разрешённый RGB (тема + оттенок применены)
Пользовательские палитры темы, заданные в Excel через Разметка страницы → Цвета, сохраняются при загрузке и сохранении через запись BIFF8 Theme ($0892), поэтому любой вызов SetThemeColor на стороне вызывающего кода применяет реальные цвета темы рабочей книги
Пример
Заполняет строку заголовка цветом 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;
См. также