Nastaví farbu tieňovacej výplne bunky (popredie) na jeden z 12 slotov farby témy Office s voliteľnou úpravou odtieňa. Sprievodca pre
Interior.Color pre volajúcich, ktorí chcú priamo adresovať farby témy Office (aby Excel mohol znova odtienil bunku paletou témy zošita) namiesto zadávania pevného RGB. Dostupné od v2.61.0 (vlna D fáza 4 nevybavenej grafu)
Syntax
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parametre
ThemeIdx — slot témy od 0:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Zodpovedá štandardnému poriadku tém Office používanému na strane XLSX
Tint — úprava svetlejšia/tmavšia podľa špecifikácie v rozsahu -1,0 .. +1,0
0,0 používa základnú farbu slotu témy; záporné hodnoty stmievajú (svetlosť HSL smerom k 0),
kladné hodnoty zosvetľujú (svetlosť HSL smerom k 1). HotXLS čítač kóduje toto ako celé číslo Q15 so znamienkom v poli FullColorExt.nTintShade záznamu XFExt
Poznámky
Nastavovač prechádza dvoma cestami, aby tá istá bunka vykresľovala správne v Exceli 2007+ aj v Exceli 2003:
- Indexovaný icv v zázname XF (staršie) — téma + tint sa cez paletu tém BIFF zošita prevedie na RGB, ktoré potom vyberie najbližší index 56-farebnej palety. Excel 97-2003 pri otvorení súboru vidí túto aproximáciu
- Slot FullColorExt na XFExt $087D (Excel 2007+) — zapisovač vytvorí bohatý farebný sprievodný záznam s
xclrType=3 (téma), xclrValue=ThemeIdx a nTintShade odvodeným z Tint. Excel 2007+ to používa na obnovenie presného zámeru témy a znovu tónuje bunku vždy, keď sa paleta tém zošita zmení — rovnaký trik spätnej kompatibility, aký Microsoft používa pri "Save As" pri znižovaní témy štýlovanej .xlsx na .xls
Bunky nastavené cez
SetThemeColor prechádzajú okruhom pri načítaní:
Interior.Color vracia vyriešené RGB (téma + odtieň aplikovaný cez BIFF paletu témy), takže volajúci vždy vidia konkrétny LongWord
Vlastné palety tém nastavené v Exceli cez Rozloženie strany → Farby prežijú načítanie a uloženie cez záznam BIFF8 Theme ($0892), takže akýkoľvek odkaz SetThemeColor na strane volajúceho sa rieši cez skutočnú tému zošita a nie cez predvolené schémy Office
Príklad
Vyplní riadok hlavičky farbou accent1 a označí varovné bunky so 50% zosvetleným červeným akcentom (accent2 + odtieň 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;
Pozri tiež