Documentación de HotXLS

Método SetThemeColor (Interior)

Establece el color de relleno (primer plano) de sombreado de la celda a una de las 12 ranuras de color del tema de Office con un ajuste de tono opcional. Complemento de Interior.Color para los llamadores que quieran direccionar colores del tema de Office directamente (para que Excel pueda volver a tintar la celda con la paleta del tema del libro de trabajo) en lugar de fijar un RGB fijo. Disponible desde v2.61.0 (ola D fase 4 del backlog de gráficos)

Sintaxis

procedure SetThemeColor(ThemeIdx: Word; Tint: Double);

Parámetros

ThemeIdx — ranura de tema de base 0: 0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..accent6, 10=hlink, 11=foHlink Corresponde al orden de tema estándar de Office usado por el lado XLSX
Tint — ajuste de aclarado/oscurecimiento al estilo de la especificación en el rango -1.0 .. +1.0 0.0 usa el color base de la ranura del tema; los valores negativos oscurecen (luminancia HSL hacia 0), los valores positivos aclaran (luminancia HSL hacia 1). El lector de HotXLS lo codifica como un entero con signo Q15 en el campo FullColorExt.nTintShade del registro XFExt

Observaciones

El setter recorre dos rutas para que la misma celda se renderice correctamente tanto en Excel 2007+ como en Excel 2003:
Las celdas establecidas mediante SetThemeColor realizan viajes de ida y vuelta al cargar: Interior.Color devuelve el RGB resuelto (tema + tono aplicado a través de la paleta de tema BIFF) para que los llamadores siempre vean un valor LongWord concreto
Las paletas de tema personalizadas establecidas en Excel mediante Diseño de página → Colores sobreviven a la carga y el guardado a través del registro de tema BIFF8 ($0892), por lo que cualquier referencia SetThemeColor del llamador se resuelve a través del tema real del libro de trabajo en lugar del esquema de Office predeterminado

Ejemplo

Rellena la fila de encabezado con accent1 y etiqueta las celdas de advertencia con un acento rojo aclarado al 50% (accent2 + tono 0.5)

var
  Header   : IXLSRange;
  Warnings : IXLSRange;
begin
  Header := Workbook.Sheets[1].Range['A1', 'G1'];
  Header.Interior.SetThemeColor(4, 0.0);   // accent1, base shade

  Warnings := Workbook.Sheets[1].Range['G2', 'G20'];
  Warnings.Interior.SetThemeColor(5, 0.5);   // accent2, 50% lighter

  Workbook.SaveAs('ThemeFills.xls', xlExcel97);
end;

Ver también