Enhed: lxHandle
Gendanner tema-idx + toning, som en kalder tidligere overgav til
XlsApplyThemeColorToDrawing
for en given drawing-farveplads. Returnerer
True med begge out-værdier udfyldt, når
projektmappens in-memory-sidetabel har en post for pladsen; returnerer
False
ellers, så kalderen kan falde igennem til
ColorFormat.RGB
Tilgængelig siden v2.64.0 (chart backlog wave D fase 7)
Syntaks
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parametre
ColorFormat — den drawing-farveplads, der skal forespørges (samme handle, som blev overgivet til XlsApplyThemeColorToDrawing)
Workbook — den overordnede TXLSWorkbook — sidetabellen lever på projektmappeinstansen, ikke på farvepladsen
ThemeIdx (out) — den registrerede 0-baserede temaplads, når funktionen returnerer True; ellers 0
Tint (out) — den registrerede toning i området -1.0 .. +1.0, når funktionen returnerer True; ellers 0
Bemærkninger
Sidetabellen er nøglet på (ColorFormat._Container, ColorFormat._Pid) — den samme nøgle, som setter'en bruger. Samme figur + samme egenskabs-id rammer altid den samme post, så efterfølgende XlsApplyThemeColorToDrawing-kald overskriver hinanden frem for at akkumulere historik
Enkeltproces-omfang. Sidetabellen serialiseres ikke til disk — BIFF8 OfficeArt har ingen temafarveplads i sit on-disk-format, så temahensigten selv kan ikke bevares, kun den opløste RGB kan. Efter SaveAs eller Open er projektmappen en frisk TXLSWorkbook-instans, hvis sidetabel er tom, og denne getter returnerer False for hver forespørgsel. Programkode, der har brug for vedvarende hensigt, bør holde sin egen tilstand ved siden af projektmappen
At kalde getter'en med en plads, der blev sat via almindelig ColorFormat.RGB (i stedet for XlsApplyThemeColorToDrawing), returnerer også False — der var ingen temahensigt at huske, RGB'en er kilden til sandheden
Eksempel
Går gennem det første regnearks figurer og skriver tema-idx + toning til loggen, når en er til stede, og falder tilbage til den rå RGB ellers
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;
Se også