Nastaví barvu výplně stínování buňky (popředí) na jeden z 12 slotů barev motivu Office s volitelnou úpravou tónu. Doprovodná funkce pro
Interior.Color pro volající, kteří chtějí adresovat barvy motivu Office přímo (aby Excel mohl přebarvit buňku paletou motivu sešitu) místo pevného nastavení konkrétní hodnoty RGB. Dostupná od v2.61.0 (vlna zásobníku grafů D fáze 4)
Syntaxe
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parametry
ThemeIdx — slot motivu na bázi 0:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Odpovídá standardnímu pořadí motivů Office používanému na straně XLSX
Tint — úprava zesvětlení/ztmavení ve stylu specifikace v rozsahu -1.0 .. +1.0
0.0 používá základní barvu slotu motivu; záporné hodnoty ztmaví (světlost HSL k 0),
kladné hodnoty zesvětlí (světlost HSL k 1). Čtecí část HotXLS toto kóduje jako Q15 celé číslo se znaménkem
v poli FullColorExt.nTintShade záznamu XFExt
Poznámky
Přepínač prochází dvěma cestami, aby se stejná buňka správně vykreslila v Excelu 2007+ i Excelu 2003:
- Indexovaný icv v záznamu XF (starší) — téma + odstín se přes paletu témat BIFF sešitu převede na RGB, které pak vybere nejbližší index palety 56 barev. Excel 97-2003 vidí tuto aproximaci při otevření souboru
- Slot FullColorExt na XFExt $087D (Excel 2007+) — zapisovač vytvoří bohatý barevný vedlejší záznam s
xclrType=3 (téma), xclrValue=ThemeIdx a nTintShade odvozeným z Tint. Excel 2007+ to používá k obnovení přesného záměru tématu a při každé změně palety tématu sešitu znovu tónuje buňku — stejný trik zpětné kompatibility, jaký Microsoft používá, když "Save As" sníží barevně stylizovaný .xlsx na .xls
Buňky nastavené pomocí
SetThemeColor se při načtení přenáší:
Interior.Color vrátí přeloženou hodnotu RGB (motiv + tón aplikovaný přes paletu motivu BIFF), takže volající vždy vidí konkrétní hodnotu LongWord
Vlastní palety motivů nastavené v Excelu prostřednictvím Rozložení stránky → Barvy přežijí načtení a uložení prostřednictvím záznamu BIFF8 Theme ($0892), takže jakýkoli odkaz volajícího na SetThemeColor se přeloží přes skutečný motiv sešitu, nikoli výchozí schéma Office
Příklad
Vyplní řádek záhlaví barvou accent1 a označí varovné buňky 50% zesvětlenou červenou barvou (accent2 + tón 0,5)
var
Header : IXLSRange;
Warnings : IXLSRange;
begin
Header := Workbook.Sheets[1].Range['A1', 'G1'];
Header.Interior.SetThemeColor(4, 0.0); // accent1, base shade
Warnings := Workbook.Sheets[1].Range['G2', 'G20'];
Warnings.Interior.SetThemeColor(5, 0.5); // accent2, 50% lighter
Workbook.SaveAs('ThemeFills.xls', xlExcel97);
end;
Viz také