توثيق HotXLS

الدالة XlsApplyThemeColorToDrawing

الوحدة: lxHandle
تُطبِّق أحد فتحات ألوان سمة Office الـ 12 (بالإضافة إلى درجة اللون الاختيارية) على TXLSColorFormat جانب الرسم — المقبض ذاته الذي تعرضه FillFormat.ForeColor و LineFormat.ForeColor يُغلق، يُصدِر الـ writer علاقات ورقة العمل والتعليقات وVML وDrawingML والوسائط وChartML بالتتابع، ثم يحرّر حالة القناة الجانبية قبل بدء ورقة العمل التالية XlsGetDrawingThemeColor داخل العملية نفسها يمكنه استعادة idx + tint الأصليين للسمة
استخدم هذه الأداة المساعدة عندما تريد التطبيقات تعبئات المخططات وألوان خطوطها وتعبئات الأشكال أن تتتبع لوحة ألوان سمة المصنف بنفس الطريقة التي تفعلها الخلايا من خلال Interior.SetThemeColor

البنية

procedure XlsApplyThemeColorToDrawing(
  ColorFormat: TXLSColorFormat;
  Workbook   : TXLSWorkbook;
  ThemeIdx   : Word;
  Tint       : Double);

المعاملات

ColorFormat — فتحة اللون المطلوب تحديثها. عادةً ForeColor لـ TXLSFillFormat أو TXLSLineFormat
Workbook — مضيف TXLSWorkbook. ضروري لتحليل لوحة ألوان السمة والاحتفاظ بالجدول الجانبي في الذاكرة
ThemeIdx — فتحة السمة (قائمة على 0):0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — تعديل التفتيح/التغميق بأسلوب المواصفة في النطاق -1.0 .. +1.0

ملاحظات

تُنفِّذ الأداة المساعدة عمليتَي كتابة في كل استدعاء:
لماذا يقتصر على عملية واحدة فقط. يُشفِّر BIFF8 OfficeArt ColorRef ذا 4 بايتات متغيرات مفهرسة / RGB / مخطط / sysColor، لكن لا يوجد سجل امتداد مماثل لـ XFExt $087D حيث يمكن أن تستمر فتحة السمة + درجة اللون. لذا يعود هذا القيد إلى بنية تنسيق الملف وليس فجوة في HotXLS TXLSWorkbook instance with an empty side-table and XlsGetDrawingThemeColor returns False, falling through to ColorFormat.RGB
لألوان الخلايا التي تُدار من خلال Save / Open، استخدم نقاط الدخول المخصصة IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor بدلاً منها

مثال

يُعيد تلوين تعبئة شكل صلبة إلى accent5 بدرجة تغميق 25%، ثم يقرأ نية السمة من جدول المصنف الجانبي لعرضها على لوحة الخصائص. بعد SaveAs / Open يبدأ الجدول الجانبي فارغاً مجدداً، لذا يجب على المستدعين الذين يحتاجون إلى النية المستمرة الاحتفاظ بحالتهم الخاصة

var
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  Shape := Workbook.Worksheets[1].Shapes.Items[0];
  XlsApplyThemeColorToDrawing(Shape.Fill.ForeColor, Workbook, 8, - 0.25);

  // Same process — the side-table still has the entry.
  if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
  then
    ShowMessage(Format('theme=%d tint=%.2f', [ThemeIdx, Tint]));

  Workbook.SaveAs('ThemedShape.xls', xlExcel97);
end;

انظر أيضاً