وثائق HotXLS

TCondFormat / TCondFormatRule وفئات مواصفات CF12

الوحدة: lxCondFormat

عائلة التنسيق الشرطي لـ BIFF8 (.xls) التي تدعم قواعد امتداد Excel 2007+. يحتفظ TXLSWorksheet بمجموعة من إدخالات TCondFormat؛ يغطي كل إدخال نطاقًا واحدًا أو أكثر من الخلايا ويحتوي على قائمة مرتبة من كائنات TCondFormatRule، حيث تكون كل قاعدة إما قاعدة قيمة خلية قديمة أو قاعدة CF12 Data Bar / Color Scale / Icon Set تقوم نقاط الإدخال الأربعة Sheet.AddCondFormat* (DataBar، ColorScale2، ColorScale3، IconSet) بإنشاء قواعد من النوع الفرعي الصحيح. متوفر منذ الإصدار v2.34.0

تعداد نوع العتبة

type
  TXLSCfValueKind = (
    cfvNumber      = 0,
    cfvMinOfRange  = 1,
    cfvMaxOfRange  = 2,
    cfvPercent     = 3,
    cfvPercentile  = 4,
    cfvFormula     = 5,
    cfvAutoMin     = 6,  // Excel 2010+ data-bar only
    cfvAutoMax     = 7); // Excel 2010+ data-bar only

تعداد عائلة مجموعة الأيقونات

type
  TXLSIconSetType = (
    icsArrows3, icsArrows3Gray, icsFlags3,
    icsTrafficLights3, icsTrafficLightsRimmed3, icsSigns3,
    icsSymbols3, icsSymbolsUncircled3,
    icsArrows4, icsArrows4Gray, icsRedToBlack4,
    icsRatings4, icsTrafficLights4,
    icsArrows5, icsArrows5Gray,
    icsRatings5, icsQuarters5);

17 عائلة أيقونات أساسية في Excel 2007. يتم ترميز عدد التوقفات الرقمي (3 أو 4 أو 5) في اسم التعداد

قيمة العتبة (cfvo)

type
  TXLSCfValue = class
    constructor Create(AKind: TXLSCfValueKind;
      const AValue: WideString; AColor: LongWord);
    procedure SetThemeColor(ThemeId: Word; Tint: Single); // v2.43.0+
    procedure ClearThemeColor;                            // v2.43.0+
    property Kind: TXLSCfValueKind;
    property Value: WideString;       // numeric literal or formula text
    property Color: LongWord;         // BGR RGB for ColorScale stops
    property IsThemeColor: Boolean;    // v2.43.0+ true = theme mode active
    property ThemeColorId: Word;       // v2.43.0+ theme palette index
    property ThemeColorTint: Single;   // v2.43.0+ -1.0 .. 0.0 .. +1.0
  end;

حمولة شريط البيانات

type
  TXLSDataBarSpec = class
    procedure SetThemeColor(ThemeId: Word; Tint: Single); // v2.43.0+ — opt bar fill into theme mode
    procedure ClearThemeColor;                            // v2.43.0+ — revert to RGB Color
    property Min: TXLSCfValue;
    property Max: TXLSCfValue;
    property Color: LongWord;         // bar fill
    property ShowValue: Boolean;      // false = hide cell text
    property MinLength: Byte;         // 0..100 percent
    property MaxLength: Byte;         // 0..100 percent
    property IsThemeColor: Boolean;    // v2.43.0+ true = theme mode active
    property ThemeColorId: Word;       // v2.43.0+ theme palette index
    property ThemeColorTint: Single;   // v2.43.0+ -1.0 .. 0.0 .. +1.0
  end;

رحلة ذهاب وإياب للون سمة XLSX (v2.43.0+)

يمكن تعيين لون تعبئة الشريط في قاعدة Data Bar والألوان لكل توقف في قاعدة Color Scale مقابل فهرس سمة المصنف بالإضافة إلى قيمة صبغة عبر SetThemeColor(ThemeId, Tint) بدلاً من RGB مجمد. يُصدر كاتب XLSX <color theme="N"/> عندما يكون Tint بالضبط 0.0 أو <color theme="N" tint="0.5"/> عندما يكون غير صفري، وهو ما يطابق إخراج "النموذج الأقصر" الخاص بـ Excel. يحلل القارئ كلا تركيبتي السمات ويتراجع إلى مسار RGB rgb= عندما لا يكون theme ولا tint موجودين. وضعان يستبعد كل منهما الآخر لكل فتحة؛ أي Set تم استدعاؤه أخيرًا يفوز تعكس IsThemeColor الوضع النشط للفحص

