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

Функция XlsGetDrawingThemeColor

Модул: lxHandle
Извлича индекса на темата + нюансирането, предадени от извикващия по-рано на XlsApplyThemeColorToDrawing за даден слот за цвят на рисунка

Синтаксис

function XlsGetDrawingThemeColor(
  ColorFormat : TXLSColorFormat;
  Workbook    : TXLSWorkbook;
  out ThemeIdx: Word;
  out Tint    : Double): Boolean;

Параметри

ColorFormat — слотът за цвят на рисунката за заявка (същият дескриптор, предаден на XlsApplyThemeColorToDrawing)
Workbook — хост TXLSWorkbook — вътрешната таблица се намига на екземпляра на работната книга, не на слота за цвят
ThemeIdx (изходен) — записаният 0-базиран слот за тема когато функцията връща True; 0 иначе
Tint (изходен) — записаното нюансиране в диапазона -1.0 .. +1.0 когато функцията връща True; 0 иначе

Забележки

Вътрешната таблица е индексирана по (ColorFormat._Container, ColorFormat._Pid) — същия ключ, използван от записващата функция. Едни и същи фигура + идентификатор на свойство винаги се записват в един и същ запис
Обхват само в един процес. Вътрешната таблица не се сериализира на диск — BIFF8 OfficeArt няма слот за тема на цветовете в своя дисков формат, така че самото намерение за тема не може да бъде запазено
Извикването на геттера с слот, зададен чрез обикновено ColorFormat.RGB (вместо XlsApplyThemeColorToDrawing), също връща False — нямаше намерение за тема за записване

Пример

Обхожда фигурите на първия работен лист и записва в лога индекса на темата + нюансирането когато такова е налично, като в противен случай използва суровия RGB цвят

var
  i        : Integer;
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  for i := 0 to Workbook.Worksheets[1].Shapes.Count - 1 do
  begin
    Shape := Workbook.Worksheets[1].Shapes.Items[i];

    if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
    then
      LogLine(Format('shape %d: theme=%d tint=%.2f', [i, ThemeIdx, Tint]))
    else
      LogLine(Format('shape %d: rgb=%.8x',         [i, Shape.Fill.ForeColor.RGB]));
  end;
end;

Вижте също