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

Метод SetThemeColor (Interior)

Задава цвета на запълването (преден план) на клетката към един от 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:
Клетките, зададени чрез 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;

Вижте също