Enhed: lxHandle
Anvender en af de 12 Office-temafarvepladser (plus en valgfri toning) på en drawing-side
TXLSColorFormat — det samme handle, som
FillFormat.ForeColor og
LineFormat.ForeColor viser på figurer og diagramelementer. Tilgængelig siden v2.62.0 (chart backlog wave D fase 5). v2.64.0 (fase 7) tilføjede en in-memory-sidetabel på projektmappeniveau, så et efterfølgende
XlsGetDrawingThemeColor-kald i samme proces kan gendanne den oprindelige tema-idx + toning
Brug denne hjælper, når programmet ønsker, at diagramudfyldninger, diagramlinjefarver eller figurudfyldninger skal følge projektmappens temapalet på samme måde, som celler gør gennem
Interior.SetThemeColor
Syntaks
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
Parametre
Workbook — den overordnede TXLSWorkbook. Nødvendig for at opløse temapaletten og for at holde in-memory-sidetabellen
ThemeIdx — 0-baseret temaplads
(0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — spec-stil lysere/mørkere-justering i området -1.0 .. +1.0
Bemærkninger
Hjælperen udfører to skrivninger pr. kald:
- OfficeArt opt blob (på disk). Tema-idx + toning opløses gennem projektmappens BIFF-temapalet til en konkret RGB og skrives ind i drawing-farvepladsen. BIFF8 OfficeArt er et præ-Office-2007 binært format uden indbygget temafarve-kodning, så dette er den eneste del, der overlever Save / Open
- In-memory-sidetabel på projektmappen (v2.64.0+). Setter'en registrerer også den oprindelige
(ThemeIdx, Tint) i TXLSWorkbook.FDrawingThemeColors nøglet på (ColorFormat._Container, ColorFormat._Pid). Den ledsagende XlsGetDrawingThemeColor-læser henter disse værdier tilbage i samme proces. Gen-indsætning af samme plads overskriver posten, så sidetabellen sporer den seneste hensigt frem for at akkumulere historik
Hvorfor kun enkeltproces. BIFF8 OfficeArt's 4-byte ColorRef koder indexed / RGB / scheme / sysColor-varianter, men der er ingen udvidelsespost svarende til XFExt $087D, hvor tema-idx + toning kunne bevares. Så begrænsningen på Save / Open round-trip er strukturel for filformatet, ikke et HotXLS-hul. Efter genindlæsning er projektmappen en frisk TXLSWorkbook-instans med en tom sidetabel, og XlsGetDrawingThemeColor returnerer False og falder igennem til ColorFormat.RGB
Eksempel
Farvelægger en figurs solide udfyldning om til accent5 med en 25 % mørkere toning og læser derefter temahensigten tilbage fra projektmappens sidetabel for at vise den på et egenskabspanel. Efter SaveAs / Open starter sidetabellen tom igen, så kaldere, der har brug for vedvarende hensigt, bør holde deres egen tilstand
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;
Se også