Cycle de vie du cache Pivot local et disposition native
La version 2.384.94 ajoute les vues à cache partagé, la création et la suppression explicites de slicers Pivot locaux non OLAP, la reconstruction des caches groupés et un générateur borné de métadonnées de disposition native
Vues partagées et création de slicer
SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);
TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable crée une autre vue d'un cache détenu par ce classeur ; il valide possession, géométrie et noms avant d'attacher la vue
TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache crée ou réutilise sans risque un cache de champ source pris en charge, tandis que TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer connecte une vue locale existante à cache partagé
TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer crée l'UI de feuille à partir de bornes de cellules explicites inclusives en base un ; noms sources, parties de cache, références de dessin et appartenance de vues sont mis en zone de staging avant mutation
Sources de slicer groupées, calculées ou OLAP, caches étrangers, domaines importés incohérents et masques indépendants ambigus d'un même champ sont rejetés ; le XML de vue importé pris en charge conserve les extensions sans rapport quand une nouvelle UI est ajoutée
Suppression explicite et membres futurs
if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
raise Exception.Create('The Slicer cache could not be removed');
TXLSXSlicerRemovalMode propose xlsxSlicerClearSelection et xlsxSlicerPreserveCurrentSelection ; TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer supprime ensemble l'UI liée, les références de dessin, les parties de cache natives et les connexions
Le mode clear retire cette restriction de slicer tout en conservant les filtres indépendants et les prédicats de l'appelant ; le mode preserve transfère sa restriction courante vers des masques de membres Pivot ordinaires avant de supprimer le slicer
L'opération renvoie 1 en cas de succès et -1 pour des liaisons non prises en charge ou dangereuses ; toutes les vues affectées et l'état du cache sont validés et mis en staging avant commit, et une ambiguïté de possession sur un même champ est rejetée sans deviner
TXLSPivotField.IncludeNewItemsInFilter: Boolean vaut False par défaut ; un sous-ensemble manuel conservé exclut les membres nouvellement ajoutés tant que cette politique n'est pas explicitement activée, tandis qu'un champ sans restriction les inclut
La sélection préservée reste donc stable après une croissance de la source, tandis que le mode clear inclut les nouveaux membres sources ; les listes de membres importées et saisies sérialisent la même politique de masquage des membres futurs
Les opérations Delete et Clear de collections existantes protègent toujours une dernière vue de slicer liée ; utilisez l'opération explicite du classeur quand le cache et ses restrictions connectées doivent être supprimés ensemble
Reconstruction des caches groupés fixes
L'actualisation met en staging les identités de groupes numériques, de dates et de groupes discrets explicites à partir de liens base/parent validés, y compris les champs dérivés importés dont les colonnes d'enregistrements sont absentes ; les champs sources liés-seulement conservent leurs valeurs d'origine au lieu d'être eux-mêmes groupés
Les domaines pris en charge conservent les handles de membres, légendes et ordinaux de groupes existants ; le regroupement numérique et de dates emploie une résolution par champ et un domaine natif fixe d'éléments de groupe, et le regroupement de dates exige un intervalle de un
TXLSPivotCacheField.GroupAutoStart et TXLSPivotCacheField.GroupAutoEnd valent True par défaut et préservent la politique de bornes importée ; de nouvelles valeurs exigeant une expansion de domaine ou un regroupement sont rejetées avant mutation
Les groupes discrets exigent un mappage existant pour chaque membre source ; parents cycliques, domaines typés invalides, légendes de chaînes non uniques, bases calculées, champs de propriétés de membres et résolutions parentales non prises en charge sont rejetés transactionnellement
Make ordinaire reconstruit les valeurs d'enregistrements dérivées obsolètes ou manquantes prises en charge, tandis que MakePreview ne le fait que sur une copie détachée ; l'enregistrement omet les éléments partagés internes d'espace réservé des domaines natifs dérivés et émet exactement les indices de groupes déclarés
Prévisualisation des métadonnées de disposition native
function TryXLSXGeneratePivotLayout(const Xml: WideString; Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;
Le helper lxPivotXml met en staging rowItems, colItems, métadonnées d'axes et localisation pour les vues locales compactes non vides prises en charge, à partir d'identités exactes de champs et de membres de cache ; il accepte les hiérarchies ordinaires, les sous-totaux par défaut en haut ou en bas et l'un ou l'autre axe de données
Cette opération de métadonnées seules exige un Cache.RefreshOnLoad=True explicite ; elle préserve le XML inconnu et renvoie le XML d'origine plus une raison en anglais quand des champs groupés ou calculés, des sous-totaux personnalisés, une disposition non prise en charge ou des identités importées incohérentes ne peuvent pas être représentés
Le helper ne réécrit pas les cellules de la feuille et ne change pas les indicateurs de table actifs ; les appelants qui exigent une sortie de feuille en cache doivent fournir un writer approprié et une opération de matérialisation séparément prise en charge
TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer fournit des callbacks de disposition synchrones depuis une prévisualisation détachée, en conservant l'identité EvaluationSourceTable d'origine
TlxPivotLayoutWriter reçoit la table d'origine, l'axe lignes/colonnes, des vecteurs copiés d'indices de champs et d'indices d'éléments de cache, un TlxPivotLayoutItemKind, le type de sous-total et la longueur de préfixe ; xlplikData, xlplikSubtotal et xlplikGrand distinguent les identités d'agrégats sans analyser les légendes
Les vecteurs utilisent TlxPivotLayoutIndices et sont valides pendant le callback ; les exceptions se propagent, et les comportements existants de Make et du MakePreview à writer unique restent disponibles
TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) réserve la capacité de la collection avant le transfert de possession et prend en charge l'attachement transactionnel interne de vues ; les applications devraient normalement passer par les méthodes de création au niveau des feuilles
Limites
La version 2.384.95 ajoute la sortie de feuille native en cache, la disponibilité en lecture seule du cross-filter et la purge explicite des membres historiques ; l'affichage natif sérialisé sans données, la création de Timelines et une sérialisation plus large des dispositions groupées gardent des frontières d'acceptation séparées