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:
- icv indexado no registo XF (legado) — o tema + tint é resolvido através da paleta de temas BIFF do livro para um RGB, que depois escolhe o índice mais próximo da paleta de 56 cores. O Excel 97-2003 vê esta aproximação quando o ficheiro é aberto
- slot FullColorExt no XFExt $087D (Excel 2007+) — o escritor emite um registo lateral de cor rica com
xclrType=3 (tema), xclrValue=ThemeIdx e nTintShade derivado de Tint. O Excel 2007+ usa isto para recuperar a intenção exata do tema e volta a tingir a célula sempre que a paleta de temas do livro muda — o mesmo truque de compatibilidade descendente que a Microsoft usa quando "Save As" faz downgrade de um .xlsx com tema para .xls
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