Timelines de tabla dinámica y estados de datos de Slicer
Disponible desde la versión 2.384.98 para las tablas dinámicas locales admitidas que no son OLAP a través de la fachada del libro XLSX
Crear y conectar una Timeline
TimelineCache := Workbook.CreatePivotTimelineCache(Pivot, 'EventDate');
if TimelineCache = nil then
raise Exception.Create('The Timeline cache was rejected');
TimelineView := ReportSheet.Timelines.Add(TimelineCache, 2, 7, 7, 12);
if TimelineView = nil then
raise Exception.Create('The Timeline view was rejected');
if TimelineCache.SetDateRange(EncodeDate(2026, 1, 1),
EncodeDate(2026, 1, 31)) < 0 then
raise Exception.Create('The Timeline selection was rejected');
TXLSXWorkbook.CreatePivotTimelineCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXTimelineCache crea o reutiliza una caché de campo de fecha validada y sus identidades de paquete necesarias; un fallo devuelve nil antes de confirmar el estado preparado
TXLSXWorkbook.TimelineCaches expone TXLSXTimelineCaches, con Count, Items[Index] de base cero y FindByName sin sensibilidad a mayúsculas; el libro es propietario de estas cachés
TXLSXTimelineCache.Name identifica la caché, SourceName identifica su campo de origen y IsNonOlapPivot identifica la vinculación admitida validada; las cachés importadas no admitidas conservan su XML original
TXLSXTimelineCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer conecta otra vista propia del mismo PivotCache con un campo de fecha compatible; devuelve 1 si tiene éxito, incluida una conexión existente, o -1 si se rechaza
TXLSXTimelineCache.SetDateRange(AStartDate, AEndDate: TDateTime): Integer usa extremos de día completo inclusivos y devuelve 1 o -1; los extremos deben ser fechas íntegras del 1 de enero de 1900 al 31 de diciembre de 9999 en orden ascendente
El libro admitido usa el sistema de fechas 1900; la creación con Date1904 y los extremos de selección fraccionarios se rechazan, mientras que los valores de fecha del origen pueden conservar la hora del día y los registros a lo largo del día final seleccionado siguen siendo elegibles
TXLSXTimelineCache.SelectionActive, StartDate y EndDate exponen los límites activos; ClearSelection: Integer los despeja sin cambiar otros filtros y devuelve 1 o -1
Las selecciones se intersectan con otros Slicers, los filtros manuales o de página y los predicados del llamador; estas operaciones no actualizan las cachés del origen, no recalculan fórmulas ni reescriben las celdas existentes del informe de la hoja
Vistas de Timeline y eliminación
TXLSXWorksheet.Timelines expone la colección TXLSXTimelines propiedad de la hoja, con Add, FindByName, Items[Index] de base cero, Count, Delete(Index) y Clear; la eliminación quita la UI conservando su caché y selección compartidas
TXLSXTimelines.Add(ACache: TXLSXTimelineCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXTimeline acepta una caché admitida propia y un rectángulo de hoja ordenado de base uno, devolviendo una vista propia o nil
TXLSXTimeline.Name es de solo lectura, Cache identifica su caché compartida y Caption cambia la etiqueta mostrada; Level acepta 0 para años, 1 para trimestres, 2 para meses o 3 para días
TXLSXTimeline.SetBounds cambia el rectángulo de base uno expuesto por FromRow, FromCol, ToRow y ToCol; la geometría no válida, las vinculaciones no admitidas o una geometría de dibujo agrupada lanzan antes de la mutación
TXLSXDrawingObject.Timeline devuelve la vista asociada para el tipo de dibujo xlsxDrawingTimeline; las transformaciones de dibujo directas no admitidas siguen estando protegidas
Status := Workbook.RemoveTimelineCache(TimelineCache, xlsxSlicerPreserveCurrentSelection);
TXLSXWorkbook.RemoveTimelineCache(ACache: TXLSXTimelineCache; AMode: TXLSXSlicerRemovalMode): Integer prepara juntas las conexiones de filtros, la UI, los nombres y la limpieza del paquete y devuelve 1 o -1
xlsxSlicerClearSelection elimina la selección; xlsxSlicerPreserveCurrentSelection retiene una selección activa como comparación de fechas de día completo solo cuando el campo de fecha ya está en un eje de fila o columna en todas las vistas conectadas
Un campo de fecha sin uso o de solo página rechaza atómicamente la eliminación que preserva la selección; usa la eliminación con despeje explícito de selección cuando ese comportamiento es el previsto
Los filtros importados solo se normalizan después de validar cada conexión, espacio de nombres heredado y procedencia exacta del filtro propio; los atributos u hijos opacos del mismo campo, los espacios de nombres ajenos, las vinculaciones externas y los grafos no admitidos de UI múltiple conservan su XML y rechazan la mutación
La materialización nativa prepara la selección actual de la Timeline con los metadatos y celdas del informe, eliminando solo la firma exacta del filtro propio guardado; las restricciones arbitrarias de callbacks no tienen representación XML nativa y no pueden reproducirse con la actualización de Excel
El guardado OOXML preserva los tipos de relación nativos, las rutas originales y las extensiones no relacionadas; el guardado Strict de solo caché se rechaza, la conversión ODS informa la pérdida de la Timeline y el subconjunto de valores y estilos XLSB rechaza las Timelines
Actualización explícita del estado de datos de Slicers nativos
function TXLSXSlicerCache.RefreshItemDataStates: Integer; overload; function TXLSXSlicerCache.RefreshItemDataStates( AMaxEvaluationSteps: Integer; ACancelFlag: PBoolean = nil): Integer; overload;
La operación evalúa y prepara el vector nativo completo de sin datos y después confirma bajo el guardián de escritura del libro; el éxito devuelve 1, el rechazo devuelve -1 sin cambiar los indicadores serializados de elementos ni las selecciones
Ignora la propia selección de este Slicer mientras intersecta las selecciones de otros Slicers y Timelines, los filtros manuales o de página, los filtros agregados admitidos y los predicados del llamador; la disponibilidad es la unión entre las vistas conectadas admitidas
Los miembros históricos seleccionados sin registros elegibles reciben el indicador nativo de sin datos conservando su selección; los IDs estables de caché, el orden original de elementos en la interfaz y el XML no relacionado permanecen intactos
El límite acumulativo de pasos por defecto es 1000000; cero significa pasos sin límite, un valor negativo se rechaza y FormulaArrayMemoryLimit acota de forma acumulativa la preparación de metadatos más todas las vistas previas de vistas conectadas
La cancelación, las excepciones o la reentrada de callbacks, las vistas inmovilizadas, las vinculaciones no admitidas, los presupuestos agotados o un estado de evaluación cambiado se rechazan antes de confirmar los indicadores; los cambios independientes del modelo común hechos por callbacks del llamador siguen siendo cambios del llamador y provocan el rechazo de la actualización
TXLSXSlicerCache.CrossFilter lee y escribe el ajuste nativo de filtro cruzado tabular bajo el guardián de mutación; showItemsWithDataAtTop activa el orden nativo de datos primero sin reescribir el orden de elementos en la interfaz
ItemHasData sigue siendo una consulta de solo lectura; al guardar no se llama al evaluador ni se actualizan implícitamente los indicadores de sin datos, así que llama a RefreshItemDataStates explícitamente antes de guardar cuando el estado de la UI nativa deba actualizarse
Semántica avanzada de filtros de fechas
TXLSPivotFilter.UseWholeDay solicita comparaciones de fechas de día completo para los filtros de fechas admitidos; las selecciones preservadas generadas por Timelines lo usan, mientras que los filtros de fechas ordinarios conservan su comportamiento anterior sensible a la hora
Consulta la salida Pivot nativa y la disponibilidad de Slicers de solo lectura y el ciclo de vida local de cachés y Slicers para los contratos de actualización y propiedad circundantes