Unidade: lxHandle
Aplica um dos 12 slots de cor de tema do Office (mais uma matiz opcional) a um slot de cor de desenho
TXLSColorFormat — o mesmo identificador que
FillFormat.ForeColor e
LineFormat.ForeColor expõem em formas e elementos de gráfico. Disponível desde v2.62.0 (onda D da lista de pendências de gráfico, fase 5). A v2.64.0 (fase 7) adicionou uma tabela auxiliar na memória em nível de pasta de trabalho para que uma chamada subsequente a
XlsGetDrawingThemeColor dentro do mesmo processo possa recuperar o índice e a matiz de tema original
Use este auxiliar quando a aplicação quiser que preenchimentos de gráfico, cores de linha de gráfico ou preenchimentos de formas acompanhem a paleta de temas da pasta de trabalho da mesma forma que as células fazem por meio de
Interior.SetThemeColor
Sintaxe
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
Parâmetros
Workbook — o TXLSWorkbook hospedeiro. Necessário para resolver a paleta de temas e para manter a tabela auxiliar na memória
ThemeIdx — slot de tema baseado em 0 (0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — ajuste de clareamento/escurecimento no estilo da especificação no intervalo -1.0 .. +1.0
Observações
O auxiliar realiza duas gravações por chamada
- OfficeArt opt blob (no disco). O índice de tema + tom é resolvido pela paleta de tema BIFF da pasta de trabalho em um RGB concreto e gravado no slot de cor do desenho. O OfficeArt do BIFF8 é um formato binário pré-Office-2007 sem codificação nativa de cor de tema, então esta é a única parte que sobrevive ao Save / Open
- Tabela auxiliar em memória na pasta de trabalho (v2.64.0+). O setter também registra o
(ThemeIdx, Tint) original em TXLSWorkbook.FDrawingThemeColors indexado por (ColorFormat._Container, ColorFormat._Pid). O leitor complementar XlsGetDrawingThemeColor recupera esses valores dentro do mesmo processo. Reconfigurar o mesmo slot substitui a entrada, então a tabela auxiliar acompanha a intenção mais recente em vez de acumular histórico
Por que apenas em processo único. O ColorRef de 4 bytes OfficeArt do BIFF8 codifica variantes indexadas/RGB/esquema/sysColor, mas não há registro de extensão análogo ao XFExt $087D onde o índice e a matiz de tema poderiam persistir. Portanto, a limitação no round-trip de Save/Open é estrutural ao formato de arquivo, não uma lacuna do HotXLS. Após recarregar, a pasta de trabalho é uma nova instância de TXLSWorkbook com uma tabela auxiliar vazia e XlsGetDrawingThemeColor retorna False, recorrendo a ColorFormat.RGB
Exemplo
Recolore o preenchimento sólido de uma forma para accent5 com uma matiz 25% mais escura, depois lê o intento de tema de volta da tabela auxiliar da pasta de trabalho para exibição em um painel de propriedades. Após SaveAs / Open a tabela auxiliar começa vazia novamente, de modo que os chamadores que precisam de intento persistente devem manter seu próprio estado
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;
Veja também