מגדיר את צבע מילוי הצללה (קדמי) של התא לאחד מ-12 חריצי צבע ערכת הנושא של Office עם כיוונון גוון אופציונלי. מקביל של
Interior.Color עבור קוראים שרוצים לפנות לצבעי ערכת הנושא של Office ישירות (כך ש-Excel יכול לגוון מחדש את התא עם פלטת ערכת הנושא של חוברת העבודה) במקום לנעוץ RGB קבוע. זמין מאז v2.61.0 (גל D שלב 4 של מחסנית התרשים)
תחביר
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
פרמטרים
ThemeIdx — חריץ ערכת נושא מבוסס-0:
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 לכיוון 0),
ערכים חיוביים מבהירים (בהירות HSL לכיוון 1). הקורא של HotXLS מקודד זאת כמספר שלם חתום Q15
בשדה FullColorExt.nTintShade של רשומת XFExt
הערות
המגדיר הולך בשני נתיבים כדי שאותו תא יעובד כראוי הן ב-Excel 2007+ והן ב-Excel 2003:
- icv מאונדקס ברשומת XF (legacy) — ה-theme + tint נפתרים דרך פלטת ה-theme של חוברת העבודה ב-BIFF ל-RGB, שממנו נבחר אינדקס הפלטה הקרוב ביותר מבין 56 צבעים. Excel 97-2003 רואה קירוב זה כשהקובץ נפתח
- חריץ FullColorExt ב-XFExt $087D (Excel 2007+) — הכותב פולט רשומת צד של צבע עשיר עם
xclrType=3 (theme), xclrValue=ThemeIdx ו-nTintShade שמופק מ-Tint. Excel 2007+ משתמש בכך כדי לשחזר את כוונת ה-theme המדויקת ולצבוע מחדש את התא בכל פעם שפלטת ה-theme של חוברת העבודה משתנה — אותו טריק תאימות לאחור שמיקרוסופט משתמשת בו כאשר "Save As" מוריד חוברת .xlsx מעוצבת ב-theme ל-.xls
תאים שנקבעו דרך
SetThemeColor מסיימים סיבוב בעת טעינה:
Interior.Color מחזיר את ה-RGB שנפתר (ערכת נושא + גוון מוחלים דרך פלטת ה-BIFF של ערכת הנושא) כך שהקוראים תמיד רואים ערך LongWord קונקרטי
פלטות ערכת נושא מותאמות שנקבעו ב-Excel דרך פריסת דף → צבעים שורדות טעינה ושמירה דרך רשומת BIFF8 Theme ($0892), כך שכל הפניית SetThemeColor מצד הקורא נפתרת דרך ערכת הנושא בפועל של חוברת העבודה ולא דרך ערכת Office המוגדרת כברירת מחדל
דוגמה
ממלא את שורת הכותרת ב-accent1 ומתייג תאי אזהרה עם אדום בהיר ב-50% (accent2 + גוון 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;
ראה גם