متد ScanIndexedColorUsage
فهرست قطعی تمام 56 خانه فیزیکی پالت کتاب کار و تعاریف و ارجاعات رنگ مفهرسی که از آنها استفاده میکنند را برمیگرداند
این متد هم روی IXLSWorkbook و هم روی TXLSXWorkbook در دسترس است و پالت، سلولها، سبکها، قالبهای شرطی یا وضعیت کتاب کار را تغییر نمیدهد
نحو
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
نتیجه
آرایه بازگشتی همیشه 56 مدخل به ترتیب صعودی خانههای فیزیکی از 8 تا 63 در بر دارد
| فیلد | معنی |
|---|---|
ColorIndex | اندیس عمومی متناظر پالت از 1 تا 56 |
PaletteSlot | خانه فیزیکی رنگ مفهرس BIFF یا OOXML از 8 تا 63 |
ARGB | رنگ مات نرمالشدهای که در حال حاضر در خانه ذخیره است، یا صفر اگر قابل حل نباشد |
DefinitionCount | تعداد تعاریف مفهرسی که به خانه اشاره میکنند |
ReferenceCount | تعداد اشیا، سلولها یا مواضع قالب شرطی پوششدادهشدهای که به آن تعاریف ارجاع میدهند |
Kinds | مجموعهای که هر رده مصرفکننده مشاهدهشده را توصیف میکند |
Locked | True وقتی خانه دستکم یک تعریف یا ارجاع دارد و بنابراین طرح بهینهسازی پالت باید آن را حفظ کند |
پوشش مصرفکنندگان
Kinds میتواند شامل قلمها، پیشزمینه پرکننده، پسزمینه پرکننده، گرادیانها، کادرها، قالبهای شرطی، نمودارها، شکلها، یادداشتها، تنظیمات کاربرگ و سایر مصرفکنندگان مفهرس باشد
پویش Classic XLS شامل قلمها، پرکنندهها و کادرهای XF، خطوط شبکه کاربرگ، رنگ شکلها و یادداشتها، ارجاعات قلم متن غنی و نمودار، قالبهای شرطی قدیمی و نوارهای داده یا مقیاسهای رنگ BIFF12 است
پویش XLSX شامل ارجاعات سبک سلول عینیتیافته، روکشهای سبک، سبکهای نامدار، مجموعههای قلم، پرکننده، گرادیان و کادر، سبکهای تفاضلی، نوارهای داده و مقیاسهای رنگ است
توکنهای رنگ مستقیم، تم، خودکار، سیستمی و نامعتبر، خانههای فیزیکی پالت را قفل نمیکنند
قرارداد عملکرد و وضعیت
پویش فقط سلولهای خلوت ذخیرهشده و فراداده سبک موجود را میپیماید؛ سلولهای بستهبندیشده را عینیت نمیبخشد و روی مختصات بلااستفاده کاربرگ تکرار نمیکند
شمارندهها از حساب اشباعشونده 64 بیتی استفاده میکنند تا بازههای بزرگ به مقدار کوچکتری نپیچند
فراخوانیهای مکرر روی کتاب کار تغییرنکرده مدخلهای یکسان برمیگرداند و شمارندههای پالت سفارشی و آمار ذخیرهسازی را دستنخورده میگذارد
مثال
Usage := Workbook.ScanIndexedColorUsage;
for I := 0 to High(Usage) do
if Usage[I].Locked then
PreservePaletteSlot(Usage[I].PaletteSlot);