Встановлює колір заливки (переднього плану) затінення комірки до одного з 12 слотів кольорів теми Office з необов'язковим регулюванням відтінку. Аналог
Interior.Color для викликаючого коду, який хоче безпосередньо адресувати кольори теми Office (щоб Excel міг перефарбовувати комірку за палітрою теми робочої книги) замість фіксації конкретного RGB. Доступно з версії v2.61.0 (хвиля D, фаза 4 відставання діаграм)
Синтаксис
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Параметри
ThemeIdx — слот теми з відліком від 0:
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 кодує це як 15-бітне ціле число зі знаком
у полі FullColorExt.nTintShade запису XFExt
Примітки
Сетер проходить два шляхи, щоб та сама комірка правильно відображалась в Excel 2007+ і Excel 2003:
- Індексований icv у записі XF (застаріле) — тема + відтінок проходять через палітру тем BIFF книги в конкретний RGB, який потім вибирає найближчий індекс палітри 56 кольорів. Excel 97-2003 бачить цю апроксимацію під час відкриття файла
- Слот FullColorExt у XFExt $087D (Excel 2007+) — записувач виводить багатокольоровий допоміжний запис із
xclrType=3 (theme), 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;
Дивіться також