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