Unidade: lxHandle
Recupera a posição de tema + tonalidade que um chamador transmitiu anteriormente para
XlsApplyThemeColorToDrawing
para uma determinada posição de cor do desenho. Devolve
True com ambos os valores de saída preenchidos quando a tabela lateral em memória do livro tem uma entrada para a posição; devolve
False
caso contrário, para que o chamador possa recorrer a
ColorFormat.RGB
. Disponível desde v2.64.0
Sintaxe
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parâmetros
ColorFormat — a posição de cor do desenho a consultar (mesmo identificador que foi passado para XlsApplyThemeColorToDrawing)
Workbook — o TXLSWorkbook anfitrião — a tabela lateral reside na instância do livro, não na posição de cor
ThemeIdx (saída) — a posição de tema de base 0 registada quando a função devolve True; 0 caso contrário
Tint (saída) — a tonalidade registada no intervalo -1.0 .. +1.0 quando a função devolve True; 0 caso contrário
Observações
A tabela lateral é indexada por (ColorFormat._Container, ColorFormat._Pid) — a mesma chave que o setter utiliza. A mesma forma + o mesmo id de propriedade aterra sempre na mesma entrada, pelo que chamadas XlsApplyThemeColorToDrawing sucessivas apenas actualizam o registo existente
Âmbito de processo único. A tabela lateral não é serializada para disco — o OfficeArt BIFF8 não tem uma posição de cor de tema no seu formato em disco, pelo que a intenção de tema em si não pode ser persistida, apenas o RGB resolvido SaveAs or Open, the workbook is a fresh TXLSWorkbook novo, cuja tabela lateral está vazia, e este getter devolve False para qualquer consulta. O código da aplicação que precise de intenção persistente deve manter o seu próprio estado junto ao livro
Chamar o getter com uma posição definida via ColorFormat.RGB simples (em vez de XlsApplyThemeColorToDrawing) também devolve False — não havia nenhuma intenção de tema registada
Exemplo
Percorre as formas da primeira folha de cálculo e escreve a posição de tema + tonalidade no registo quando uma está presente, recorrendo ao RGB bruto caso contrário
var
i : Integer;
Shape : TXLSShape;
ThemeIdx : Word;
Tint : Double;
begin
for i := 0 to Workbook.Worksheets[1].Shapes.Count - 1 do
begin
Shape := Workbook.Worksheets[1].Shapes.Items[i];
if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
then
LogLine(Format('shape %d: theme=%d tint=%.2f', [i, ThemeIdx, Tint]))
else
LogLine(Format('shape %d: rgb=%.8x', [i, Shape.Fill.ForeColor.RGB]));
end;
end;
Ver também