Timelines de tablas dinámicas y estados de datos de Slicers
Disponible desde la versión 2.384.98 para las tablas dinámicas locales no OLAP admitidas a través de la fachada de libros XLSX
Crear y conectar un 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 un caché validado de campos de fechas y sus identidades de paquete requeridas; una falla devuelve nil antes de confirmar el estado preparado
TXLSXWorkbook.TimelineCaches expone TXLSXTimelineCaches, con Count, Items[Index] basado en cero y FindByName sin distinguir mayúsculas; el libro es dueño de estos cachés
TXLSXTimelineCache.Name identifica el caché, SourceName identifica su campo de fuente y IsNonOlapPivot identifica el enlace validado admitido; los cachés importados no admitidos conservan su XML original
TXLSXTimelineCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer conecta otra vista de propiedad del mismo PivotCache con un campo de fechas compatible; devuelve 1 en caso de éxito, incluida una conexión existente, o -1 en caso de rechazo
TXLSXTimelineCache.SetDateRange(AStartDate, AEndDate: TDateTime): Integer usa extremos inclusivos de días completos y devuelve 1 o -1; los extremos deben ser fechas enteras desde el 1 de enero de 1900 hasta el 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 provocan rechazo, mientras que los valores de fuente de fechas pueden conservar hora del día y los registros a lo largo del día final seleccionado permanecen elegibles
TXLSXTimelineCache.SelectionActive, StartDate y EndDate exponen los límites activos; ClearSelection: Integer los limpia 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 los cachés de la fuente, no recalculan fórmulas ni reescriben las celdas existentes del reporte en la hoja
Vistas de Timelines y eliminación
TXLSXWorksheet.Timelines expone la colección TXLSXTimelines de propiedad de la hoja, con Add, FindByName, Items[Index] basado en cero, Count, Delete(Index) y Clear; la eliminación quita la UI conservando su caché y selección compartidos
TXLSXTimelines.Add(ACache: TXLSXTimelineCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXTimeline acepta un caché admitido de su propiedad y un rectángulo ordenado de la hoja basado en uno, devolviendo una vista de su propiedad o nil
TXLSXTimeline.Name es de solo lectura, Cache identifica su caché compartido, y Caption cambia la etiqueta de visualización; Level acepta 0 para años, 1 para trimestres, 2 para meses o 3 para días
TXLSXTimeline.SetBounds cambia el rectángulo basado en uno expuesto por FromRow, FromCol, ToRow y ToCol; la geometría inválida, los enlaces no admitidos o una geometría de dibujo agrupada lanzan una excepción antes de la mutación
TXLSXDrawingObject.Timeline devuelve la vista asociada para el tipo de dibujo xlsxDrawingTimeline; las transformaciones directas de dibujo no admitidas permanecen protegidas
Status := Workbook.RemoveTimelineCache(TimelineCache, xlsxSlicerPreserveCurrentSelection);
TXLSXWorkbook.RemoveTimelineCache(ACache: TXLSXTimelineCache; AMode: TXLSXSlicerRemovalMode): Integer prepara juntos los filtros conectados, 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ías completos únicamente cuando el campo de fechas ya está en un eje de fila o columna en cada vista conectada
Un campo de fechas sin usar o de solo página rechaza atómicamente la eliminación con preservación de selección; use la eliminación con limpieza explícita de selección cuando ese comportamiento sea el deseado
Los filtros importados se normalizan únicamente después de que cada conexión, espacio de nombres heredado y procedencia exacta de filtros de propiedad valide; los atributos o hijos opacos del mismo campo, los espacios de nombres ajenos, los enlaces externos y los grafos no admitidos de UI múltiple conservan su XML y provocan rechazo de mutación
La materialización nativa prepara la selección actual del Timeline junto con los metadatos y celdas del reporte, eliminando únicamente la firma exacta del filtro de propiedad guardado; las restricciones arbitrarias de devoluciones de llamada no tienen representación XML nativa y no pueden reproducirse con la actualización de Excel
El guardado OOXML conserva los tipos de relaciones nativas, las rutas originales y las extensiones no relacionadas; el guardado de caché exclusivo Strict provoca rechazo, la conversión ODS reporta la pérdida del Timeline y el subconjunto de valores y estilos XLSB rechaza los Timelines
Actualización explícita del estado de datos nativo de Slicers
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 ausencia de datos, y luego confirma bajo un 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 a través de las vistas conectadas admitidas
Los miembros históricos seleccionados sin registros elegibles reciben el indicador nativo de ausencia de datos conservando su selección; los IDs estables del caché, el orden original de elementos en el formato y el XML no relacionado permanecen intactos
El límite acumulativo predeterminado de pasos es 1000000; cero significa pasos sin límite, un valor negativo provoca rechazo 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 devoluciones de llamada, las vistas congeladas, los enlaces no admitidos, los presupuestos agotados o un estado de evaluación cambiado provocan rechazo antes de confirmar los indicadores; los cambios independientes del modelo común hechos por devoluciones de llamada del llamador siguen siendo cambios del llamador y provocan el rechazo de la actualización
TXLSXSlicerCache.CrossFilter lee y escribe la configuración nativa tabular de filtro cruzado bajo el guardián de mutación; showItemsWithDataAtTop habilita el ordenamiento nativo con datos primero sin reescribir el orden de elementos en el formato
ItemHasData sigue siendo una consulta de solo lectura; el guardado no llama al evaluador ni actualiza implícitamente los indicadores de ausencia de datos, así que llame a RefreshItemDataStates explícitamente antes de guardar cuando el estado nativo de la UI deba actualizarse
Semántica avanzada de filtros de fechas
TXLSPivotFilter.UseWholeDay solicita comparaciones de fechas de días completos 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
Consulte la salida nativa de tablas dinámicas y la disponibilidad de Slicers de solo lectura y el ciclo de vida del caché local y de Slicers para conocer los contratos circundantes de actualización y propiedad