HotXLS-dokumentation

Funktionen XlsApplyThemeColorToDrawing

Enhet: lxHandle
Tillämpar en av de 12 Office-temafärgsplatserna (plus en valfri ton) på en ritsida- TXLSColorFormat — samma referens som FillFormat.ForeColor och LineFormat.ForeColor exponerar på former och diagramelement. Tillgänglig sedan v2.62.0 (chart backlog wave D fas 5). v2.64.0 (fas 7) lade till en minnesintern sidotabell på arbetsboksnivå så att ett efterföljande XlsGetDrawingThemeColor-anrop i samma process kan återställa den ursprungliga tema-idx + ton
Använd den här hjälpfunktionen när programmet vill att diagramfyllningar, diagramlinjefärger eller formfyllningar ska följa arbetsbokens temapalett på samma sätt som celler gör via Interior.SetThemeColor

Syntax

procedure XlsApplyThemeColorToDrawing(
  ColorFormat: TXLSColorFormat;
  Workbook   : TXLSWorkbook;
  ThemeIdx   : Word;
  Tint       : Double);

Parametrar

ColorFormat — ritsidans färgplats som ska uppdateras. Vanligtvis ForeColor för en TXLSFillFormat eller TXLSLineFormat
Workbook — värd-TXLSWorkbook. Behövs för att lösa upp temapaletten och för att innehålla den minnesinterna sidotabellen
ThemeIdx — 0-baserad temaplats (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — spec-stils ljusare/mörkare justering i intervallet -1.0 .. +1.0

Anmärkningar

Hjälpfunktionen utför två skrivningar per anrop:
Varför endast en process. BIFF8 OfficeArts 4-byte ColorRef kodar varianterna indexerad / RGB / scheme / sysColor, men det finns ingen tilläggspost som motsvarar XFExt $087D där tema-idx + ton skulle kunna bestå. Så begränsningen i Save / Open-round-trip är strukturell för filformatet, inte en lucka i HotXLS. Efter omladdning är arbetsboken en ny TXLSWorkbook-instans med en tom sidotabell och XlsGetDrawingThemeColor returnerar False, med fall till ColorFormat.RGB
För cellfärger som round-trippar genom Save / Open, använd de dedikerade ingångspunkterna IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor i stället — de använder XFExt $087D-rich-color-sidoposten för att round-trippa tema-idx + ton ordagrant genom Excel 2007+

Exempel

Färgar om en forms heldragna fyllning till accent5 med en 25 % mörkare ton och läser sedan tillbaka temaavsikten från arbetsbokens sidotabell för att visa den i en egenskapsruta. Efter SaveAs / Open börjar sidotabellen tom igen, så anropare som behöver bestående avsikt bör hålla sitt eget tillstånd

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 även