Niet-OLAP Pivot Slicer-selectie
Versie 2.384.88 voegt getypeerde ledenselectie toe aan geïmporteerde niet-OLAP Pivot Slicer-caches die aan gewone lokale cachevelden en hun gekoppelde draaitabelweergaven kunnen worden gebonden
Een selectie inspecteren en wijzigen
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 identificeert de tabellaire Pivot-vorm; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex en TXLSXSlicerCache.ItemSelected stellen de geparseerde ledenlijst en selectie beschikbaar
Posities in de ledenlijst zijn zero-based; elke ItemCacheIndex identificeert een gedeeld lid in het gebonden Pivot-cacheveld, dus getal-, tekst-, Boolean-, datum-, lege en foutleden blijven onderscheiden, ook wanneer hun weergegeven tekst gelijk is
TXLSXSlicerCacheItem bewaart een CacheItemIndex: Integer en Selected: Boolean; TXLSXSlicerCacheItems is het dynamische-array-type, terwijl de cache de selectie beschikbaar stelt via alleen-lezen geïndexeerde eigenschappen
TXLSXSlicerCache.SetSelectedItems neemt gedeeld-leden-indices aan en geeft 1 terug bij succes of -1 bij niet-ondersteunde, ongeldige of onveilige bindingen; een lege selectie wordt geweigerd omdat het bestandsformaat minstens één geselecteerd lid vereist
TXLSXSlicerCache.ClearSelection volgt dezelfde statusconventie en selecteert alle leden; het verwijdert deze Slicer-beperking terwijl onafhankelijke beperkingen op andere velden behouden blijven
Gedeelde weergaven en bestaande filters
Geselecteerde leden binnen één Slicer-cache vormen een unie; toepasselijke Slicer-caches snijden elkaar voor elke expliciet gekoppelde weergave, ook wanneer het geselecteerde veld ontbreekt op de weergegeven assen van die weergave; meerdere UI-Slicer-weergaven van één cache delen dezelfde selectie
Roep TXLSPivotTable.Make aan met de resultaatwriter van de toepassing om actuele resultaten te berekenen; cache-selectiewijzigingen herschrijven geen werkbladcellen en genereren niet elke geïmporteerde native layout opnieuw
Excel slaat niet-OLAP Slicer-selecties op als gewone Pivot-ledenverberging en paginaselectie; het formaat registreert niet welke bewerking een individuele verbergvlag heeft gemaakt
Vóór het wijzigen van een geïmporteerde binding valideert HotXLS dat de oude verborgen- en paginamaskers op hetzelfde veld overeenkomen met de effectieve oude Slicer-selectie; matchende maskers worden als Slicer-beheerd behandeld, terwijl inconsistente of dubbelzinnige maskers zonder gokken worden geweigerd; handmatige, pagina- en geavanceerde filters op andere velden blijven actief
Opslaan en bronvernieuwing
Opslaan werkt de Slicer-selectie en gekoppelde Pivot-ledenmaskers samen bij, houdt geïmporteerde XML-namespaces en onbekende extensies vast en mapt bladkoppelingen opnieuw naar hun opgeslagen identiteiten; uitgebreide Slicer-cache-identificaties blijven onderscheiden van gewone werkmap-Pivot-cache-identificaties
Lokale Pivot-cachevernieuwing behoudt geselecteerde gedeeld-leden-indices; expliciete subsets sluiten nieuwe leden uit, terwijl gewiste selecties het volledige vernieuwde domein toelaten
Grenzen en faalgedrag
Selectiewijzigingen valideren alle gekoppelde weergaven en leden vóór de commit en gebruiken de mutatiebewaking van de werkmap; bij een fout blijven de bestaande selectie, weergavebeperkingen en oorspronkelijke XML behouden
Het toevoegen, verwijderen en wissen van Slicer-caches gebruiken ook de schrijfbewaking van de werkmap; een bevroren werkmapweergave kan gekoppelde Pivot-resultaten niet via verzamelmutatie veranderen
Het verwijderen van een gebonden niet-OLAP Pivot-cache, of het wissen van een verzameling die er een bevat, wordt vóór mutatie geweigerd; de expliciete levenscyclusbewerking RemoveSlicerCache verwijdert zijn native weergaven en wist zijn selectie of draagt die over aan gewone Pivot-maskers
OLAP- en tabelcache-selectie, gegroepeerde of berekende bronvelden, ontbrekende koppelingen, inconsistente domeinen en dubbelzinnige geïmporteerde maskers op hetzelfde veld vallen buiten deze bewerking; niet-ondersteunde cache-inhoud behoudt zijn oorspronkelijke representatie
Deze selectie-API verwerkt geïmporteerde en ondersteunde geschreven Pivot Slicer-caches; auteurswerk voor gedeelde weergaven en expliciete cacheverwijdering is beschikbaar in 2.384.94; veilige werkbladmaterialisatie kan ondersteunde berekende uitvoer vervangen, terwijl evaluatie van cross-filter-weergave zonder data apart werk blijft
Het verwijderen van de laatste UI-weergave van een gebonden niet-OLAP cache wordt geweigerd voordat zijn tekening, weergave of cache verandert; het verwijderen van één van meerdere UI-weergaven behoudt hun gedeelde cache en selectie
Het wissen van de Slicer-weergaven van een werkblad controleert elke geraakte cache voordat een weergave wordt verwijderd; een laatste gebonden weergave levert atomische weigering op, terwijl weergaven die met andere werkbladen worden gedeeld hun cache en selectie behouden
Aanvullende recordfilters
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 registreert of vervangt één callback per niet-nil eigenaar, en TXLSPivotTable.ClearRecordFilter verwijdert de callback van die eigenaar; een nil callback aan SetRecordFilter meegeven verwijdert die ook
Geregistreerde callbacks en de optionele TXLSPivotTable.ExternalRecordFilter snijden elkaar vóór de eigen filters en aggregatie van de tabel; de werkmap registreert zijn Slicer-callback onafhankelijk, dus die overschrijft het predicaat van de aanroeper niet
Callbacks ontvangen zero-based recordindices, worden per Make-aanroep gesnapshotst en worden niet geserialiseerd of gekopieerd door AssignPivotOnly; eigenaren en callback-doelen blijven eigendom van de aanroeper en moeten hun registratie overleven