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)