Документація HotXLS

Метод SetThemeColor

Встановлює колір заливки (переднього плану) затінення комірки до одного з 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:
Комірки, встановлені через 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;

Дивіться також