Documentação do HotXLS

Método SetThemeColor (Interior)

Define a cor de preenchimento de sombreado (primeiro plano) da célula para um dos 12 espaços de cor de tema do Office com um ajuste de matiz opcional. Companheiro de Interior.Color para os chamadores que pretendem endereçar directamente as cores de tema do Office (para que o Excel possa reaplicar matiz à célula com a paleta de temas do livro) em vez de fixar um RGB. Disponível desde v2.61.0 (backlog de gráfico onda D fase 4)

Sintaxe

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

Parâmetros

ThemeIdx — espaço de tema com base 0: 0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..accent6, 10=hlink, 11=foHlink Corresponde à ordem de tema Office padrão utilizada pelo lado XLSX
Tint — ajuste de iluminação/escurecimento no estilo de especificação no intervalo -1.0 .. +1.0 0.0 utiliza a cor base do espaço de tema; valores negativos escurecem (luminância HSL para 0), valores positivos iluminam (luminância HSL para 1). O leitor HotXLS codifica isto como um inteiro com sinal Q15 no campo FullColorExt.nTintShade do registo XFExt

Observações

O definidor percorre dois caminhos para que a mesma célula seja renderizada correctamente tanto no Excel 2007+ como no Excel 2003:
As células definidas via SetThemeColor são transferidas no carregamento: Interior.Color devolve o RGB resolvido (tema + matiz aplicados através da paleta de temas BIFF) para que os chamadores vejam sempre um valor LongWord concreto
As paletas de temas personalizadas definidas no Excel via Esquema de Página → Cores sobrevivem ao carregamento e gravação através do registo BIFF8 Theme ($0892), pelo que qualquer referência SetThemeColor do lado do chamador é resolvida através do tema real do livro em vez do esquema Office predefinido

Exemplo

Preenche a linha de cabeçalho com accent1 e marca células de aviso com um accent vermelho 50% mais claro (accent2 + matiz 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 também