Unit: lxHandle
Stellt den Themen-Idx + Tönung wieder her, der zuvor vom Aufrufer an
XlsApplyThemeColorToDrawing
für einen bestimmten Zeichnungsfarb-Slot übergeben wurde. Gibt
True mit beiden Ausgabewerten zurück, wenn
die In-Memory-Seitentabelle der Arbeitsmappe einen Eintrag für den Slot hat; gibt
False zurück
andernfalls, sodass der Aufrufer auf
ColorFormat.RGB zurückfallen kann
Verfügbar seit v2.64.0 (Diagramm-Backlog Wave D Phase 7)
Syntax
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parameter
ColorFormat — der abzufragende Zeichnungsfarb-Slot (dasselbe Handle, das an XlsApplyThemeColorToDrawing übergeben wurde)
Workbook — die Host-TXLSWorkbook — die Seitentabelle befindet sich auf der Workbook-Instanz, nicht auf dem Farb-Slot
ThemeIdx (Ausgabe) — der aufgezeichnete 0-basierte Themen-Slot, wenn die Funktion True zurückgibt; 0 andernfalls
Tint (Ausgabe) — die aufgezeichnete Tönung im Bereich -1.0 .. +1.0, wenn die Funktion True zurückgibt; 0 andernfalls
Hinweise
Die Seitentabelle ist nach (ColorFormat._Container, ColorFormat._Pid) indiziert — derselbe Schlüssel, den der Setter verwendet. Dieselbe Form + dieselbe Eigenschafts-ID landet immer auf demselben Eintrag, sodass aufeinanderfolgende XlsApplyThemeColorToDrawing-Aufrufe sich gegenseitig überschreiben, anstatt eine Geschichte anzuhäufen
Einzelprozess-Bereich. Die Seitentabelle wird nicht auf der Festplatte serialisiert — BIFF8 OfficeArt hat keinen Themenfarb-Slot in seinem On-Disk-Format, sodass die Themen-Absicht selbst nicht gespeichert werden kann, nur der aufgelöste RGB. Nach SaveAs oder Open ist die Arbeitsmappe eine neue TXLSWorkbook-Instanz, deren Seitentabelle leer ist, und dieses Getter gibt False für jede Abfrage zurück. Anwendungscode, der eine dauerhafte Absicht benötigt, sollte seinen eigenen Zustand neben der Arbeitsmappe halten
Das Aufrufen des Getters mit einem Slot, der über einfaches ColorFormat.RGB (anstatt XlsApplyThemeColorToDrawing) gesetzt wurde, gibt ebenfalls False zurück — es gab keine Themen-Absicht zu merken, RGB ist die Wahrheitsquelle
Beispiel
Durchläuft die Formen des ersten Tabellenblatts und schreibt den Themen-Idx + Tönung ins Protokoll, wenn einer vorhanden ist, fällt andernfalls auf den rohen RGB zurück
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;
Siehe auch