مستندات 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 علامت‌دار یا بدون علامت، خودکار طبقه‌بندی می‌شود
xicsBiffIcvاندیس‌های BIFF نسبت به نقش منتخب اعتبارسنجی می‌شوند: رنگ‌های قلم و یادداشت از زیرمجموعه IcvFont، رنگ‌های کادر و پرکننده از زیرمجموعه IcvXF، رنگ‌های نمودار از زیرمجموعه IcvChart و جست‌وجوی عمومی از جدول کامل Icv استفاده می‌کنند
xicsOoxmlIndexedاندیس‌های OOXML از 0 تا 63 پالت مفهرس را نشانه می‌گیرند، مقادیر 64 و 65 پیش‌زمینه و پس‌زمینه سیستمی را شناسایی می‌کنند و مقادیر بزرگ‌تر نامعتبرند

نتیجه

فیلدمعنی
KindxickPalette، xickAutomatic، xickSystem یا xickInvalid
RawIndexمقدار ورودی بدون تغییر
PaletteSlotخانه فیزیکی پالت مبتنی بر صفر، یا 1- وقتی توکن مبتنی بر پالت نباشد
SystemColorRoleنقش سیستمی معنایی، شامل متن پنجره، پس‌زمینه پنجره، متن نمودار، پس‌زمینه نمودار، رنگ خنثی نمودار و متن راهنمای شناور
ARGBرنگ مشخص نرمال‌شده وقتی HasResolvedColor برابر true باشد
HasResolvedColorفقط وقتی true است که جست‌وجوی پالت، رنگ قالب ثابت یا فراخوان صریح، مقدار RGB تولید کرده باشد

مقدار بازگشتی تابع با HasResolvedColor مطابقت دارد؛ طبقه‌بندی حتی وقتی تابع false برمی‌گرداند در AResolution در دسترس می‌ماند

قرارداد رنگ سیستمی

سربارگذاری کوتاه هرگز میزکاری فعلی Windows را نمی‌خواند و از این رو رنگ‌های خودکار و سیستمیِ وابسته به محیط را حل‌نشده می‌گذارد

سربارگذاری بلند، هم TXLSSystemColorRole و هم TXLSIndexedColorRole را به ASystemResolver می‌فرستد تا فراخوان بتواند خط‌مشی صریحی برای رابط کاربری، خروجی‌گیری یا رندر بدون سر (headless) اعمال کند

خروجی فراخوان باید ترتیب کانال $AARRGGBB را رعایت کند؛ بایت آلفای صفر به $FF نرمال می‌شود و نتیجه false فراخوان، توکن معنایی را طبقه‌بندی‌شده اما حل‌نشده باقی می‌گذارد

مقدار COLORREF در Windows از ترتیب کانال $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);

همچنین ببینید