יחידה: lxHandle
משחזר את אינדקס הנושא + גוון שמתקשר העביר בעבר ל-
XlsApplyThemeColorToDrawing עבור חריץ צבע ציור נתון. מחזיר
True עם שני ערכי הפלט מאוכלסים כאשר לטבלת העזר בזיכרון של חוברת העבודה יש ערך עבור החריץ; מחזיר
False אחרת כדי שהמתקשר יוכל לנסוג ל-
ColorFormat.RGB. זמין מגרסה v2.64.0 (גל D שלב 7 של פיגום תרשים)
תחביר
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
פרמטרים
ColorFormat — חריץ צבע הציור לשאילתה (אותו מטפל שהועבר ל-XlsApplyThemeColorToDrawing)
Workbook — ה-TXLSWorkbook המארח — טבלת העזר חיה על מופע חוברת העבודה, לא על חריץ הצבע
ThemeIdx (פלט) — חריץ הנושא המוקלט מבוסס-0 כאשר הפונקציה מחזירה True; 0 אחרת
Tint (פלט) — הגוון המוקלט בטווח -1.0 .. +1.0 כאשר הפונקציה מחזירה True; 0 אחרת
הערות
טבלת העזר מקורה לפי (ColorFormat._Container, ColorFormat._Pid) — אותו מפתח בו משתמש ה-setter. אותה צורה + אותו מזהה מאפיין תמיד מגיעים לאותו ערך, כך שקריאות עוקבות של XlsApplyThemeColorToDrawing מדרסות זו את זו במקום לצבור היסטוריה
היקף תהליך בודד. טבלת העזר אינה מסודרת לדיסק — ל-BIFF8 OfficeArt אין חריץ צבע נושא בפורמט הדיסק שלו, לכן כוונת הנושא עצמה לא יכולה להתמיד, רק ה-RGB המפוענח. לאחר SaveAs או Open, חוברת העבודה היא מופע TXLSWorkbook חדש שטבלת העזר שלו ריקה, ו-getter זה מחזיר False לכל שאילתה. קוד היישום שצריך כוונה מתמדת צריך לשמור את המצב שלו לצד חוברת העבודה
קריאה ל-getter עם חריץ שהוגדר דרך ColorFormat.RGB רגיל (במקום XlsApplyThemeColorToDrawing) גם מחזירה 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;
ראה גם