HotXLS-documentatie

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