رنگ پر (پیشزمینه) سایهزنی سلول را به یکی از ۱۲ اسلات رنگ تم Office با تنظیم tint اختیاری تعیین میکند. همراه
Interior.Color برای فراخواندهندگانی که میخواهند رنگهای تم Office را مستقیماً مخاطب قرار دهند (تا Excel بتواند سلول را با پالت تم کارپوشه مجدداً رنگآمیزی کند) بهجای تثبیت یک RGB ثابت. از نسخه v2.61.0 موجود است
نحو
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
پارامترها
ThemeIdx — اسلات تم بر مبنای صفر: 0=lt1، 1=dk1، 2=lt2، 3=dk2، 4..9=accent1..accent6، 10=hlink، 11=foHlink. با ترتیب استاندارد تم Office استفادهشده در بخش XLSX مطابقت دارد
Tint — تنظیم روشنتر/تیرهتر به سبک spec در بازه -1.0 .. +1.0. 0.0 از رنگ پایه اسلات تم استفاده میکند؛ مقادیر منفی تیره میکنند (روشنایی HSL به سمت ۰)، مقادیر مثبت روشن میکنند (روشنایی HSL به سمت ۱). HotXLS این مقدار را بهعنوان یک عدد صحیح علامتدار Q15 در فیلد FullColorExt.nTintShade رکورد XFExt کدگذاری میکند
یادداشتها
تنظیمکننده دو مسیر را طی میکند تا همان سلول هم در Excel 2007+ و هم در Excel 2003 به درستی رندر شود:
- icv نمایهشده روی رکورد XF (قدیمی) — theme بهعلاوه tint از طریق palette تم BIFF کتابکار به یک RGB تبدیل میشود و سپس نزدیکترین شاخص palette 56 رنگی را انتخاب میکند. Excel 97-2003 این تقریب را هنگام باز شدن فایل میبیند
- جایگاه FullColorExt روی XFExt $087D (Excel 2007+) — نویسنده یک رکورد جانبی رنگ غنی با
xclrType=3 (theme)، xclrValue=ThemeIdx و nTintShade مشتقشده از Tint صادر میکند. Excel 2007+ از این مقدار برای بازیابی نیت دقیق تم و باز-tint کردن سلول هر زمان که palette تم کتابکار تغییر کند استفاده میکند — همان ترفند سازگاریِ روبهعقب که Microsoft هنگام "Save As" برای پایین آوردن یک فایل .xlsx دارای theme به .xls به کار میبرد
سلولهای تنظیمشده از طریق
SetThemeColor در بارگذاری دوباره ذخیره میشوند:
Interior.Color RGB حلشده (تم + tint اعمالشده از طریق پالت تم BIFF) را برمیگرداند، بنابراین فراخواندهندگان همیشه یک مقدار LongWord مشخص میبینند
پالتهای تم سفارشی تنظیمشده در Excel از طریق Page Layout → Colors از طریق رکورد BIFF8 Theme ($0892) در بارگذاری و ذخیره باقی میمانند، بنابراین هر مرجع SetThemeColor از طرف فراخواندهنده از طریق تم واقعی کارپوشه بهجای طرح پیشفرض Office حل میشود
مثال
ردیف سرصفحه را با accent1 پر میکند و سلولهای هشدار را با یک قرمز ۵۰٪ روشنشده (accent2 + tint 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;
همچنین ببینید