Documentación de HotXLS

Método SetThemeColor (Interior)

Establece el color de relleno (primer plano) de sombreado de celda en uno de los 12 slots de color de tema de Office con un ajuste de tono opcional. Complemento de Interior.Color para los llamadores que deseen direccionar colores de tema de Office directamente (de modo que Excel pueda volver a aplicar el tono de la celda con la paleta de temas del libro) en lugar de fijar un RGB. Disponible desde v2.61.0 (ola D de la lista de espera de gráficos, fase 4)

Sintaxis

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

Parámetros

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

Observaciones

El establecedor sigue dos rutas para que la misma celda se represente correctamente tanto en Excel 2007+ como en Excel 2003:
Las celdas establecidas mediante SetThemeColor realizan un viaje de ida y vuelta en la carga: Interior.Color devuelve el RGB resuelto (tema + tono aplicados a través de la paleta de tema BIFF) de modo que los llamadores siempre ven 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 BIFF8 Theme ($0892), de modo que cualquier referencia SetThemeColor del lado del llamador se resuelve a través del tema real del libro en lugar del esquema predeterminado de Office

Ejemplo

Rellena la fila de encabezado con accent1 y etiqueta las celdas de advertencia con un rojo accent2 con un 50 % de tono claro

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;

Véase también