TCondFormat osztály
Egység: lxCondFormat
A BIFF8 (.xls) feltételes formázási család, amely az Excel 2007+ bővítési szabályait támogatja. A TXLSWorksheet a TCondFormat bejegyzések gyűjteményét tartja; minden bejegyzés egy vagy több cellatartományra terjed ki, és egy rendezett TCondFormatRule objektumlistát tartalmaz, ahol minden szabály vagy egy örökölt cellaérték-szabály, vagy egy CF12 Data Bar / Color Scale / Icon Set szabály. A négy Sheet.AddCondFormat* belépési pont (DataBar, ColorScale2, ColorScale3, IconSet) a megfelelő altípusú szabályokat hozza létre. Elérhető v2.34.0 óta
Küszöb típus felsorolás
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
Ikon készlet típus felsorolás
type
TXLSIconSetType = (
icsArrows3, icsArrows3Gray, icsFlags3,
icsTrafficLights3, icsTrafficLightsRimmed3, icsSigns3,
icsSymbols3, icsSymbolsUncircled3,
icsArrows4, icsArrows4Gray, icsRedToBlack4,
icsRatings4, icsTrafficLights4,
icsArrows5, icsArrows5Gray,
icsRatings5, icsQuarters5);
A 17 alapvető Excel 2007 ikoncsalád. A numerikus lépésszám (3, 4 vagy 5) az enum nevében van kódolva
Küszöbérték (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;
Adatsáv tartalom
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 témaszín körbejárás (v2.43.0+)
A Data Bar szabály sávkitöltési színe és a Color Scale szabály egyes pontjainak színei beállíthatók munkafüzet-témaindex és tónusérték alapján a SetThemeColor(ThemeId, Tint) segítségével, rögzített RGB helyett. Az XLSX író <color theme="N"/> elemet ír, amikor a Tint pontosan 0.0, vagy <color theme="N" tint="0.5"/> elemet, amikor nem nulla, az Excel saját "shortest form" kimenetét követve. Az olvasó mindkét attribútumpárt feldolgozza, és visszavált az RGB rgb= útra, ha sem theme, sem tint nincs jelen. A két mód slotonként kizárja egymást; az utoljára hívott Set győz, és a IsThemeColor a vizsgálathoz az aktív módot tükrözi
A BIFF8 CF12 csak a feloldott RGB színt tárolja — a téma mód ebben a kiadásban kizárólag az XLSX háttéren jár körbe. Az iconSet szabályoknak nincs <color> elemük, így a téma mód hozzáadása nem érinti őket
Szín skála tartalom
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;
Ikon készlet tartalom
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;
Ikon felülírása lépésenként (v2.44.0+)
Az Icon Set szabály minden egyes lépése bármelyik beépített 17 ikoncsalád bármelyik ikonjával felülírhatja a megjelenített ikont, egy (OverrideSet, IconId) pár segítségével azonosítva. Az XLSX <cfIcon iconSet="..." iconId="N"/> elemet ír minden felülírt lépésre. A BIFF8 CF12 továbbra is a család alapértelmezett ikonját rendereli, mert a BIFF8 vezetékformátum nem biztosít helyet lépésenkénti felülírásra — ez a jelen kiadásban csak XLSX-képes funkció. A HasIconOverride[i] csak azoknál a lépéseknél ad vissza True értéket, amelyeket kifejezetten a SetIconOverride segítségével engedélyeztek; az alapértelmezett ikonú lépések továbbra is a család lépéshely szerinti alapértelmezését használják
Szabály
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;
A DataBar / ColorScale / IconSet közül pontosan egy nem nil CF12-szabályonként, a szabály Kind értékének megfelelően. Az örökölt cellIs szabályok (nem CF12) mindhárom mezőt nilen hagyják, és az Operator_ + Formula1 / Formula2 párost használják
A Style tulajdonság (v2.35.0+) lusta módon az első olvasáskor jön létre; a visszaadott objektum a szabály tulajdona, és a destruktor szabadítja fel. A HasXxx értéket a megfelelő SetXxx hívással állítsa be a Style-on. A BIFF8 olvasó a nyers bájtokat a DxfBlob-ban is megőrzi a Style értelmezése mellett (v2.35.1+), így a betöltés-szerkesztés-mentés kör az olvasás utáni Style-módosításokat is visszatükrözi; ha a felhasználó nem nyúl hozzá, a mentett fájl ugyanazokat az eltéréseket hordozza, mint az eredeti
BIFF8 CF12 Data Bar, Color Scale és Icon Set szabályoknál a [MS-XLS] előírja, hogy az inline DXF blokk legyen üres. A v2.87.4-től a HotXLS ezt követi: a Rule.Style révén beállított stílusfelülírások nem serializálódnak e három CF12 típus mentésekor .xls fájlba. A Data Bar / Color Scale / Icon Set szabálykonfiguráció továbbra is megmarad a CF12-típus-specifikus végében. Az XLSX conditional-formatting kimenetet ez nem érinti
Tároló
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;
Cross-Verzió shadow detection (v2.37.0+)
Az Excel által mentett fájlok gyakran egyszerre tartalmaznak egy Excel 2003 cellaérték-CONDFMT és egy Excel 2007+ CONDFMT12 rekordot ugyanarra a sqref-re — a cellaérték-rekord egy többverziós tartalék, amelyet a régebbi Excel még meg tud jeleníteni. Az olvasó a régebbi bejegyzést IsShadowed = True jelzéssel látja el, miután pontos határolómező-egyezést észlel a TotalRange-en, így a conditional-format gyűjteményen végigiteráló felhasználói kód kihagyhatja a duplikátumot. Az író mentéskor továbbra is mindkét rekordcsaládot kibocsátja az Excel 2003 ↔ Excel 2007+ kompatibilitás érdekében
Huzal formátum
BIFF8 SaveAs(xlExcel97) esetén a CF12 szabályok CONDFMT12 ($0879) + CF12 ($087A) rekordokat írnak a régi CONDFMT ($01B0) + CF ($01B1) mellé, az Excel 2003-mal való verziók közötti kompatibilitás érdekében. Az olvasó felismeri a modern rekordokat, és ugyanazon a memóriabeli szabálymodellen keresztül teszi őket elérhetővé, így az Excel által létrehozott, kiterjesztési szabályokat tartalmazó .xls fájlok adatvesztés nélkül járnak körbe
Példa
// 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;
Lásd még
TXLSWorksheet.AddCondFormatDataBar
TXLSWorksheet.AddCondFormatColorScale2
TXLSWorksheet.AddCondFormatColorScale3
TXLSWorksheet.AddCondFormatIconSet
TXLSXConditionalFormat (XLSX oldal)