Enhet: lxHandle
Återställer tema-idx + ton som en anropare tidigare skickade till
XlsApplyThemeColorToDrawing
för en given ritsida-färgplats. Returnerar
True med båda ut-värdena ifyllda när
arbetsbokens minnesinterna sidotabell har en post för platsen; returnerar
False
annars så att anroparen kan falla till
ColorFormat.RGB
Tillgänglig sedan v2.64.0 (chart backlog wave D fas 7)
Syntax
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parametrar
ColorFormat — ritsidans färgplats som ska efterfrågas (samma referens som skickades till XlsApplyThemeColorToDrawing)
Workbook — värd-TXLSWorkbook — sidotabellen lever på arbetsboksinstansen, inte på färgplatsen
ThemeIdx (ut) — den registrerade 0-baserade temaplatsen när funktionen returnerar True; 0 annars
Tint (ut) — den registrerade tonen i intervallet -1.0 .. +1.0 när funktionen returnerar True; 0 annars
Anmärkningar
Sidotabellen är nycklad med (ColorFormat._Container, ColorFormat._Pid) — samma nyckel som settern använder. Samma form + samma egenskaps-ID hamnar alltid på samma post, så efterföljande XlsApplyThemeColorToDrawing-anrop skriver över varandra i stället för att samla historik
Endast en process. Sidotabellen serialiseras inte till disk — BIFF8 OfficeArt har ingen temafärgsplats i sitt filformat, så själva temaavsikten kan inte bestå, endast den upplösta RGB-färgen kan. Efter SaveAs eller Open är arbetsboken en ny TXLSWorkbook-instans vars sidotabell är tom, och denna getter returnerar False för varje fråga. Programkod som behöver bestående avsikt bör hålla sitt eget tillstånd tillsammans med arbetsboken
Att anropa gettern med en plats som angavs via vanlig ColorFormat.RGB (i stället för XlsApplyThemeColorToDrawing) returnerar också False — det fanns ingen temaavsikt att komma ihåg, RGB är källan till sanning
Exempel
Går igenom det första kalkylbladets former och skriver tema-idx + ton till loggen när sådan finns, med fall till den råa RGB-färgen annars
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 även