Documentación de HotXLS

Funcion XlsApplyThemeColorToDrawing

Unidad: lxHandle
Aplica uno de los 12 slots de color de tema de Office (mas un matiz opcional) a un TXLSColorFormat del lado del dibujo TXLSColorFormat — the same handle that FillFormat.ForeColor and LineFormat.ForeColor exponen en las formas y los elementos de gráfico. Disponible desde v2.62.0 (chart backlog wave D phase 5). v2.64.0 (phase 7) añadió una tabla lateral en memoria a nivel de libro para que una llamada posterior a XlsGetDrawingThemeColor dentro del mismo proceso pueda recuperar el theme idx + tint original
Use este asistente cuando la aplicacion quiera que los rellenos de graficos o los rellenos de formas sigan los colores del tema del libro de trabajo activo Interior.SetThemeColor

Sintaxis

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

Parametros

ColorFormat — la ranura de color del dibujo a actualizar. Normalmente el ForeColor of a TXLSFillFormat or TXLSLineFormat
Workbook — the host TXLSWorkbookColorFormat: la ranura de color del dibujo a actualizar. Tipicamente el ForeColor de un TXLSFillFormat
ThemeIdx — 0-based theme slot (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlinkWorkbook: el TXLSWorkbook anfitrión. Necesario para resolver la paleta del tema
ThemeIdx: ranura de tema de base 0 (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink) Tint: ajuste de aclaramiento en el rango -1.0 a +1.0 -1.0 .. +1.0

Observaciones

El asistente realiza dos escrituras por llamada: escribe en el ColorRef de OfficeArt y guarda la intencion del tema en una tabla lateral en memoria
Por que es de un solo proceso: el ColorRef de 4 bytes de OfficeArt BIFF8 no tiene espacio para un slot de tema El ColorRef de 4 bytes de OfficeArt en BIFF8 codifica las variantes indexed / RGB / scheme / sysColor, pero no hay ningún registro de extensión análogo a XFExt $087D donde persistir el theme idx + tint. Así que el límite de la ida y vuelta Save / Open es estructural del formato de archivo, no una carencia de HotXLS. Tras recargar, el libro es una nueva instancia de TXLSWorkbook instance with an empty side-table and XlsGetDrawingThemeColor returns False, falling through to ColorFormat.RGB
Para los colores de celda que sobreviven a la ida y vuelta Save / Open, use los dedicados IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor Para los colores de celda, use IXLSInterior.SetThemeColor o IXLSFont.SetThemeColor

Ejemplo

Recolorea el relleno sólido de una forma a accent5 con un matiz un 25% más oscuro, y luego lee la intención de tema de vuelta desde la tabla lateral del libro para mostrarla en un panel de propiedades. Después de SaveAs / Open Recolorea el relleno solido de una forma al color accent5 con un matiz 25% mas oscuro

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;

Vease tambien