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 會被分類為自動 |
xicsBiffIcv | BIFF 索引會依據所選角色進行驗證:字型與註解色彩使用 IcvFont 子集,框線與填滿色彩使用 IcvXF 子集,圖表色彩使用 IcvChart 子集,一般查閱則使用完整的 Icv 表 |
xicsOoxmlIndexed | OOXML 索引 0..63 會定址索引調色盤,64 與 65 分別識別系統前景與背景,更大的值則無效 |
結果
| 欄位 | 意義 |
|---|---|
Kind | xickPalette、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);