HotXLS-dokumentation

Icke-OLAP Pivot Slicer-val

Version 2.384.88 lägger till typat medlemsval i importerade icke-OLAP Pivot Slicer-cacher som kan bindas till vanliga lokala cachefält och deras anslutna pivottabellvyer

Granska och ändra ett urval

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 identifierar den tabellformade pivotformen; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex och TXLSXSlicerCache.ItemSelected exponerar den tolkade medlemslistan och urvalet

Positioner i medlemslistan är nollbaserade; varje ItemCacheIndex identifierar en delad medlem i det bundna pivot-cacheutfältet, så tal-, text-, Boolean-, datum-, tomma- och felmedlemmar behåller åtskilda identiteter även när deras visade text är samma

TXLSXSlicerCacheItem lagrar en CacheItemIndex: Integer och Selected: Boolean; TXLSXSlicerCacheItems är dess dynamiska matristyp, medan cachen exponerar urvalet via skrivskyddade indexerade egenskaper

TXLSXSlicerCache.SetSelectedItems tar delade medlemsindex och returnerar 1 vid lyckat resultat eller -1 för bindningar som inte stöds, är ogiltiga eller osäkra; ett tomt urval avslås eftersom filformatet kräver minst en vald medlem

TXLSXSlicerCache.ClearSelection följer samma statuskonvention och väljer alla medlemmar; den tar bort den här Slicer-begränsningen medan oberoende begränsningar på andra fält behålls

Delade vyer och befintliga filter

Valda medlemmar inom en Slicer-cache bildar en union; tillämpliga Slicer-cacher skär varandra för varje uttryckligen ansluten vy, även när det valda fältet saknas i vyens visade axlar; flera UI Slicer-vyer av en cache delar samma urval

Anropa TXLSPivotTable.Make med programmets resultatskrivare för att beräkna aktuella resultat; cacheurvalsändringar skriver inte om kalkylbladsceller och regenererar inte varje importerad inbyggd layout

Excel lagrar icke-OLAP Slicer-val som vanlig pivotmedlemsdöljning och sidval; formatet registrerar inte vilken åtgärd som skapade en enskild dold-flagga

Innan en importerad bindning ändras validerar HotXLS att dess gamla dold- och sidmasker för samma fält matchar det effektiva gamla Slicer-urvalet; matchande masker behandlas som Slicer-hanterade, medan inkonsekventa eller tvetydiga masker avslås utan att gissa; manuella filter, sidfilter och avancerade filter på orelaterade fält förblir aktiva

Sparande och källuppdatering

Sparandet uppdaterar Slicer-urvalet och anslutna pivotmedlemsmasker tillsammans, behåller importerade XML-namnområden och okända tillägg och mappar om bladanslutningar till sina sparade identiteter; utökade Slicer-cacheidentifierare förblir åtskilda från vanliga arbetsbokspivotcacheidentifierare

Lokal pivotcacheuppdatering behåller valda delade medlemsindex; uttryckliga delmängder utesluter nya medlemmar, medan rensade urval tillåter den fullständiga uppdaterade domänen

Gränser och felbeteende

Urvalsändringar validerar alla anslutna vyer och medlemmar före committen och använder arbetsbokens mutationsskydd; ett fel bevarar det befintliga urvalet, vybegränsningarna och ursprunglig XML

Att lägga till, ta bort och rensa Slicer-cacher använder också arbetsbokens skrivskydd; en fryst arbetsboksvy kan inte ändra anslutna pivotresultat via samlingsmutation

Att ta bort en bunden icke-OLAP-pivotcache, eller rensa en samling som innehåller en, avslås innan mutationen; den uttryckliga livscykelåtgärden RemoveSlicerCache tar bort dess inbyggda vyer och rensar antingen urvalet eller överför det till vanliga pivotmasker

OLAP- och tabellcacheurval, grupperade eller beräknade källfält, saknade anslutningar, inkonsekventa domäner och tvetydiga importerade masker för samma fält ligger fortfarande utanför den här åtgärden; cacheinnehåll som inte stöds behåller sin ursprungliga representation

Detta urvals-API hanterar importerade och stödda författade Pivot Slicer-cacher; författning av delade vyer och uttrycklig cacheborttag finns i 2.384.94; säker kalkylbladsmaterialisering kan ersätta stödda beräknade utdata, medan utvärdering av korsfilter utan data förblir separat arbete

Att ta bort den sista UI-vyn för en bunden icke-OLAP-cache avslås innan dess ritning, vy eller cache ändras; att ta bort en av flera UI-vyer behåller deras delade cache och urval

Att rensa ett kalkylblads Slicer-vyer kontrollerar varje berörd cache innan någon vy tas bort; en sista bunden vy ger atomärt avslag, medan vyer som delas med andra kalkylblad behåller sin cache och sitt urval

Ytterligare postfilter

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 registrerar eller ersätter en callback per ägare som inte är nil, och TXLSPivotTable.ClearRecordFilter tar bort den ägarens callback; att skicka en nil-callback till SetRecordFilter tar också bort den

Registrerade callbacks och den valfria TXLSPivotTable.ExternalRecordFilter skär varandra före tabellens egna filter och aggregeringen; arbetsboken registrerar sin Slicer-callback oberoende, så den skriver inte över uppringarens predikat

Callbacks tar emot nollbaserade postindex, ögonblicksbildas för varje Make-anrop och serialiseras inte eller kopieras av AssignPivotOnly; ägare och callback-mål förblir uppringarens ägo och måste överleva sin registrering