HotXLS 文件

ResolveIndexedColor 方法

對索引色彩語彙基元進行分類,並在活頁簿調色盤或呼叫端提供的系統色彩解析器能夠提供具體 ARGB 值時解析出該值

此方法同時適用於 IXLSWorkbook 與 TXLSXWorkbook,且不會修改活頁簿狀態

語法

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

function ResolveIndexedColor(
  AIndex: Int64;
  ASpace: TXLSIndexedColorSpace;
  ARole: TXLSIndexedColorRole;
  ASystemResolver: TXLSTryResolveSystemColor;
  out AResolution: TXLSIndexedColorResolution): Boolean; overload;

索引空間

空間解讀
xicsPublicColorIndex公開調色盤索引 1..56 會對應到 BIFF 調色盤槽位 8..63;帶正負號或不帶正負號的 xlColorIndexAutomatic 會被分類為自動
xicsBiffIcvBIFF 索引會依據所選角色進行驗證:字型與註解色彩使用 IcvFont 子集,框線與填滿色彩使用 IcvXF 子集,圖表色彩使用 IcvChart 子集,一般查閱則使用完整的 Icv 表
xicsOoxmlIndexedOOXML 索引 0..63 會定址索引調色盤,64 與 65 分別識別系統前景與背景,更大的值則無效

結果

欄位意義
KindxickPalette、xickAutomatic、xickSystem 或 xickInvalid
RawIndex未經更改的輸入值
PaletteSlot以零為起點的實體調色盤槽位,當語彙基元不是以調色盤為基礎時為 -1
SystemColorRole語意系統角色,包括視窗文字、視窗背景、圖表文字、圖表背景、圖表中性色或工具提示文字
ARGB當 HasResolvedColor 為 true 時的正規化具體色彩
HasResolvedColor只有當調色盤查閱、固定格式色彩或明確回呼產生了 RGB 值時才為 True

函式傳回值與 HasResolvedColor 一致;當函式傳回 false 時,分類資訊仍可透過 AResolution 取得

系統色彩合約

短多載絕不會讀取目前的 Windows 桌面,因此自動以及依環境而定的系統色彩會保持未解析狀態

長多載會把 TXLSSystemColorRole 與 TXLSIndexedColorRole 都傳遞給 ASystemResolver,讓呼叫端能夠套用明確的 UI、匯出或無介面轉譯原則

回呼輸出必須使用 $AARRGGBB 色版順序;Alpha 位元組為零會被正規化為 $FF,而回呼傳回 false 時,語意語彙基元會保持已分類但未解析的狀態

Windows COLORREF 使用 $00BBGGRR 色版順序,必須在回呼傳回之前轉換為 $AARRGGBB

無效語彙基元絕不會呼叫回呼,固定的 BIFF 圖表中性色語彙基元不需要回呼即可解析為不透明的黑色

範例

if Workbook.ResolveIndexedColor(12, xicsPublicColorIndex, Resolution) then
  UseArgb(Resolution.ARGB);

if not Workbook.ResolveIndexedColor($40, xicsBiffIcv, Resolution) then
  Assert(Resolution.Kind = xickSystem);

另請參閱