Nicht-OLAP-Pivot-Slicer-Auswahl
Version 2.384.88 ergänzt typisierte Member-Auswahl für importierte nicht-OLAP-Pivot-Slicer-Caches, die an gewöhnliche lokale Cache-Felder und ihre verbundenen PivotTable-Views gebunden werden können
Eine Auswahl inspizieren und ändern
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 identifiziert die tabellarische Pivot-Form; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex und TXLSXSlicerCache.ItemSelected legen die geparste Memberliste und Auswahl offen
Memberlisten-Positionen sind nullbasiert; jeder ItemCacheIndex identifiziert ein gemeinsames Member im gebundenen Pivot-Cache-Feld, sodass Zahl-, Text-, Boolean-, Datum-, Leer- und Fehlermember separate Identitäten behalten, selbst wenn ihr angezeigter Text übereinstimmt
TXLSXSlicerCacheItem speichert ein CacheItemIndex: Integer und Selected: Boolean; TXLSXSlicerCacheItems ist sein Dynamic-Array-Typ, während der Cache die Auswahl über nur lesende indizierte Properties offenlegt
TXLSXSlicerCache.SetSelectedItems nimmt gemeinsame Member-Indizes entgegen und liefert 1 bei Erfolg oder -1 bei nicht unterstützten, ungültigen oder unsicheren Bindungen; eine leere Auswahl wird zurückgewiesen, weil das Dateiformat mindestens ein ausgewähltes Member verlangt
TXLSXSlicerCache.ClearSelection liefert dieselbe Statuskonvention und wählt alle Member; es entfernt diese Slicer-Einschränkung und behält dabei unabhängige Einschränkungen auf anderen Feldern
Geteilte Views und bestehende Filter
Ausgewählte Member innerhalb eines Slicer-Caches bilden eine Vereinigung; anwendbare Slicer-Caches schneiden sich für jede explizit verbundene View, auch wenn das ausgewählte Feld in den angezeigten Achsen dieser View fehlt; mehrere UI-Slicer-Views eines Caches teilen sich dieselbe Auswahl
Rufen Sie TXLSPivotTable.Make mit dem Result Writer der Anwendung auf, um aktuelle Ergebnisse zu berechnen; Cache-Auswahländerungen schreiben keine Arbeitsblattzellen um und regenerieren nicht jedes importierte native Layout
Excel speichert nicht-OLAP-Slicer-Auswahlen als gewöhnliches Pivot-Member-Verstecken und Seitenauswahl; das Format zeichnet nicht auf, welche Operation ein einzelnes verstecktes Flag erzeugt hat
Vor dem Ändern einer importierten Bindung validiert HotXLS, dass ihre alten Masken für versteckte und Seitenmitglieder desselben Felds der effektiven alten Slicer-Auswahl entsprechen; passende Masken werden als Slicer-verwaltet behandelt, während inkonsistente oder mehrdeutige Masken ohne Raten zurückgewiesen werden; manuelle, Seiten- und erweiterte Filter auf anderen Feldern bleiben aktiv
Speichern und Quellaktualisierung
Das Speichern aktualisiert die Slicer-Auswahl und die verbundenen Pivot-Member-Masken gemeinsam, behält importierte XML-Namespaces und unbekannte Erweiterungen und ordnet Blattverbindungen ihren gespeicherten Identitäten zu; erweiterte Slicer-Cache-Identifikatoren bleiben von gewöhnlichen Arbeitsmappen-Pivot-Cache-Identifikatoren getrennt
Die lokale Pivot-Cache-Aktualisierung behält ausgewählte gemeinsame Member-Indizes; explizite Teilmengen schließen neue Member aus, während geleerte Auswahlen die vollständige aktualisierte Domäne zulassen
Grenzen und Fehlerverhalten
Auswahländerungen validieren alle verbundenen Views und Member vor dem Commit und nutzen den Änderungsschutz der Arbeitsmappe; ein Fehlschlag erhält die bestehende Auswahl, View-Einschränkungen und das ursprüngliche XML
Das Hinzufügen, Löschen und Leeren von Slicer-Caches nutzt ebenfalls den Schreibschutz der Arbeitsmappe; eine eingefrorene Arbeitsmappenview kann verbundene Pivot-Ergebnisse nicht durch Sammlungsveränderung ändern
Das Löschen eines gebundenen nicht-OLAP-Pivot-Caches oder das Leeren einer Sammlung, die einen enthält, wird vor der Veränderung zurückgewiesen; die explizite Lebenszyklusoperation RemoveSlicerCache entfernt ihre nativen Views und leert entweder ihre Auswahl oder überträgt sie in gewöhnliche Pivot-Masken
OLAP- und Tabellen-Cache-Auswahl, gruppierte oder berechnete Quellfelder, fehlende Verbindungen, inkonsistente Domänen und mehrdeutige importierte Masken desselben Felds bleiben außerhalb dieser Operation; nicht unterstützte Cache-Inhalte behalten ihre ursprüngliche Repräsentation
Diese Auswahl-API behandelt importierte und unterstützte verfasste Pivot-Slicer-Caches; Autorenschaft für geteilte Views und explizite Cache-Entfernung ist ab 2.384.94 verfügbar; sichere Arbeitsblatt-Materialisierung kann unterstützte berechnete Ausgabe ersetzen, während die Cross-Filter-No-Data-Anzeigeauswertung separate Arbeit bleibt
Das Löschen der letzten UI-View eines gebundenen nicht-OLAP-Caches wird zurückgewiesen, bevor seine Zeichnung, View oder sein Cache geändert wird; das Löschen einer von mehreren UI-Views behält ihren gemeinsamen Cache und ihre Auswahl
Das Leeren der Slicer-Views eines Arbeitsblatts prüft jeden betroffenen Cache, bevor irgendeine View entfernt wird; eine letzte gebundene View führt zu atomarer Zurückweisung, während Views, die mit anderen Arbeitsblättern geteilt werden, ihren Cache und ihre Auswahl behalten
Zusätzliche Record-Filter
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 registriert oder ersetzt einen Callback pro Nicht-nil-Besitzer, und TXLSPivotTable.ClearRecordFilter entfernt den Callback dieses Besitzers; das Übergeben eines nil-Callbacks an SetRecordFilter entfernt ihn ebenfalls
Registrierte Callbacks und der optionale TXLSPivotTable.ExternalRecordFilter schneiden sich vor den eigenen Filtern und der Aggregation der Tabelle; die Arbeitsmappe registriert ihren Slicer-Callback unabhängig, daher überschreibt sie nicht das Prädikat des Aufrufers
Callbacks erhalten nullbasierte Record-Indizes, werden für jeden Make-Aufruf als Snapshot erfasst und weder von AssignPivotOnly serialisiert noch kopiert; Besitzer und Callback-Ziele bleiben aufruferbesessen und müssen ihre Registrierung überdauern