HotXLS-dokumentation

XlsApplyThemeColorToDrawing funktion

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

ColorFormat — den drawing-farveplads, der skal opdateres. Typisk ForeColor på en TXLSFillFormat eller TXLSLineFormat
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:
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
For cellefarver, der round-tripper gennem Save / Open, skal du i stedet bruge de dedikerede IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor-indgangspunkter — de udnytter XFExt $087D rich-color-sideposten til at round-trip tema-idx + toning ordret gennem Excel 2007+

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å