Documentação do HotXLS

Função XlsApplyThemeColorToDrawing

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.SetThemeColor

Sintaxe

procedure XlsApplyThemeColorToDrawing(
  ColorFormat: TXLSColorFormat;
  Workbook   : TXLSWorkbook;
  ThemeIdx   : Word;
  Tint       : Double);

Parâmetros

ColorFormat — a posição de cor do desenho a actualizar. Tipicamente o ForeColor de um TXLSFillFormat ou TXLSLineFormat
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:
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
Para cores de célula que fazem viagem de ida e volta através de Save / Open, utilize o método dedicado IXLSInterior.SetThemeColor / IXLSFont.SetThemeColor / IXLSBorder.SetThemeColor em vez disso — tiram partido do registo lateral de cores ricas XFExt $087D para fazer o round-trip do theme idx + tint verbatim através do Excel 2007+

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