Ciclo de vida de la caché de tabla dinámica local y diseño nativo
La versión 2.384.94 añade vistas de caché compartida, creación y eliminación explícita de Slicers Pivot locales que no son OLAP, reconstrucción de cachés agrupadas y un generador acotado de metadatos de diseño nativo
Vistas compartidas y creación de Slicers
SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);
TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable crea otra vista de una caché propiedad de este libro; valida propiedad, geometría y nombres antes de adjuntar la vista
TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache crea o reutiliza con seguridad una caché de campo de origen admitida, mientras que TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer conecta una vista local existente de caché compartida
TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer crea la UI de la hoja usando límites de celda explícitos inclusivos de base uno; los nombres del origen, las partes de caché, las referencias de dibujo y la pertenencia a vistas se preparan antes de la mutación
Los orígenes de Slicer agrupados, calculados y OLAP, las cachés ajenas, los dominios importados incoherentes y las máscaras ambiguas e independientes del mismo campo se rechazan; el XML de vista importado admitido conserva las extensiones no relacionadas cuando se añade una UI nueva
Eliminación explícita y miembros futuros
if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
raise Exception.Create('The Slicer cache could not be removed');
TXLSXSlicerRemovalMode tiene xlsxSlicerClearSelection y xlsxSlicerPreserveCurrentSelection; TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer elimina juntas la UI vinculada, las referencias de dibujo, las partes nativas de caché y las conexiones
El modo clear elimina esta restricción del Slicer conservando los filtros independientes y los predicados del llamador; el modo preserve transfiere su restricción actual a máscaras ordinarias de miembros de tabla dinámica antes de eliminar el Slicer
La operación devuelve 1 si tiene éxito y -1 para vinculaciones no admitidas o inseguras; todas las vistas afectadas y el estado de la caché se validan y preparan antes de confirmar, y la ambigüedad de propiedad del mismo campo se rechaza sin suponer nada
TXLSPivotField.IncludeNewItemsInFilter: Boolean tiene por defecto False; un subconjunto manual retenido excluye los miembros recién añadidos salvo que esta política se active explícitamente, mientras que un campo sin restricciones los incluye
La selección preservada por tanto permanece estable tras el crecimiento del origen, mientras que el modo clear incluye los nuevos miembros del origen; las listas de miembros importadas y escritas serializan la misma política de ocultación de miembros futuros
Las operaciones existentes Delete y Clear de colecciones siguen protegiendo una última vista de Slicer vinculada; usa la operación explícita del libro cuando la caché y sus restricciones conectadas deban eliminarse juntas
Reconstrucción de cachés agrupadas fijas
La actualización prepara las identidades de grupos numéricos, de fechas y discretos explícitos a partir de enlaces base/padre validados, incluidos los campos derivados importados cuyas columnas de registro están ausentes; los campos del origen de solo enlace conservan sus valores originales en lugar de agruparse ellos mismos
Los dominios admitidos retienen los manejadores de miembros existentes, los rótulos y los ordinales de grupo; la agrupación numérica y de fechas usa una resolución por campo y un dominio nativo fijo de elementos de grupo, y la agrupación de fechas exige un intervalo de uno
TXLSPivotCacheField.GroupAutoStart y TXLSPivotCacheField.GroupAutoEnd tienen por defecto True y preservan la política de límites importada; los nuevos valores que exijan expansión del dominio o reagrupación se rechazan antes de la mutación
Los grupos discretos exigen una asignación existente para cada miembro del origen; los padres cíclicos, los dominios con tipo no válidos, los rótulos de cadena no únicos, las bases calculadas, los campos de propiedad de miembro y las resoluciones de padre no admitidas se rechazan transaccionalmente
El Make ordinario reconstruye los valores derivados de registro obsoletos o ausentes admitidos, mientras que MakePreview lo hace solo sobre una copia desacoplada; al guardar se omiten los elementos compartidos internos de marcador de los dominios nativos derivados y se emiten exactamente los índices de elementos de grupo declarados
Vista previa de metadatos de diseño nativo
function TryXLSXGeneratePivotLayout(const Xml: WideString; Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;
El helper lxPivotXml prepara rowItems, colItems, metadatos de ejes y ubicación para las vistas locales compactas admitidas no vacías usando identidades exactas de campos y miembros de caché; admite jerarquías ordinarias, subtotales por defecto arriba o abajo y cualquiera de los dos ejes de datos
Esta operación de solo metadatos exige un Cache.RefreshOnLoad=True explícito; preserva el XML desconocido y devuelve el XML original más un motivo en inglés cuando campos agrupados o calculados, subtotales personalizados, un diseño no admitido o identidades importadas incoherentes no pueden representarse
El helper no reescribe las celdas de la hoja ni cambia los indicadores de la tabla activa; los llamadores que necesiten salida de hoja en caché deben aportar un escritor adecuado y una operación de materialización admitida por separado
TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer aporta callbacks de diseño síncronos desde una vista previa desacoplada, conservando la identidad original de EvaluationSourceTable
TlxPivotLayoutWriter recibe la tabla original, el eje de fila/columna, los vectores copiados de índice de campo y de índice de elemento de caché, TlxPivotLayoutItemKind, el tipo de subtotal y la longitud del prefijo; xlplikData, xlplikSubtotal y xlplikGrand distinguen identidades agregadas sin analizar rótulos
Los vectores usan TlxPivotLayoutIndices y son válidos durante el callback; las excepciones se propagan, y el comportamiento existente de Make y del MakePreview de un solo escritor sigue disponible
TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) reserva capacidad de la colección antes de la transferencia de propiedad y soporta la adjunción transaccional interna de vistas; las aplicaciones normalmente deben usar los métodos de creación de la hoja
Límites
La versión 2.384.95 añade la salida nativa de hoja en caché, la disponibilidad de filtro cruzado de solo lectura y la purga explícita de miembros históricos; la visualización nativa serializada sin datos, la creación de Timelines y una serialización de diseño agrupado más amplia conservan límites de aceptación separados