Unidade: lxHandle
Aplica uma das 12 posições de cor de tema do Office (mais uma tonalidade opcional) a um
TXLSColorFormat do lado do desenho — o mesmo identificador que
FillFormat.ForeColor e
LineFormat.ForeColor expõem em formas e elementos de gráfico. Disponível desde v2.62.0; v2.64.0 adicionou uma tabela lateral em memória ao nível do livro para que uma chamada subsequente a
XlsGetDrawingThemeColor no mesmo processo possa recuperar a posição de tema original + tonalidade
Utilize este auxiliar quando a aplicação pretende que os preenchimentos de gráfico, as cores de linha de gráfico ou os preenchimentos de forma acompanhem a paleta de tema do livro da mesma forma que as células fazem através de
IXLSInterior.SetThemeColorSintaxe
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
Parâmetros
Workbook — o TXLSWorkbookanfitrião. Necessário para resolver a paleta de tema e para manter a tabela lateral em memória
ThemeIdx — posição de tema de base 0 (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — ajuste de clareamento/escurecimento conforme a especificação no intervalo -1.0 .. +1.0
Observações
O auxiliar efectua duas escritas por chamada:
- Bloco opt do OfficeArt (no disco) O tema idx + tint é resolvido através da paleta de temas BIFF do livro para um RGB concreto e escrito no slot de cor do desenho. O OfficeArt BIFF8 é um formato binário pré-Office-2007 sem codificação nativa de cor de tema, pelo que esta é a única parte que sobrevive a Save / Open
- Tabela lateral em memória no livro (v2.64.0+) O setter também regista o
(ThemeIdx, Tint) original em TXLSWorkbook.FDrawingThemeColors indexado por (ColorFormat._Container, ColorFormat._Pid). O leitor companheiro XlsGetDrawingThemeColor recupera esses valores no mesmo processo. Reatribuir o mesmo slot substitui a entrada, pelo que a tabela lateral acompanha a intenção mais recente em vez de acumular histórico
Por que razão é restrito a processo único. O OfficeArt BIFF8 codifica variantes de ColorRef indexada / RGB / esquema / sysColor em 4 bytes, mas não existe registo de extensão análogo ao XFExt $087D onde o tema poderia ser persistido no disco TXLSWorkbook instance with an empty side-table and XlsGetDrawingThemeColor returns False, falling through to ColorFormat.RGB
Exemplo
Recolore o preenchimento sólido de uma forma para o accent5 com uma tonalidade 25% mais escura e depois lê a intenção de tema de volta da tabela lateral do lado do livro. Após SaveAs / Open , o RGB é preservado mas a intenção de tema não é
var
Shape : TXLSShape;
ThemeIdx : Word;
Tint : Double;
begin
Shape := Workbook.Worksheets[1].Shapes.Items[0];
XlsApplyThemeColorToDrawing(Shape.Fill.ForeColor, Workbook, 8, - 0.25);
// Same process — the side-table still has the entry.
if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
then
ShowMessage(Format('theme=%d tint=%.2f', [ThemeIdx, Tint]));
Workbook.SaveAs('ThemedShape.xls', xlExcel97);
end;
Ver também