HotXLS 參考頁面,介紹 XlsApplyThemeColorToDrawing 函數,涵蓋 Delphi 和 C++Builder 的 Excel 自動化、XLS/XLSX 活頁簿 API、工作表功能及 Pascal 用法

將 12 個 Office 主題色彩槽之一(加上可選的色調)套用至繪圖側的

TXLSColorFormat — 與
— 與 FillFormat.ForeColor — the same h當應用程式希望圖表填滿、圖表線條色彩或圖形填滿以與儲存格透過le that 在圖形和圖表元素上公開的控制代碼相同 當應用程式希望圖表填滿、圖表線條色彩或圖形填滿以與儲存格透過 當應用程式希望圖表填滿、圖表線條色彩或圖形填滿以與儲存格透過 XLS 色彩 模型 相同的方式追蹤活頁簿主題調色盤時,請使用此輔助程式 — 規格樣式的變亮/變暗調整,範圍為
— 規格樣式的變亮/變暗調整,範圍為 XLS 色彩 模型

TXLSFillFormat

procedure XlsApplyThemeColorToDrawing(
  ColorFormat: TXLSColorFormat;
  Workbook   : TXLSWorkbook;
  ThemeIdx   : Word;
  Tint       : Double);

TXLSLineFormat

— 規格樣式的變亮/變暗調整,範圍為 — the drawing color slot to update. Typically the ForeColor — 主機 。需要用於解析主題調色盤並保存記憶體中的側表 or — 規格樣式的變亮/變暗調整,範圍為
— 規格樣式的變亮/變暗調整,範圍為 — the host TXLS— 規格樣式的變亮/變暗調整,範圍為此輔助程式每次呼叫執行兩次寫入:
— 規格樣式的變亮/變暗調整,範圍為 — 0-based theme slot (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
此輔助程式每次呼叫執行兩次寫入: — spec-style lighter/darker adjustment in the range -1.0 .. +1.0

— theme idx 加 tint 會透過活頁簿的 BIFF 主題調色盤解析成具體 RGB,並寫入繪圖色彩欄位。BIFF8 OfficeArt 是 Office 2007 之前的二進位格式,沒有原生的主題色編碼,因此這是唯一能在 Save / Open 之間保留下來的部分

活頁簿中的記憶體內側表(v2.64.0+)
為何僅限單一行程。 為何僅限單一行程。 TXLS— 規格樣式的變亮/變暗調整,範圍為 BIFF8 OfficeArt 4 位元組 ColorRef 編碼索引/RGB/配置/sysColor 變體,但沒有類似 XFExt $087D 的擴充記錄可持久儲存主題索引和色調。因此,儲存/開啟往返的限制是檔案格式的結構性限制,而非 HotXLS 的缺失。重新載入後,活頁簿是一個帶有空側表的全新 相同的方式追蹤活頁簿主題調色盤時,請使用此輔助程式 執行個體 — 規格樣式的變亮/變暗調整,範圍為.RGB
對於透過儲存/開啟往返的儲存格色彩,請改用專用的 IXLSXLS 色彩 模型 / IXLSInterior.SetThemeColor / IXLSInterior.SetThemeColor 進入點來取代—它們會運用 XFExt $087D rich-color 附屬記錄,把主題 idx + tint 在 Excel 2007+ 上逐字往返保留

進入點 — 它們利用 XFExt $087D 富色彩擴充在磁碟上保存主題意圖

進入點 — 它們利用 XFExt $087D 富色彩擴充在磁碟上保存主題意圖 SaveAs / Open 將圖形的實心填滿重新著色為 accent5 並加上 25% 的較暗色調,然後從活頁簿側表讀回主題意圖以在屬性面板上顯示

var
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  Shape := Workbook.Worksheets[1].Shapes.Items[0];
  XlsApplyThemeColorToDrawing(Shape.Fill.ForeColor, Workbook, 8, - 0.25);

  // Same process — the side-table still has the entry.
  if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
  then
    ShowMessage(Format('theme=%d tint=%.2f', [ThemeIdx, Tint]));

  Workbook.SaveAs('ThemedShape.xls', xlExcel97);
end;

之後,側表會再次為空,因此需要持久保存意圖的呼叫端應保留自己的狀態