يُخزن BIFF8 CF12 لون RGB المحلول فقط — وضع السمة يقوم برحلة ذهاب وإياب على الواجهة الخلفية لـ XLSX حصريًا في هذا الإصدار لا تحتوي قواعد iconSet على عناصر <color> لذا فإن إضافة وضع السمة لا تؤثر عليها

حمولة مقياس الألوان

type
  TXLSColorScaleSpec = class
    constructor Create(IsThreeStop: Boolean);
    procedure SetStop(I: Integer; Kind: TXLSCfValueKind;
      const Value: WideString; Color: LongWord);
    property StopCount: Integer;      // 2 or 3
    property Stops[I: Integer]: TXLSCfValue; default;
  end;

حمولة مجموعة الأيقونات

type
  TXLSIconSetSpec = class
    constructor Create(ASetType: TXLSIconSetType);
    procedure SetThreshold(I: Integer; Kind: TXLSCfValueKind;
      const Value: WideString);
    // Per-stop icon override (v2.44.0+).
    procedure SetIconOverride(I: Integer;
      OverrideSet: TXLSIconSetType; IconId: Byte);
    procedure ClearIconOverride(I: Integer);
    property SetType: TXLSIconSetType;
    property Reverse: Boolean;        // reverse the icon order
    property ShowOnly: Boolean;       // true = icon only, hide cell text
    property IconCount: Integer;      // 3, 4 or 5 (derived from SetType)
    property Thresholds[I: Integer]: TXLSCfValue;
    property HasIconOverride[I: Integer]: Boolean;        // v2.44.0+
    property IconOverrideSet[I: Integer]: TXLSIconSetType; // v2.44.0+
    property IconOverrideId[I: Integer]: Byte;             // v2.44.0+
  end;

تجاوز أيقونة التوقف (v2.44.0+)

يمكن لكل توقف في قاعدة Icon Set تجاوز أيقونة العرض الخاصة به بأي أيقونة من أي من عائلات الأيقونات المدمجة الـ 17، المحددة بواسطة زوج (OverrideSet, IconId). يُصدر XLSX <cfIcon iconSet="..." iconId="N"/> لكل توقف تم تجاوزه. يستمر BIFF8 CF12 في تقديم الأيقونة الافتراضية للعائلة نظرًا لأن تنسيق سلك BIFF8 لا يحتوي على فتحة لتجاوز لكل توقف — هذه إمكانية خاصة بـ XLSX فقط في الإصدار الحالي. تُرجع HasIconOverride[i] القيمة True فقط للتوقفات التي تم الاشتراك فيها صراحةً عبر SetIconOverride؛ تستمر توقفات الأيقونات الافتراضية في استخدام الإعداد الافتراضي لموضع توقف العائلة

القاعدة

type
  TCondFormatRule = class
    property Kind: TXLSCfKind;
    property cfType: Word;            // CF-record subtype
    property Operator_: Word;         // comparison operator for cellIs
    property DataBar: TXLSDataBarSpec;       // non-nil for Data Bar rules
    property ColorScale: TXLSColorScaleSpec; // non-nil for Color Scale rules
    property IconSet: TXLSIconSetSpec;       // non-nil for Icon Set rules
    property Style: TXLSDxfStyle;        // DXF override; lazy-created (v2.35.0+)
    property DxfBlob: TXLSBlob;       // raw DXF bytes from Parse (v2.35.0+)
    property Priority: Word;          // CF12 ipriority; 0 = writer assigns (v2.45.0+)
  end;

بالضبط واحد من DataBar / ColorScale / IconSet ليس nil لكل قاعدة CF12، ليطابق Kind الخاص بالقاعدة. تترك قواعد cellIs القديمة (غير CF12) الثلاثة nil وتستخدم Operator_ + Formula1 / Formula2

