Selezione dei Slicer pivot non-OLAP
La versione 2.384.88 aggiunge la selezione tipizzata dei membri alle cache dei Slicer pivot non-OLAP importate che possono essere legate a campi ordinari della cache locale e alle loro viste di tabella pivot collegate
Ispezionare e modificare una selezione
SlicerCache := Workbook.SlicerCaches.FindByName('SlicerCategory');
if (SlicerCache = nil) or not SlicerCache.IsNonOlapPivot then
raise Exception.Create('A non-OLAP Pivot Slicer cache is required');
if SlicerCache.SetSelectedItems([1]) <> 1 then
raise Exception.Create('Slicer selection could not be changed');
TXLSXSlicerCache.IsNonOlapPivot identifica la forma pivot tabellare; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex e TXLSXSlicerCache.ItemSelected espongono la lista dei membri analizzata e la selezione
Le posizioni nella lista dei membri sono a base zero; ogni ItemCacheIndex identifica uno shared member nel campo della cache pivot collegata, quindi membri numerici, testuali, Boolean, di data, vuoti ed errore conservano identità separate anche quando il loro testo mostrato coincide
TXLSXSlicerCacheItem memorizza un CacheItemIndex: Integer e uno Selected: Boolean; TXLSXSlicerCacheItems è il suo tipo di array dinamico, mentre la cache espone la selezione tramite proprietà indicizzate in sola lettura
TXLSXSlicerCache.SetSelectedItems accetta indici di shared member e restituisce 1 in caso di successo o -1 per binding non supportati, non validi o non sicuri; una selezione vuota viene rifiutata perché il formato di file richiede almeno un membro selezionato
TXLSXSlicerCache.ClearSelection restituisce la stessa convenzione di stato e seleziona tutti i membri; rimuove questo vincolo del Slicer conservando le restrizioni indipendenti sugli altri campi
Viste condivise e filtri esistenti
I membri selezionati dentro una cache Slicer formano un'unione; le cache Slicer applicabili si intersecano per ogni vista esplicitamente collegata, anche quando il campo selezionato è assente dagli assi mostrati di quella vista; più viste UI Slicer di una stessa cache condividono la stessa selezione
Chiama TXLSPivotTable.Make con il writer dei risultati dell'applicazione per calcolare i risultati correnti; le modifiche alla selezione della cache non riscrivono le celle del foglio né rigenerano ogni layout nativo importato
Excel memorizza le selezioni dei Slicer non-OLAP come occultamento ordinario dei membri pivot e selezione di pagina; il formato non registra quale operazione abbia creato un singolo flag nascosto
Prima di modificare un binding importato, HotXLS valida che le sue vecchie maschere nascosto e pagina dello stesso campo corrispondano alla vecchia selezione effettiva del Slicer; le maschere corrispondenti vengono trattate come gestite dal Slicer, mentre maschere incoerenti o ambigue vengono rifiutate senza tirare a indovinare; i filtri manuali, di pagina e avanzati sugli altri campi restano attivi
Salvataggio e aggiornamento della sorgente
Il salvataggio aggiorna insieme la selezione del Slicer e le maschere dei membri pivot collegati, conserva i namespace XML importati e le estensioni sconosciute e rimappa le connessioni ai fogli alle loro identità salvate; gli identificatori estesi della cache Slicer restano distinti dagli identificatori ordinari delle cache pivot del workbook
L'aggiornamento locale della cache pivot conserva gli indici degli shared member selezionati; i sottoinsiemi espliciti escludono i nuovi membri, mentre le selezioni azzerate consentono il dominio aggiornato completo
Confini e comportamento in caso di errore
Le modifiche alla selezione validano tutte le viste e i membri collegati prima del commit e usano la guardia di mutazione del workbook; un fallimento preserva la selezione esistente, le restrizioni delle viste e l'XML originale
Anche aggiungere, eliminare e svuotare cache Slicer usa la guardia di scrittura del workbook; una vista del workbook bloccata non può cambiare i risultati pivot collegati tramite mutazioni delle collezioni
Eliminare una cache pivot non-OLAP collegata, o svuotare una collezione che la contiene, viene rifiutato prima della mutazione; l'operazione esplicita del ciclo di vita RemoveSlicerCache rimuove le sue viste native e azzera la selezione o la trasferisce alle maschere pivot ordinarie
Selezione OLAP e di cache a tabella, campi sorgente raggruppati o calcolati, connessioni mancanti, domini incoerenti e maschere importate ambigue sullo stesso campo restano fuori da questa operazione; i contenuti della cache non supportati conservano la loro rappresentazione originale
Questa API di selezione gestisce le cache Slicer pivot importate e create dall'autore in modo supportato; la creazione di viste condivise e la rimozione esplicita della cache sono disponibili nella 2.384.94; la materializzazione sicura nel foglio può sostituire l'output calcolato supportato, mentre la valutazione della visualizzazione cross-filter senza dati resta un lavoro separato
Eliminare l'ultima vista UI di una cache non-OLAP collegata viene rifiutato prima di cambiarne disegno, vista o cache; eliminare una tra più viste UI conserva la cache condivisa e la selezione
Svuotare le viste Slicer di un foglio di lavoro controlla ogni cache interessata prima di rimuovere qualunque vista; un'ultima vista collegata causa un rifiuto atomico, mentre le viste condivise con altri fogli conservano la loro cache e selezione
Filtri aggiuntivi sui record
TlxPivotRecordFilter = function(ATable: TXLSPivotTable; ARecordIndex: Integer): Boolean of object; procedure TXLSPivotTable.SetRecordFilter(AOwner: TObject; AFilter: TlxPivotRecordFilter); procedure TXLSPivotTable.ClearRecordFilter(AOwner: TObject); property TXLSPivotTable.ExternalRecordFilter: TlxPivotRecordFilter;
TXLSPivotTable.SetRecordFilter registra o sostituisce una callback per ogni proprietario non nil, e TXLSPivotTable.ClearRecordFilter rimuove la callback di quel proprietario; passare una callback nil a SetRecordFilter la rimuove comunque
Le callback registrate e la TXLSPivotTable.ExternalRecordFilter opzionale si intersecano prima dei filtri e dell'aggregazione propri della tabella; il workbook registra la sua callback dei Slicer indipendentemente, quindi non sovrascrive il predicato del chiamante
Le callback ricevono indici di record a base zero, vengono scattate a snapshot a ogni chiamata di Make e non vengono serializzate né copiate da AssignPivotOnly; i proprietari e i target delle callback restano di proprietà del chiamante e devono sopravvivere alla loro registrazione