Define a cor de preenchimento (primeiro plano) da célula em um dos 12 slots de cor de tema do Office com um ajuste de tonalidade opcional. Complemento de
Interior.Color para chamadores que desejam endereçar cores de tema do Office diretamente (para que o Excel possa retonar a célula com a paleta de temas da pasta de trabalho) em vez de fixar um RGB fixo. Disponível desde v2.61.0 (backlog de gráfico onda D fase 4)
Sintaxe
procedure SetThemeColor(ThemeIdx: Word; Tint: Double);
Parâmetros
ThemeIdx — slot de tema baseado em 0: 0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..accent6, 10=hlink, 11=foHlink. Corresponde à ordem padrão de tema do Office usada pelo lado XLSX
Tint — ajuste de mais claro/mais escuro no intervalo -1.0 .. +1.0. 0.0 usa a cor base do slot de tema; valores negativos escurecem (luminância HSL em direção a 0), valores positivos clareiam (luminância HSL em direção a 1). O leitor HotXLS codifica isso como um inteiro com sinal Q15 no campo FullColorExt.nTintShade do registro XFExt
Observações
O setter percorre dois caminhos para que a mesma célula seja renderizada corretamente tanto no Excel 2007+ quanto no Excel 2003:
- icv indexado no registro XF (legado) — o tema + tom é resolvido pela paleta de tema BIFF da pasta de trabalho em um RGB e então escolhe o índice mais próximo da paleta de 56 cores. O Excel 97-2003 vê essa aproximação quando o arquivo é aberto
- slot FullColorExt no XFExt $087D (Excel 2007+) — o gravador emite um registro lateral de cor rica com
xclrType=3 (tema), xclrValue=ThemeIdx e nTintShade derivado de Tint. O Excel 2007+ usa isso para recuperar a intenção exata do tema e reaplica o tom à célula sempre que a paleta de tema da pasta de trabalho muda — o mesmo truque de compatibilidade reversa que a Microsoft usa quando a opção Save As rebaixa um .xlsx com estilo de tema para .xls
Células definidas via
SetThemeColor fazem round-trip no carregamento:
Interior.Color retorna o RGB resolvido (tema + tonalidade aplicados pela paleta de tema BIFF) para que os chamadores sempre vejam um valor LongWord concreto
Paletas de temas personalizadas definidas no Excel via Layout de Página → Cores sobrevivem ao carregamento e salvamento pelo registro Theme BIFF8 ($0892), portanto qualquer referência SetThemeColor do lado do chamador resolve pelo tema real da pasta de trabalho em vez do esquema padrão do Office
Exemplo
Preenche a linha de cabeçalho com accent1 e marca células de aviso com um acento vermelho 50% mais claro (accent2 + 0,5 de tonalidade)
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;
Veja também