ตั้งค่าสีการเติมแรเงา (พื้นหน้า) ของเซลล์เป็นหนึ่งใน 12 ช่องสีธีม Office พร้อมการปรับ tint ที่ไม่บังคับ เป็นคู่ของ
Interior.Color สำหรับผู้เรียกที่ต้องการระบุสีธีม Office โดยตรง (เพื่อให้ Excel ปรับสีเซลล์ใหม่ด้วยพาเลตต์ธีมของสมุดงาน) แทนการกำหนด RGB คงที่ มีตั้งแต่ v2.61.0 (chart backlog wave D phase 4)
ไวยากรณ์
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
พารามิเตอร์
ThemeIdx — ช่องธีมแบบ 0-based:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
ตรงกับลำดับธีม Office มาตรฐานที่ใช้โดยฝั่ง XLSX
Tint — การปรับค่าสว่างขึ้น/เข้มขึ้นตามสเปคในช่วง -1.0 .. +1.0
0.0 ใช้สีพื้นฐานของช่องธีม ค่าลบทำให้เข้มขึ้น (ความสว่าง HSL ไปทาง 0)
ค่าบวกทำให้สว่างขึ้น (ความสว่าง HSL ไปทาง 1) HotXLS เข้ารหัสค่านี้เป็นจำนวนเต็มมีเครื่องหมาย Q15
ในฟิลด์ FullColorExt.nTintShade ของเรกคอร์ด XFExt
หมายเหตุ
ตัวตั้งค่าเดินสองเส้นทาง เพื่อให้เซลล์เดียวกันแสดงผลถูกต้องทั้งใน Excel 2007+ และ Excel 2003:
- Indexed icv บนระเบียน XF (แบบเก่า) — theme + tint จะถูกแปลงผ่านพาเลตต์ธีม BIFF ของเวิร์กบุ๊กเป็น RGB แล้วเลือกดัชนีพาเลตต์ 56 สีที่ใกล้ที่สุด Excel 97-2003 จะเห็นการประมาณนี้เมื่อเปิดไฟล์
- FullColorExt slot บน XFExt $087D (Excel 2007+) — ตัวเขียนจะปล่อยระเบียนด้านสีแบบ rich-color พร้อม
xclrType=3 (theme), xclrValue=ThemeIdx และ nTintShade ที่คำนวณจาก Tint Excel 2007+ ใช้สิ่งนี้เพื่อกู้เจตนาของ theme ได้ตรงและปรับสีเซลล์ใหม่ทุกครั้งที่พาเลตต์ธีมของเวิร์กบุ๊กเปลี่ยน — เป็นเทคนิค backward-compatibility เดียวกับที่ Microsoft ใช้เมื่อ "Save As" ดาวน์เกรด .xlsx ที่ใช้ธีมเป็น .xls
เซลล์ที่ตั้งค่าผ่าน
SetThemeColor รักษาข้อมูลเมื่อโหลด:
Interior.Color คืนค่า RGB ที่แก้ไขแล้ว (ธีม + tint ที่นำไปใช้ผ่านพาเลตต์ธีม BIFF) ดังนั้นผู้เรียกจะเห็น LongWord ที่เป็นรูปธรรมเสมอ
พาเลตต์ธีมแบบกำหนดเองที่ตั้งค่าใน Excel ผ่าน Page Layout → Colors รอดผ่านการโหลดและบันทึกผ่านเรกคอร์ด BIFF8 Theme ($0892) ดังนั้นการอ้างอิง SetThemeColor ฝั่งผู้เรียกจึงแก้ไขผ่านธีมจริงของสมุดงานแทนรูปแบบ Office เริ่มต้น
ตัวอย่าง
เติมสีแถวส่วนหัวด้วย accent1 และแท็กเซลล์เตือนด้วยสีแดง accent สว่างขึ้น 50% (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;
ดูเพิ่มเติม