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

Функция XlsApplyThemeColorToDrawing

Модул: lxHandle
Прилага един от 12-те слота на тема на Office (плюс незадължително нюансиране) към слот за цвят на рисунката TXLSColorFormat — същия дескриптор, достъпен от ForeColor / BackColor на фигурите
Използвайте тази помощна функция когато приложението иска запълванията на диаграми, цветовете на линиите или запълванията на фигурите да следват палитрата на темата на работната книга, по същия начин, по който клетките го правят чрез IXLSInterior.SetThemeColor

Синтаксис

procedure XlsApplyThemeColorToDrawing(
  ColorFormat: TXLSColorFormat;
  Workbook   : TXLSWorkbook;
  ThemeIdx   : Word;
  Tint       : Double);

Параметри

ColorFormat — слотът за цвят на рисунката за актуализиране. Обикновено ForeColor на TXLSFillFormat или TXLSLineFormat
Workbook — хост TXLSWorkbook. Необходим за разрешаване на палитрата на темата и за поддържане на вътрешната таблица в паметта
ThemeIdx — 0-базиран слот за тема (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — корекция на осветяване/затъмняване в стил на спецификацията в диапазона -1.0 .. +1.0

Забележки

Помощната функция извършва две записвания на извикване:
Защо само в един процес. BIFF8 OfficeArt 4-байтов ColorRef кодира варианти indexed / RGB / scheme / sysColor, но няма разширен запис аналогичен на XFExt $087D, където слотът за тема може да бъде постоянен
За цветове на клетки, обхождащи Save / Open, използвайте специализираните IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor

Пример

Преоцветява солидното запълване на фигура в accent5 с 25% по-тъмно нюансиране, след което чете намерението за тема обратно от вътрешната таблица на работната книга за показване в прозорец на свойства

var
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  Shape := Workbook.Worksheets[1].Shapes.Items[0];
  XlsApplyThemeColorToDrawing(Shape.Fill.ForeColor, Workbook, 8, - 0.25);

  // Same process — the side-table still has the entry.
  if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
  then
    ShowMessage(Format('theme=%d tint=%.2f', [ThemeIdx, Tint]));

  Workbook.SaveAs('ThemedShape.xls', xlExcel97);
end;

Вижте също