Documentación de HotXLS

Funcion XlsGetDrawingThemeColor

Unidad: lxHandle
Recupera el ThemeIdx y el Tint que un llamador paso previamente a XlsApplyThemeColorToDrawing para una ranura de color de dibujo dada XlsApplyThemeColorToDrawing for a given drawing color slot. Returns True con ambos valores de salida rellenos cuando la tabla lateral en memoria del libro tiene una entrada para la ranura; devuelve False en caso contrario, para que el llamador pueda continuar con ColorFormat.RGB Disponible desde v2.64.0 (chart backlog wave D phase 7)

Sintaxis

function XlsGetDrawingThemeColor(
  ColorFormat : TXLSColorFormat;
  Workbook    : TXLSWorkbook;
  out ThemeIdx: Word;
  out Tint    : Double): Boolean;

Parametros

ColorFormat — la ranura de color del dibujo que se quiere consultar (el mismo handle que se pasó a XlsApplyThemeColorToDrawingColorFormat: la ranura de color del dibujo a consultar (el mismo identificador que se paso a XlsApplyThemeColorToDrawing)
Workbook — the host TXLSWorkbook Workbook: el TXLSWorkbook anfitrion; la tabla lateral reside en la instancia del libro de trabajo
ThemeIdx (out) — la ranura de tema basada en 0 registrada cuando la función devuelve True; 0 ThemeIdx (salida): la ranura de tema de base 0 registrada cuando la funcion devuelve True; 0 en caso contrario
Tint (out) — el matiz registrado, en el rango -1.0 .. +1.0 when the function returns True; 0 Tint (salida): el matiz registrado en el rango -1.0 a +1.0 cuando la funcion devuelve True; 0 en caso contrario

Observaciones

La tabla lateral tiene como clave (ColorFormat._Container, ColorFormat._Pid). La misma ranura de color compartida entre multiples llamadas al setter sobrescribe la entrada anterior (ColorFormat._Container, ColorFormat._Pid) — la misma clave que usa el setter. La misma forma + el mismo id de propiedad siempre acaban en la misma entrada, así que las sucesivas llamadas a XlsApplyThemeColorToDrawing se sobrescriben entre sí en lugar de acumular historial
Single-process scope. La tabla lateral no se serializa a disco — el OfficeArt de BIFF8 no tiene ranura de color de tema en su formato en disco, así que la intención de tema en sí no se puede persistir, solo se persiste el RGB resuelto. Después de SaveAs or Open, the workbook is a fresh TXLSWorkbook recién creado, con la tabla lateral vacía, y este getter devuelve False en cada consulta. El código de la aplicación que necesite conservar la intención de forma persistente debe mantener su propio estado junto al libro
Ambito de proceso unico: la tabla lateral no se serializa en disco, BIFF8 OfficeArt no tiene ranura de color de tema en su registro de opciones ColorRef ColorFormat.RGB (instead of XlsApplyThemeColorToDrawing) also returns False Llamar al getter con una ranura establecida mediante ColorFormat.RGB simple devuelve False

Ejemplo

Recorre las formas de la primera hoja de trabajo y escribe el ThemeIdx y el Tint en el registro

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;

Vease tambien