Đặt màu tô bóng (nền trước) của ô vào một trong 12 khe màu chủ đề Office với điều chỉnh tint tùy chọn. Đồng hành của
Interior.Color cho người gọi muốn địa chỉ trực tiếp các màu chủ đề Office (để Excel có thể tô lại ô với bảng màu chủ đề sổ làm việc) thay vì gán một RGB cố định. Có sẵn từ v2.61.0 (chart backlog wave D phase 4)
Cú pháp
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Tham số
ThemeIdx — khe chủ đề 0-base:
0=lt1, 1=dk1, 2=lt2, 3=dk2,
4..9=accent1..accent6, 10=hlink, 11=foHlink
Khớp với thứ tự chủ đề Office tiêu chuẩn được dùng bởi phía XLSX
Tint — điều chỉnh sáng/tối theo kiểu spec trong phạm vi -1.0 .. +1.0
0.0 sử dụng màu cơ sở của khe chủ đề; giá trị âm làm tối (độ sáng HSL về 0),
giá trị dương làm sáng (độ sáng HSL về 1). Trình đọc HotXLS mã hóa điều này dưới dạng số nguyên có dấu Q15
trong trường FullColorExt.nTintShade của bản ghi XFExt
Ghi chú
Setter đi hai đường để cùng một ô hiển thị chính xác trong cả Excel 2007+ và Excel 2003:
- icv được lập chỉ mục trên bản ghi XF (cũ) — theme + tint được phân giải qua bảng màu BIFF của workbook thành một RGB, rồi chọn chỉ số bảng màu 56 màu gần nhất. Excel 97-2003 sẽ thấy phép xấp xỉ này khi tệp được mở
- FullColorExt trên XFExt $087D (Excel 2007+) — bộ ghi phát ra bản ghi phụ màu phong phú với
xclrType=3 (theme), xclrValue=ThemeIdx và nTintShade suy ra từ Tint. Excel 2007+ dùng điều này để khôi phục đúng ý đồ theme và tô lại màu của ô mỗi khi bảng màu theme của workbook thay đổi — cùng mẹo tương thích ngược mà Microsoft dùng khi "Save As" hạ một .xlsx theo theme xuống .xls
Các ô được đặt qua
SetThemeColor round-trip khi tải:
Interior.Color trả về RGB đã giải quyết (chủ đề + tint được áp dụng thông qua bảng màu chủ đề BIFF) để người gọi luôn thấy một giá trị LongWord cụ thể
Bảng màu chủ đề tùy chỉnh được đặt trong Excel qua Bố cục trang → Màu sắc tồn tại qua tải và lưu thông qua bản ghi BIFF8 Theme ($0892), vì vậy bất kỳ tham chiếu SetThemeColor nào từ phía người gọi đều được giải quyết thông qua chủ đề thực tế của sổ làm việc thay vì scheme Office mặc định
Ví dụ
Tô hàng tiêu đề với accent1 và đánh dấu các ô cảnh báo với accent đỏ sáng 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;
Xem thêm