Unité : lxHandle
Récupère l'idx + la teinte du thème qu'un appelant a précédemment passés à
XlsApplyThemeColorToDrawing
pour un emplacement de couleur de dessin donné. Renvoie
True avec les deux valeurs de sortie renseignées lorsque
la table secondaire en mémoire du classeur contient une entrée pour l'emplacement ; renvoie
False
sinon, afin que l'appelant puisse retomber sur
ColorFormat.RGB
Disponible depuis v2.64.0 (vague D du backlog de graphiques, phase 7)
Syntaxe
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Paramètres
ColorFormat — l'emplacement de couleur de dessin à interroger (le même handle qui a été passé à XlsApplyThemeColorToDrawing)
Workbook — le TXLSWorkbook hôte — la table secondaire vit sur l'instance du classeur, pas sur l'emplacement de couleur
ThemeIdx (out) — l'emplacement de thème à base 0 enregistré lorsque la fonction renvoie True ; 0 sinon
Tint (out) — la teinte enregistrée dans la plage -1.0 .. +1.0 lorsque la fonction renvoie True ; 0 sinon
Remarques
La table secondaire est indexée par (ColorFormat._Container, ColorFormat._Pid) — la même clé que celle utilisée par le setter. La même forme + le même identifiant de propriété tombent toujours sur la même entrée, de sorte que les appels successifs à XlsApplyThemeColorToDrawing s'écrasent mutuellement plutôt que d'accumuler un historique
Portée mono-processus. La table secondaire n'est pas sérialisée sur disque — BIFF8 OfficeArt ne possède aucun emplacement de couleur de thème dans son format sur disque, donc l'intention de thème elle-même ne peut pas être persistée, seul le RGB résolu l'est. Après SaveAs ou Open, le classeur est une nouvelle instance de TXLSWorkbook dont la table secondaire est vide, et ce getter renvoie False pour chaque requête. Le code d'application qui a besoin d'une intention persistante doit conserver son propre état aux côtés du classeur
Appeler le getter avec un emplacement défini via un simple ColorFormat.RGB (au lieu de XlsApplyThemeColorToDrawing) renvoie également False — il n'y avait aucune intention de thème à mémoriser, le RGB est la source de vérité
Exemple
Parcourt les formes de la première feuille de calcul et écrit l'idx + la teinte du thème dans le journal lorsqu'une entrée est présente, en retombant sur le RGB brut sinon
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;
Voir aussi