HotXLS 文件

XlsGetDrawingThemeColor 函數

單元: lxHandle
恢復呼叫端先前傳入 XlsApplyThemeColorToDrawing 的主題索引和色調,適用於指定的繪圖色彩槽。當活頁簿的記憶體中側表有該槽的項目時,傳回 True 並填入兩個輸出值;否則傳回 False,使呼叫端可退回至原始 RGB

語法

function XlsGetDrawingThemeColor(
  ColorFormat : TXLSColorFormat;
  Workbook    : TXLSWorkbook;
  out ThemeIdx: Word;
  out Tint    : Double): Boolean;

參數

ColorFormat — 要查詢的繪圖色彩槽(傳遞給 XlsApplyThemeColorToDrawing 的相同控制代碼)
Workbook — 主機 TXLSWorkbook — 側表位於活頁簿執行個體上,而非色彩槽上
ThemeIdx(輸出)— 當函數傳回 True 時記錄的以 0 起始的主題槽;否則為 0
Tint(輸出)— 當函數傳回 True 時記錄的色調,範圍 -1.0 .. +1.0;否則為 0

備註

側表以 (ColorFormat._Container, ColorFormat._Pid) 為鍵 — 與設定器使用的鍵相同。相同圖形加上相同屬性 ID 始終落在同一項目上,因此連續的 XlsApplyThemeColorToDrawing 呼叫會互相覆蓋,而不是累積歷程
單一行程範圍。側表未序列化至磁碟 — BIFF8 OfficeArt 在磁碟格式中沒有主題色彩槽,因此主題意圖本身無法持久儲存,只有解析的 RGB 可以。SaveAs 或 Open 之後,活頁簿是側表為空的全新 TXLSWorkbook 執行個體,此 getter 傳回 False
以透過純 ColorFormat.RGB(而非 XlsApplyThemeColorToDrawing)設定的槽呼叫 getter 也會傳回 False — 沒有需要記憶的主題意圖,RGB 是事實來源

範例

遍歷第一個工作表的圖形,並在有主題索引和色調時將其寫入日誌,否則退回至原始 RGB

var
  i        : Integer;
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  for i := 0 to Workbook.Worksheets[1].Shapes.Count - 1 do
  begin
    Shape := Workbook.Worksheets[1].Shapes.Items[i];

    if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
    then
      LogLine(Format('shape %d: theme=%d tint=%.2f', [i, ThemeIdx, Tint]))
    else
      LogLine(Format('shape %d: rgb=%.8x',         [i, Shape.Fill.ForeColor.RGB]));
  end;
end;

另請參閱