Seleção de Slicer de Pivot não OLAP
A versão 2.384.88 adiciona seleção tipada de membros aos caches importados de Slicer de Pivot não OLAP que podem ser vinculados a campos de cache locais comuns e às views de tabela dinâmica conectadas a eles
Inspecionar e alterar uma seleção
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 identifica a forma tabular de Pivot; TXLSXSlicerCache.ItemCount, TXLSXSlicerCache.ItemCacheIndex e TXLSXSlicerCache.ItemSelected expõem a lista de membros analisada e a seleção
As posições da lista de membros têm base zero; cada ItemCacheIndex identifica um membro compartilhado no campo de cache de Pivot vinculado, de modo que membros de número, texto, Boolean, data, branco e erro retêm identidades separadas mesmo quando o texto exibido deles coincide
TXLSXSlicerCacheItem armazena um CacheItemIndex: Integer e Selected: Boolean; TXLSXSlicerCacheItems é o tipo de array dinâmico dele, enquanto o cache expõe a seleção por meio de propriedades indexadas somente leitura
TXLSXSlicerCache.SetSelectedItems recebe índices de membros compartilhados e retorna 1 em caso de sucesso ou -1 para vinculações sem suporte, inválidas ou inseguras; uma seleção vazia é rejeitada porque o formato de arquivo exige pelo menos um membro selecionado
TXLSXSlicerCache.ClearSelection retorna a mesma convenção de status e seleciona todos os membros; ele remove esta restrição de Slicer mantendo restrições independentes nos outros campos
Views compartilhadas e filtros existentes
Membros selecionados dentro de um cache de Slicer formam uma união; os caches de Slicer aplicáveis se cruzam para cada view explicitamente conectada, inclusive quando o campo selecionado está ausente dos eixos exibidos dessa view; múltiplas views de UI de Slicer de um cache compartilham a mesma seleção
Chame TXLSPivotTable.Make com o result writer da aplicação para calcular os resultados atuais; mudanças de seleção do cache não reescrevem células da planilha nem regeneram todo layout nativo importado
O Excel armazena seleções de Slicer não OLAP como ocultação comum de membros de Pivot e seleção de página; o formato não registra qual operação criou um sinalizador oculto individual
Antes de modificar uma vinculação importada, o HotXLS valida que as máscaras antigas de oculto e de página do mesmo campo dela correspondem à seleção antiga efetiva do Slicer; máscaras correspondentes são tratadas como gerenciadas pelo Slicer, enquanto máscaras inconsistentes ou ambíguas são rejeitadas sem adivinhação; filtros manuais, de página e avançados de campos sem relação permanecem ativos
Salvamento e atualização de fonte
Salvar atualiza a seleção do Slicer e as máscaras conectadas de membros de Pivot juntas, mantém namespaces XML importados e extensões desconhecidas e remapeia conexões de planilha para as identidades salvas delas; identificadores estendidos de cache de Slicer permanecem distintos dos identificadores comuns de cache de Pivot da pasta de trabalho
A atualização local do cache de Pivot retém os índices de membros compartilhados selecionados; subconjuntos explícitos excluem novos membros, enquanto seleções limpas permitem o domínio atualizado completo
Limites e comportamento de falha
Mudanças de seleção validam todas as views e membros conectados antes do commit e usam a guarda de mutação da pasta de trabalho; uma falha preserva a seleção existente, as restrições de view e o XML original
Adicionar, excluir e limpar caches de Slicer também usam a guarda de gravação da pasta de trabalho; uma view congelada da pasta de trabalho não pode mudar resultados conectados de Pivot por meio de mutação de coleção
Excluir um cache de Pivot não OLAP vinculado, ou limpar uma coleção que contenha um, é rejeitado antes da mutação; a operação explícita de ciclo de vida RemoveSlicerCache remove as views nativas dele e limpa ou transfere a seleção dele para máscaras comuns de Pivot
Seleção de OLAP e de cache de tabela, campos de fonte agrupados ou calculados, conexões ausentes, domínios inconsistentes e máscaras importadas ambíguas do mesmo campo permanecem fora desta operação; conteúdos de cache sem suporte retêm a representação original deles
Esta API de seleção lida com caches de Slicer de Pivot importados e criados com suporte; a criação de views compartilhadas e a remoção explícita de cache estão disponíveis na 2.384.94; a materialização segura de planilha pode substituir saída calculada com suporte, enquanto a avaliação de exibição de sem dados de filtro cruzado continua sendo um trabalho separado
Excluir a última view de UI de um cache não OLAP vinculado é rejeitado antes de alterar o desenho, a view ou o cache dele; excluir uma de várias views de UI retém o cache e a seleção compartilhados deles
Limpar as views de Slicer de uma planilha verifica cada cache afetado antes de remover qualquer view; uma view final vinculada causa rejeição atômica, enquanto views compartilhadas com outras planilhas retêm o cache e a seleção delas
Filtros de registro adicionais
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 registra ou substitui um callback por dono não nil, e TXLSPivotTable.ClearRecordFilter remove o callback desse dono; passar um callback nil a SetRecordFilter também o remove
Callbacks registrados e o TXLSPivotTable.ExternalRecordFilter opcional se cruzam antes dos filtros e da agregação próprios da tabela; a pasta de trabalho registra o callback de Slicer dela de forma independente, de modo que não sobrescreve o predicado do chamador
Callbacks recebem índices de registro com base zero, são fotografados para cada chamada de Make e não são serializados nem copiados por AssignPivotOnly; donos e alvos de callbacks permanecem de propriedade do chamador e devem sobreviver ao registro deles