Jednotka: lxHandle
Obnoví index motivu a odstín, které volající dříve předal do
XlsApplyThemeColorToDrawing
pro daný slot kreslicí barvy
True s oběma out hodnotami vyplněnými, když má
in-memory postranní tabulka sešitu položku pro daný slot; vrací
False
jinak, aby volající mohl pokračovat hodnotou
ColorFormat.RGB
Dostupné od v2.64.0 (vlna D backlogu grafů, fáze 7)
Syntaxe
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parametry
ColorFormat — slot kreslicí barvy k dotazování (stejný popisovač, který byl předán do XlsApplyThemeColorToDrawing)
Workbook — hostitelský TXLSWorkbook — vedlejší tabulka se nachází na instanci sešitu, nikoli na slotu barvy
ThemeIdx (out) — zaznamenaný slot motivu se základem 0, pokud funkce vrátí True; jinak 0 otherwise
Tint (out) — zaznamenaný odstín v rozsahu -1.0 .. +1.0 , pokud funkce vrátí True; jinak 0 otherwise
Poznámky
Vedlejší tabulka je klíčována pomocí (ColorFormat._Container, ColorFormat._Pid) — stejný klíč, který používá setter. Stejný tvar + stejné ID vlastnosti vždy vede na stejnou položku XlsApplyThemeColorToDrawing volání se navzájem přepíšou místo hromadění historie
Rozsah jednoho procesu. Postranní tabulka se na disk neserializuje — BIFF8 OfficeArt nemá ve formátu na disku slot pro barvu motivu, takže samotný záměr motivu nelze trvale uložit, jen vyřešené RGB. Po SaveAs or Open, the workbook is a fresh TXLSWorkbook instanci, jejíž postranní tabulka je prázdná, a tento getter vrací False Vedlejší tabulka není serializována na disk — formát OfficeArt BIFF8 na disku nemá slot pro barvu motivu, takže záměr motivu nelze zachovat přes uložení / otevření
Volání getteru se slotem nastaveným přes prostý ColorFormat.RGB (namísto XlsApplyThemeColorToDrawing) také vrátí False — nebyl žádný záměr motivu k zaznamenání
Příklad
Prochází tvary prvního listu a zapíše index motivu a odstín do protokolu, je-li k dispozici, jinak použije nezpracovanou hodnotu 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;
Viz také