Модул: 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;
Вижте също