Dokumentace HotXLS

Funkce XlsApplyThemeColorToDrawing

Jednotka: lxHandle
Aplikuje jeden z 12 barevných slotů motivu Office (plus volitelný tint) na kreslicí stranu TXLSColorFormat Použije jeden z 12 slotů barev motivu Office (plus volitelný odstín) na kreslicí slot TXLSColorFormat — stejný popisovač, který vlastnosti ForeColor a LineFormat.ForeColor zpřístupňují
Použijte tento pomocník, když chce aplikace sledovat, že výplně grafů, barvy čar grafů nebo výplně tvarů sledují paletu motivu sešitu stejným způsobem, jako to dělají buňky přes IXLSInterior.SetThemeColor

Syntaxe

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

Parametry

ColorFormat — slot kreslicí barvy k aktualizaci. Obvykle ForeColor objektu TXLSFillFormat nebo TXLSLineFormat
Workbook — hostitelský TXLSWorkbook. Potřebný k překladu palety motivu a uchování vedlejší tabulky v paměti
ThemeIdx — slot motivu se základem 0 (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — úprava zesvětlení/ztmavení dle specifikace v rozsahu -1.0 .. +1.0

Poznámky

Pomocník provede dva zápisy na jedno volání:
Pouze pro jeden proces. Kódování barev ColorRef BIFF8 OfficeArt o 4 bajtech kóduje varianty indexované / RGB / schéma / systémová barva, ale neexistuje žádný záznam rozšíření analogický XFExt $087D, kde by mohl být uložen záměr motivu TXLSWorkbook instance with an empty side-table and XlsGetDrawingThemeColor returns False, falling through to ColorFormat.RGB
Pro barvy buněk, které se přenášejí přes Uložení / Otevření, použijte vyhrazené metody IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor vstupní body místo nich — ty využívají vedlejší záznam XFExt $087D pro bohaté barvy, takže index motivu + tint projdou přes Excel 2007+ beze změny

Příklad

Přebarví plnou výplň tvaru na accent5 s odstínem o 25 % tmavším, poté přečte záměr motivu zpět z vedlejší tabulky sešitu pro zobrazení na panelu vlastností. Po SaveAs / Open je záměr obnoven

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;

Viz také