Unidad: lxHandle
Recupera el índice de tema + tinte que un llamador pasó previamente a
XlsApplyThemeColorToDrawing para una ranura de color de dibujo determinada. Devuelve
True con ambos valores de salida rellenados cuando la tabla lateral en memoria del libro de trabajo tiene una entrada para la ranura; devuelve
False en caso contrario para que el llamador pueda recurrir a
ColorFormat.RGB. Disponible desde la versión v2.64.0
Sintaxis
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parámetros
ColorFormat — la ranura de color de dibujo a consultar (el mismo identificador que se pasó a XlsApplyThemeColorToDrawing)
Workbook — el TXLSWorkbook anfitrión — la tabla lateral se ubica en la instancia del libro de trabajo, no en la ranura de color
ThemeIdx (salida) — la ranura de tema basada en 0 registrada cuando la función devuelve True; 0 en caso contrario
Tint (salida) — el tinte registrado en el rango -1.0 .. +1.0 cuando la función devuelve True; 0 en caso contrario
Observaciones
La tabla lateral está indexada por (ColorFormat._Container, ColorFormat._Pid) — la misma clave que usa el setter. La misma forma + el mismo ID de propiedad siempre cae en la misma entrada, por lo que las llamadas sucesivas a XlsApplyThemeColorToDrawing se sobrescriben mutuamente en lugar de acumular historial
Alcance de un solo proceso. La tabla lateral no se serializa en disco — BIFF8 OfficeArt no tiene ninguna ranura de color de tema en su formato en disco, por lo que la intención del tema en sí no puede persistir, solo el RGB resuelto. Después de SaveAs u Open, el libro de trabajo es una instancia nueva de TXLSWorkbook cuya tabla lateral está vacía, y este getter devuelve False para toda consulta
Llamar al getter con una ranura que se estableció mediante ColorFormat.RGB simple (en lugar de XlsApplyThemeColorToDrawing) también devuelve False — no había ninguna intención de tema que recordar, el RGB es la fuente de verdad
Ejemplo
Recorre las formas de la primera hoja de cálculo y escribe el índice de tema + tinte en el registro cuando uno está presente, recurriendo al RGB sin procesar en caso contrario
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;
Véase también