Jednotka: lxHandle
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.SetThemeColorSyntaxe
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
Parametry
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í:
- Opt blob OfficeArt (na disku). Index motivu + tint se přes paletu motivu BIFF sešitu převede na konkrétní RGB a zapíše do slotu barvy výkresu. BIFF8 OfficeArt je binární formát před Office 2007 bez nativního kódování barev motivu, takže toto je jediná část, která přežije Save / Open
- Interní pomocná tabulka v paměti na sešitu (v2.64.0+). Nastavovač také zaznamená původní
(ThemeIdx, Tint) do TXLSWorkbook.FDrawingThemeColors pod klíčem (ColorFormat._Container, ColorFormat._Pid). Související čtečka XlsGetDrawingThemeColor tyto hodnoty načítá ve stejném procesu. Opětovné nastavení stejného slotu položku přepíše, takže pomocná tabulka sleduje nejnovější záměr místo hromadění historie
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
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é