單元: lxHandle
語法
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;
另請參閱