Dokumentace HotXLS

Funkce XlsGetDrawingThemeColor

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é