Задаёт цвет узора (фона) ячейки одному из 12 слотов цветов темы Office с необязательной корректировкой оттенка. Это аналог метода
Interior.PatternColor для темы
Синтаксис
procedure SetPatternThemeColor(ThemeIdx: Word; Tint: Double);
Параметры
ThemeIdx — индекс слота темы (отсчёт с 0)
(0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — корректировка осветления/затемнения в стиле спецификации в диапазоне -1.0 .. +1.0
Кодируется в FullColorExt.nTintShade как знаковое целое Q15 в
Примечания
Для каждого вызова эмитируются два проводных пути, чтобы ячейка корректно отображалась как в Excel 2007+, так и в Excel 2003:
- Запись XF получает индексированный icv с лучшим совпадением для цвета узора (устаревший путь чтения)
- Запись XFExt $087D получает слот FullColorExt для extType
fillBg ($0005) с xclrType=3 (тема), xclrValue=ThemeIdx и nTintShade, полученным из Tint
Обратное чтение через
Interior.PatternColor возвращает разрешённый RGB (тема + оттенок применены), поэтому вызывающие стороны всегда видят конкретный LongWord
Пример
Отображает полосатую предупреждающую полосу с использованием слотов темы accent1 / accent2, чтобы цвета соответствовали теме рабочей книги
var
Stripes: IXLSRange;
begin
Stripes := Workbook.Sheets[1].Range['B2', 'B10'];
Stripes.Interior.Pattern := xlPatternGray25;
Stripes.Interior.SetThemeColor(4, 0.4); // fill foreground (accent1, lighter)
Stripes.Interior.SetPatternThemeColor(5, - 0.25); // pattern color (accent2, darker)
Workbook.SaveAs('PatternThemeFills.xls', xlExcel97);
end;
См. также