خاصية Style (v2.35.0+) يتم إنشاؤها بكسل عند القراءة الأولى؛ الكائن الذي تم إرجاعه مملوك للقاعدة ويتم تحريره في مدمرها. قم بتعيين HasXxx عبر استدعاء SetXxx المقابل على Style. يحتفظ قارئ BIFF8 بالبايتات الخام في DxfBlob بالإضافة إلى فك تشفيرها إلى Style (v2.35.1+)، لذا فإن رحلة التحميل والتعديل والحفظ تعكس أي طفرة بعد التحميل لـ Style؛ إذا لم يلمسه المستخدم، يحمل الملف المحفوظ نفس التجاوزات مثل الأصل

في قواعد Data Bar و Color Scale و Icon Set الخاصة بـ BIFF8 CF12، يتطلب [MS-XLS] أن تكون كتلة DXF المضمنة فارغة. بدءًا من v2.87.4، يتبع HotXLS تلك القاعدة: لا يتم تسلسل تجاوزات النمط المعينة من خلال Rule.Style لتلك الأنواع الثلاثة من CF12 عند حفظ ملفات xls. لا يزال تكوين قاعدة Data Bar / Color Scale / Icon Set نفسه محفوظًا من خلال الذيل الخاص بنوع CF12 لا يتأثر إخراج التنسيق الشرطي لـ XLSX

الحاوية

type
  TCondFormat = class
    procedure ClearRow(row: Integer);
    procedure ClearCol(col: Integer);
    procedure ClearRange(row1, col1, row2, col2: Integer);
    procedure MoveRanges(row1, col1, row2, col2,
      drow, dcol: Integer);
    function  RuleCount: Integer;                // v2.40.0+
    function  Rule(I: Integer): TCondFormatRule;  // v2.40.0+
    property Range[i: Integer]: TCondRange; default;
    property IsEmpty: Boolean;
    property IsExt12: Boolean;       // true = emits CONDFMT12/CF12
    property IsShadowed: Boolean;    // v2.37.0+ — duplicate CONDFMT marker
    property TotalRange: TCondRange; // v2.37.0+ — merged-extent range
  end;

اكتشاف الظل عبر الإصدارات (v2.37.0+)

غالبًا ما تحمل الملفات المحفوظة في Excel كلاً من CONDFMT لقيمة خلية Excel 2003 و CONDFMT12 لـ Excel 2007+ يغطيان نفس sqref — سجل قيمة الخلية هو تراجع عبر الإصدارات لا يزال بإمكان Excel الأقدم تقديمه. يحدد القارئ الإدخال الأقدم عبر IsShadowed = True بعد اكتشاف تطابق تام لمربع الإحاطة على TotalRange، بحيث يمكن للتعليمات البرمجية التي تواجه المستخدم والتي تكرر مجموعة التنسيق الشرطي تخطي التكرار. يستمر الكاتب في إصدار كلا عائلتي السجلات عند الحفظ من أجل التوافق بين Excel 2003 و Excel 2007+

تنسيق السلك

عند حفظ BIFF8 بـ SaveAs(xlExcel97)، تُصدر قواعد CF12 سجلات CONDFMT12 ($0879) + CF12 ($087A) جنبًا إلى جنب مع CONDFMT القديم ($01B0) + CF ($01B1) للتوافق عبر الإصدارات مع Excel 2003. يتعرف القارئ على السجلات الحديثة ويعرضها من خلال نفس نموذج القاعدة في الذاكرة حتى يتم إجراء رحلة ذهاب وإياب للملفات ذات الامتداد xls التي تم إنشاؤها بواسطة Excel والتي تحتوي على قواعد امتداد دون فقدان البيانات

مثال

// Data bar with custom min/max thresholds.
with Sheet.AddCondFormatDataBar('A1:A10', $00FF0000,
  cfvNumber, '0', cfvNumber, '100').DataBar do
begin
  ShowValue := True;
  MinLength := 10;
  MaxLength := 90;
end;

// 3 Arrows icon set, reversed so green points down.
with Sheet.AddCondFormatIconSet('B1:B10', icsArrows3).IconSet do
begin
  Reverse  := True;
  ShowOnly := False;
end;

انظر أيضًا

TXLSWorksheet.AddCondFormatDataBar
TXLSWorksheet.AddCondFormatColorScale2
TXLSWorksheet.AddCondFormatColorScale3
TXLSWorksheet.AddCondFormatIconSet
TXLSXConditionalFormat (XLSX side)