Delphi, C++ Builder & .NET Parte do sgcUI

sgcPivotGrid, a grade de tabela dinâmica para Delphi, C++ Builder & .NET

Transforme linhas brutas em respostas. Solte campos em linhas, colunas e valores, agrupe datas por ano, trimestre ou mês e deixe seus usuários montarem o próprio layout com uma lista de campos de arrastar e soltar. Um armazenamento de colunas tipadas recalcula um milhão de linhas em uma fração de segundo, e um clique duplo mostra as linhas de origem por trás de qualquer célula.

VCL, FireMonkey, WinForms, WPF, Avalonia1.000.000 de linhas: orçamento de 100 ms de recálculo no Win64Edição .NET Community gratuitaIncluído no sgcUI Enterprise
Demo SalesPivot: a lista de campos com as áreas Filtros, Colunas, Linhas e Valores ao lado da tabela dinâmica que ela monta

Tudo o que uma tabela dinâmica precisa

Treze recursos em cinco grupos. Os recursos marcados como Registrada não estão na edição .NET Community gratuita.

Velocidade e dados

Carregue uma vez, recalcule uma vez, com ou sem janela.

Demo MillionRows após dinamizar 1.000.000 de linhas, com o rótulo de tempo que ele mostra

Velocidade e dados

Dinamize um milhão de linhas em uma fração de segundo

Históricos de pedidos e logs de sensores logo superam uma planilha. O sgcPivotGrid guarda cada coluna em um armazenamento de colunas tipadas, agrega as células em uma única passada pelas linhas de origem e desenha apenas a parte visível do resultado. O orçamento de QA para recalcular 1.000.000 de linhas é de 100 ms no Win64, e o demo MillionRows carrega e dinamiza um milhão de linhas e mostra o próprio tempo.

  • TsgcPivotEngine é o mecanismo, publicado como Pivot na grade e utilizável por conta própria
  • BeginLoad, DefineColumn, AppendRow e EndLoad carregam as linhas com um único recálculo no final
  • BeginUpdate e EndUpdate agrupam as mudanças de layout em uma única passada
  • As colunas de texto são codificadas por dicionário, e os totais vêm dos valores de origem, nunca de médias de médias
Ler o tópico da ajuda
Demo DataSetPivot: uma tabela de pedidos acima de uma tabela dinâmica que acompanha as edições

Velocidade e dados

Alimente-o com um TDataSet, uma grade ou seu próprio código

Aponte a tabela dinâmica para os dados que você já tem. Uma fonte de dataset copia qualquer TDataSet para o mecanismo e, com as atualizações em tempo real ativadas, o recarrega após cada gravação, então a tabela dinâmica acompanha as edições que seus usuários fazem em um formulário. Uma fonte de tabela lê qualquer IsgcUITable, como um sgcGrid, e só recarrega quando a tabela muda. O código que já mantém as linhas em memória simplesmente as acrescenta. A tabela dinâmica nunca grava nos seus dados.

  • TsgcPivotSource_DataSet com DataSet, Active, Columns e LiveUpdates
  • Qualquer descendente de TDataSet funciona, pois a fonte o lê por meio de um TDataLink
  • TsgcPivotSource_Table lê um sgcGrid ou qualquer outro IsgcUITable e recarrega quando TableVersion muda
  • No .NET, o mesmo mecanismo lê um DataTable
Ler o tópico da ajuda

Análise

As perguntas de um gerente de vendas, respondidas com propriedades.

Tabela dinâmica com 2025 expandido em trimestres e meses e 2024 recolhido

Análise

Datas agrupadas do jeito que as pessoas pensam

Ninguém lê um relatório de vendas dia a dia. Adicione o mesmo campo de data às colunas várias vezes com um agrupamento diferente e o sgcPivotGrid monta os níveis Ano, Trimestre e Mês a partir dele, cada um com seu subtotal. Os usuários abrem e fecham os níveis com os botões de mais e menos, e seu código pode expandir um nível inteiro de uma vez. Expandir ou recolher gera um novo snapshot sem agregar os dados novamente. Os agrupamentos Semana e Dia existem para relatórios operacionais que precisam deles.

  • TsgcPivotDateGrouping: pvdYear, pvdQuarter, pvdMonth, pvdWeek e pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) adiciona um nível por chamada
  • ExpandAll, CollapseAll e ExpandLevel para cada eixo
  • Subtotais e totais gerais com posição e legenda próprias
Ler o tópico da ajuda
Três medidas lado a lado: soma do valor, clientes distintos e margem média

Análise

Oito agregações, inclusive contagem distinta

Receita é uma soma e o número de pedidos é uma contagem, mas quantos clientes diferentes compraram em março é uma contagem distinta, e é o número que as equipes financeiras pedem. Cada campo de dados escolhe a própria agregação, então um único layout pode mostrar a soma das vendas, o número de clientes distintos e a margem média lado a lado. Na lista de campos, o botão de um chip de Valores troca a agregação com um clique. Os totais são sempre calculados a partir dos valores de origem.

  • TsgcPivotAggregation: pvfSum, pvfCount, pvfAverage, pvfMin e pvfMax
  • pvfCountDistinct, pvfStdDev e pvfVar para estatísticas
  • AddDataField('Sales', pvfSum) adiciona uma medida, e várias medidas ficam sob cada membro de coluna
  • As oito estão na edição Community gratuita
Ler o tópico da ajuda
Top 5 produtos por vendas mais uma linha Outros, com a lista de seleção de membros aberta

Análise Somente Registrada

Filtre o que importa, mantenha os N primeiros

Layouts grandes só são úteis quando os usuários conseguem restringi-los. Filtros de membro, de rótulo e de valor reduzem o resultado, com 13 operadores, de igual a entre e contém. O Top N mantém os membros com os maiores totais dentro de cada pai e pode reunir o restante em uma única linha Outros, de modo que os totais continuam fechando. Um drill down em Outros devolve as linhas de origem de todos os membros que ela contém.

  • TsgcPivotFilterOperator: pvcEqual, pvcGreater, pvcBetween, pvcContains, pvcBeginsWith e outros
  • FilterValues e FilterExclude para listas de seleção de membros, também a partir da lista de campos
  • TopN, TopNOthers e OthersCaption para a visão Top N
  • SortBy pvsValue com pvoDescending lista os maiores primeiro

Os filtros de membro, de rótulo e de valor e a ordenação estão na edição Community. O Top N com Outros é da edição Registrada.

Ler o tópico da ajuda
Demo AdvancedPivot com um campo de margem calculado e porcentagem do total da coluna

Análise Somente Registrada

Campos calculados e porcentagem do total

Margens, lucro e participações são os números que os gerentes discutem, e raramente existem como colunas no banco de dados. Um campo calculado calcula um valor para cada linha de origem a partir de uma expressão, com IF, ROUND, MIN, MAX, ISNULL e funções de data, e depois é agregado como qualquer outra coluna. Mostrar valores como transforma uma medida em porcentagem da linha, da coluna ou do total geral, total acumulado, diferença em relação a um item base ou classificação.

  • CalculatedFields.Add devolve um TsgcPivotCalculatedField com Name e Expression
  • Avaliação por linha: a soma de um lucro calculado é a soma dos lucros
  • ShowAs: pvwPercentOfRow, pvwPercentOfColumn, pvwPercentOfGrandTotal, pvwRunningTotal, pvwDifferenceFrom, pvwRank
  • ShowAsBaseItem escolhe o membro a partir do qual a diferença é medida

Não está na edição Community: esses membros são compilados sob SGC_PIVOTGRID_ADVANCED.

Ler o tópico da ajuda

Interação

Deixe seus usuários encontrarem a resposta sozinhos.

Interação

Os usuários montam o próprio relatório com arrastar e soltar

Uma nova pergunta não deveria exigir uma nova versão. Coloque uma lista de campos ao lado da grade, defina uma propriedade e os usuários arrastam colunas de origem para Filtros, Colunas, Linhas e Valores. Uma coluna de texto solta em Valores conta, uma numérica soma, e o botão do chip troca a agregação. Cada chip abre uma lista de seleção de membros com caixa de busca, e o modo adiado mantém as mudanças pendentes até o usuário aplicá-las, o que ajuda em dados muito grandes. A mesma lista de campos funciona no FireMonkey.

  • TsgcVCLPivotFieldList e TsgcFMXPivotFieldList, vinculadas por meio de PivotGrid
  • Quatro áreas: pvaFilter, pvaColumn, pvaRow e pvaData
  • DeferUpdate e ApplyChanges recalculam uma vez, quando o usuário termina
  • Listas de campos para WinForms, WPF e Avalonia no .NET
  • Da direita para a esquerda para árabe e hebraico: a área de cabeçalho das linhas, a ordem das colunas, os chevrons e a lista de campos ficam espelhados, e a exportação XLSX grava uma planilha da direita para a esquerda
Ler o tópico da ajuda
Tabela dinâmica de país por mês com uma escala de cores verde nos valores de vendas

Interação

Escalas de cores mostram os pontos quentes na hora

Uma grade de números esconde a história até alguém colori-la. As regras de formatação tingem as células de dados por seus valores: uma escala de cores sombreia cada célula entre duas cores conforme sua posição entre o menor e o maior valor da medida, e as regras de valor colorem ou colocam em negrito as células que atendem a uma condição. As mesmas regras valem na tela e nas imagens PNG e SVG, porque ambas são desenhadas pelo mesmo renderizador. Não é preciso código de desenho personalizado.

  • TsgcPivotFormatRule na coleção FormatRules, editável no Object Inspector
  • pvrColorScale com MinColor e MaxColor
  • Regras pvrValue com um operador, BackColor, ForeColor e Bold
  • Measure escolhe o campo de dados, e Theme alterna entre claro e escuro
Ler o tópico da ajuda
Demo DataSetPivot com os pedidos por trás de uma célula da tabela dinâmica listados ao lado da grade

Interação

Drill down até as linhas por trás de qualquer número

Quando um total parece errado, a primeira pergunta é quais pedidos o compõem. Um clique duplo em uma célula, ou Enter no teclado, faz o drill down, e o mecanismo devolve as linhas de origem que foram agregadas naquele valor, como números de linha ou como uma tabela com todas as colunas do armazenamento, inclusive as colunas que não estão no layout. O demo DataSetPivot lista em um painel lateral os pedidos por trás de uma célula.

  • OnDrillDown da grade e DrillDownCell para acioná-lo por código
  • DrillDown devolve as linhas de origem como um IsgcUITable
  • GetSourceRows fornece os números de linha e SourceValue lê um valor
  • Um drill down na linha Outros do Top N devolve as linhas de todos os membros que ela contém
Ler o tópico da ajuda

Interação

Peça um layout em linguagem natural

Os usuários digitam uma pergunta como top 3 países por vendas por trimestre, na barra de consulta de IA ou a partir do seu código, e o TsgcPivotGridAI pede o layout a um provedor de IA. Qualquer LLM funciona: o TsgcUIAIEventProvider entrega cada solicitação ao seu próprio código, e o TsgcUIAIChatProvider usa o componente TsgcAIChat do sgcWebSockets. Apenas a pergunta e o catálogo de campos saem do aplicativo: nomes, legendas, tipos e até 5 valores de exemplo por campo, nunca as linhas. A resposta é verificada com os campos reais antes de ser aplicada em um único recálculo, e Desfazer restaura o layout anterior.

  • TsgcPivotGridAI com Provider e PivotGrid, em VCL, FireMonkey, WinForms, WPF e Avalonia
  • Ask espera a resposta, AskAsync roda em uma thread de trabalho e Cancel a interrompe
  • OnBeforeAsk pode editar ou cancelar a solicitação, OnLayout pode recusar a resposta
  • MaxSampleValues limita os exemplos; campos desconhecidos são descartados e a resposta é limitada a 64 KB
  • O TsgcPivotGridAIQuery da ponte sgcPivotGridWS continua funcionando com Chat, e um Provider atribuído vence o Chat

Todas as edições e todas as plataformas, inclusive a Community; o Desfazer de um layout de IA não está na edição Community. O provedor do sgcWebSockets exige uma edição Registrada com um sgcWebSockets registrado: sgcUICoreWS no Delphi e C++ Builder, o pacote esegece.sgcUICore.sgcWebSockets no .NET.

Ler o tópico da ajuda

Saída

Um arquivo, um navegador, um gráfico ou uma tarefa de servidor.

Demo GridToPivotToChart: linhas da grade, a tabela dinâmica e um gráfico do sgcCharts em três painéis

Saída

Exporte o que você vê ou transforme em gráfico

Uma tabela dinâmica costuma ser o começo de um relatório, não o fim. Toda exportação grava a visão como o usuário a organizou, com seus níveis expandidos e filtros: CSV para planilhas, JSON para outros sistemas, HTML para um navegador ou um e-mail, PNG e SVG para documentos. O resultado também é uma tabela que o sgcCharts lê diretamente, então o demo GridToPivotToChart vai das linhas da grade a uma tabela dinâmica e a um gráfico sem copiar nenhum dado. Streams funcionam tanto quanto arquivos.

  • SaveToCSV, SaveToJSON e SaveToHTML em um arquivo ou stream
  • SaveToPNG e SaveToSVG com um tamanho opcional
  • TsgcPivotGridRenderer desenha sem janela, em um servidor ou no Linux64
  • ResultTable expõe o resultado visível como um IsgcUITable para o sgcCharts
Ler o tópico da ajuda
Lista de layouts com as visões salvas Vendas por região e Margem por produto

Saída Somente Registrada

Salve um layout, restaure-o com uma chamada

Usuários avançados montam as mesmas visões repetidamente: vendas por região na segunda-feira, margem por produto no fim do mês. A persistência de layout grava o layout inteiro como JSON, com seus campos, áreas, agrupamentos, agregações, ordenação, filtros e totais, e o carrega de volta com um único recálculo. Guarde-o em um arquivo, em um campo de banco de dados ou no perfil do usuário, ofereça uma lista de visões nomeadas ou copie o layout de uma grade para outra.

  • SaveLayoutToFile e LoadLayoutFromFile nas grades e no mecanismo
  • SaveLayoutToString e LoadLayoutFromString para um banco de dados ou um repositório de configurações
  • As versões de grade também guardam as larguras de coluna alteradas pelo usuário
  • Copie um layout entre grades com LoadLayoutFromString(SaveLayoutToString)

Não está na edição Community.

Ler o tópico da ajuda

Acessibilidade

UI Automation para leitores de tela, o teclado e o alto contraste, sem nenhuma configuração.

Acessibilidade

Uma tabela dinâmica exposta com seus cabeçalhos

O sgcPivotGrid expõe seu conteúdo ao Microsoft UI Automation como uma tabela com cabeçalhos de linha e de coluna que se expandem e se recolhem, células de dados e totais. A lista de campos é exposta como uma lista de campos por área, para que um usuário de leitor de tela também possa montar a tabela dinâmica.

  • Setas, Home, End, Page Up e Page Down movem a célula com foco, e Left e Right (ou as teclas de mais e de menos) recolhem e expandem os cabeçalhos
  • Na lista de campos, Up e Down movem o foco entre os campos, Ctrl+1 a Ctrl+4 movem o campo para linhas, colunas, valores ou filtros, Ctrl+Up e Ctrl+Down o reordenam, Space o alterna e Del o remove
  • As teclas da lista de campos substituem o arrastar campos com o mouse
  • Um anel de foco visível, e sob um tema de alto contraste do Windows a tabela dinâmica é pintada com as cores do sistema

A acessibilidade vem ativada por padrão em todas as edições, inclusive a edição Community gratuita, no VCL em todas as versões do Delphi e do C++Builder do Delphi 7 ao Delphi 13, no FireMonkey no Windows e no WinForms, WPF e Avalonia. No Delphi e no C++Builder, AccessibleName e AccessibleDescription definem o nome e a descrição expostos ao UI Automation, e no .NET o nome acessível e o texto de ajuda padrão de cada framework fazem o mesmo. Veja os relatórios de conformidade de acessibilidade.

Leia o tópico da ajuda

Veja o sgcPivotGrid em ação

sgcPivotGrid dentro das demos da suíte sgcUI: aplicações completas que rodam offline com dados simulados integrados.

Medido em relação a orçamentos

O grupo de desempenho do QA executa esses cenários em builds de release, como a mediana de cinco execuções com dados fixos. Os números são orçamentos dentro dos quais cada cenário deve permanecer, publicados na ajuda.

MediçãoResultadoCondições
Recalcular 1.000.000 de linhas (2 campos de linha, 1 campo de coluna, 1 Sum)100 msBuild de release Win64, orçamento do QA
Recalcular 1.000.000 de linhas (2 campos de linha, 1 campo de coluna, 1 Sum)160 msBuild de release Win32, orçamento do QA
AppendRow de 1.000.000 de linhas (3 de texto, 1 float e 1 valor de data)900 msBuild de release Win64, orçamento do QA
AppendRow de 1.000.000 de linhas (3 de texto, 1 float e 1 valor de data)1.400 msBuild de release Win32, orçamento do QA

Fonte: o tópico da ajuda que documenta estes números.

Quem cria com o sgcPivotGrid

Desenvolvedores de ERP e de aplicativos corporativos

Análise de vendas e finanças dentro de um ERP

Dê à contabilidade e às vendas uma tabela dinâmica sobre a tabela de pedidos sem exportar para uma planilha. Uma fonte de dataset vincula a tabela dinâmica ao mesmo TDataSet que seus formulários usam e acompanha cada edição gravada. As datas se agrupam por ano, trimestre e mês, uma escala de cores marca as regiões fracas e um clique duplo lista as faturas por trás de um total suspeito, então as dúvidas são resolvidas dentro do seu aplicativo.

  • Fonte de dataset com atualizações em tempo real
  • Agrupamento de datas
  • Escalas de cores
  • Drill down
Execute o demo DataSetPivot

Analistas e controllers

Análise self-service para usuários avançados

Usuários avançados querem explorar, não abrir pedidos de mudança. A lista de campos permite arrastar campos entre linhas, colunas, filtros e valores, as listas de seleção de membros reduzem os dados e os layouts salvos trazem de volta suas visões favoritas. Com a ponte de IA, eles também podem digitar uma pergunta e ter o layout montado para eles, com Desfazer a um clique quando a resposta não for o que queriam.

  • Lista de campos
  • Top N com Outros
  • Persistência de layout
  • Layouts por IA
Execute o demo AdvancedPivot

Serviços de back office e relatórios

Relatórios agendados em um servidor

Resumos noturnos não precisam de tela. O mecanismo e o renderizador headless rodam em um serviço ou em um aplicativo de console, no Windows ou no Linux64 a partir do Delphi 10.2. Carregue as linhas do dia, aplique um layout salvo e grave a tabela dinâmica como PNG, SVG, HTML ou CSV, pronta para anexar a um e-mail ou publicar em uma página de intranet.

  • TsgcPivotEngine sem janela
  • TsgcPivotGridRenderer
  • Exportação para HTML e CSV
  • Linux64
Execute o demo HeadlessReport

A Pivot Table in a Few Lines

The same API in Delphi, C++ Builder and C#: load 100,000 rows once, then lay out regions by quarter with the largest region first.

A VCL form with a pivot grid and a field list: 100,000 rows loaded with one recalculation, regions by quarter, largest region first.

unit frmSales;

interface

uses
  Classes, Controls, Forms, SysUtils,
  sgcUICore_Theme, sgcPivotGrid_Types, sgcPivotGrid_Fields, sgcPivotGrid_VCL,
  sgcPivotGrid_FieldList_VCL;

type
  TFormSales = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;

implementation

procedure TFormSales.FormCreate(Sender: TObject);
const
  Regions: array[0..3] of string = ('North', 'South', 'East', 'West');
var
  vGrid: TsgcVCLPivotGrid;
  vList: TsgcVCLPivotFieldList;
  vField: TsgcPivotField;
  i: Integer;
begin
  vGrid := TsgcVCLPivotGrid.Create(Self);
  vGrid.Parent := Self;
  vGrid.Align := alClient;
  vGrid.Theme := utDark;
  vList := TsgcVCLPivotFieldList.Create(Self);
  vList.Parent := Self;
  vList.Align := alRight;
  vList.PivotGrid := vGrid;
  // load 100,000 rows, one recalculation at EndLoad
  vGrid.Pivot.BeginLoad(True);
  try
    vGrid.Pivot.DefineColumn('Region', pvtText);
    vGrid.Pivot.DefineColumn('Date', pvtDateTime);
    vGrid.Pivot.DefineColumn('Sales', pvtFloat);
    for i := 1 to 100000 do
      vGrid.Pivot.AppendRow([Regions[i mod 4], EncodeDate(2025, 1, 1) + i mod 365,
        10 + (i mod 97) * 1.5]);
  finally
    vGrid.Pivot.EndLoad;
  end;
  // layout: regions by quarter, the largest region first, shown as % of total
  vGrid.Pivot.BeginUpdate;
  try
    vField := vGrid.Pivot.AddField('Region', pvaRow);
    vField.SortBy := pvsValue;
    vField.SortOrder := pvoDescending;
    vGrid.Pivot.AddField('Date', pvaColumn, pvdQuarter).Caption := 'Quarter';
    vField := vGrid.Pivot.AddDataField('Sales', pvfSum);
    vField.ShowAs := pvwPercentOfGrandTotal;
  finally
    vGrid.Pivot.EndUpdate;
  end;
  vGrid.SaveToHTML(ExtractFilePath(ParamStr(0)) + 'sales.html');
end;

end.

Ler o tópico da ajuda →

The same pivot in C++ Builder, with the headers that the packages generate.

#include <vcl.h>
#pragma hdrstop
#include "sgcUICore_Theme.hpp"
#include "sgcPivotGrid_Types.hpp"
#include "sgcPivotGrid_Fields.hpp"
#include "sgcPivotGrid_VCL.hpp"
#include "sgcPivotGrid_FieldList_VCL.hpp"

void __fastcall BuildSalesPivot(TForm *Form)
{
	TsgcVCLPivotGrid *vGrid = new TsgcVCLPivotGrid(Form);
	vGrid->Parent = Form;
	vGrid->Align = alClient;
	vGrid->Theme = utDark;
	TsgcVCLPivotFieldList *vList = new TsgcVCLPivotFieldList(Form);
	vList->Parent = Form;
	vList->Align = alRight;
	vList->PivotGrid = vGrid;
	// load 100,000 rows, one recalculation at EndLoad
	static const String Regions[4] = {"North", "South", "East", "West"};
	Variant vValues[3];
	vGrid->Pivot->BeginLoad(true);
	try {
		vGrid->Pivot->DefineColumn("Region", pvtText);
		vGrid->Pivot->DefineColumn("Date", pvtDateTime);
		vGrid->Pivot->DefineColumn("Sales", pvtFloat);
		for (int i = 1; i <= 100000; i++) {
			vValues[0] = Regions[i % 4];
			vValues[1] = TDateTime((double)EncodeDate(2025, 1, 1) + i % 365);
			vValues[2] = 10 + (i % 97) * 1.5;
			vGrid->Pivot->AppendRow(vValues, 2);
		}
	}
	__finally {
		vGrid->Pivot->EndLoad();
	}
	// layout: regions by quarter, the largest region first, shown as % of total
	vGrid->Pivot->BeginUpdate();
	try {
		TsgcPivotField *vField = vGrid->Pivot->AddField("Region", pvaRow);
		vField->SortBy = pvsValue;
		vField->SortOrder = pvoDescending;
		vGrid->Pivot->AddField("Date", pvaColumn, pvdQuarter)->Caption = "Quarter";
		vField = vGrid->Pivot->AddDataField("Sales", pvfSum);
		vField->ShowAs = pvwPercentOfGrandTotal;
	}
	__finally {
		vGrid->Pivot->EndUpdate();
	}
	vGrid->SaveToHTML(ExtractFilePath(ParamStr(0)) + "sales.html");
}

Ler o tópico da ajuda →

The C# version for WinForms. It uses only features of the free Community edition.

using System;
using System.Windows.Forms;
using esegece.sgcPivotGrid;
using esegece.sgcUICore;

namespace SalesPivot
{
    internal class MainForm : Form
    {
        private static readonly string[] Regions = { "North", "South", "East", "West" };

        public MainForm()
        {
            Text = "Sales pivot";
            var grid = new TsgcWinFormsPivotGrid { Dock = DockStyle.Fill, Theme = TsgcUITheme.utDark };
            var list = new TsgcWinFormsPivotFieldList { Dock = DockStyle.Right, Width = 260, PivotGrid = grid, Theme = TsgcUITheme.utDark };
            Controls.Add(grid);
            Controls.Add(list);

            // load 100,000 rows, one recalculation at EndLoad
            grid.Pivot.BeginLoad();
            try
            {
                grid.Pivot.DefineColumn("Region", TsgcPivotDataType.pvtText);
                grid.Pivot.DefineColumn("Date", TsgcPivotDataType.pvtDateTime);
                grid.Pivot.DefineColumn("Sales", TsgcPivotDataType.pvtFloat);
                for (int i = 1; i <= 100000; i++)
                    grid.Pivot.AppendRow(Regions[i % 4], new DateTime(2025, 1, 1).AddDays(i % 365), 10 + (i % 97) * 1.5);
            }
            finally { grid.Pivot.EndLoad(); }

            // layout: regions by quarter, the largest region first
            grid.Pivot.BeginUpdate();
            try
            {
                var region = grid.Pivot.AddField("Region", TsgcPivotArea.pvaRow);
                region.SortBy = TsgcPivotSortBy.pvsValue;
                region.SortOrder = TsgcPivotSortOrder.pvoDescending;
                grid.Pivot.AddField("Date", TsgcPivotArea.pvaColumn, TsgcPivotDateGrouping.pvdQuarter).Caption = "Quarter";
                grid.Pivot.AddDataField("Sales", TsgcPivotAggregation.pvfSum).DisplayFormat = "#,##0";
            }
            finally { grid.Pivot.EndUpdate(); }
            grid.SaveToHTML("sales.html");
        }

        [STAThread]
        static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); }
    }
}
dotnet add package esegece.sgcPivotGrid.WinForms

Ler o tópico da ajuda →

The Delphi and C++ Builder samples show values as percent of grand total (ShowAs), a Registered edition feature. The C# sample uses only features of the free Community edition.

Execute os demos do sgcPivotGrid

Os executáveis dos demos compilados estão em sgcUI_bin.zip, sem nada para instalar. O código-fonte de todos os demos acompanha o pacote, para Delphi, C++ Builder e .NET.

SalesPivot

SalesPivot

100.000 linhas de vendas com agrupamento de datas, uma escala de cores, a lista de campos e exportação. O SalesPivotFMX é o gêmeo para FireMonkey.

DataSetPivot

DataSetPivot

Um TClientDataSet de pedidos: edite uma linha e a tabela dinâmica acompanha; clique duas vezes em uma célula para listar seus pedidos.

MillionRows

MillionRows

Carrega e dinamiza 1.000.000 de linhas geradas e mostra o tempo que levou.

AdvancedPivot

Somente Registrada AdvancedPivot

Campos calculados, mostrar valores como, Top N com Outros e salvamento e carregamento de layouts.

GridToPivotToChart

GridToPivotToChart

As linhas de um sgcGrid alimentam a tabela dinâmica, e o resultado dela alimenta um gráfico do sgcCharts, sem copiar dados.

HeadlessReport

Monta uma tabela dinâmica sem janela e a renderiza em um arquivo PNG.

Somente Registrada AskYourPivot

Digite uma pergunta na barra de consulta de IA e obtenha um layout, por meio do TsgcPivotGridAI com um provedor de respostas prontas ou o TsgcAIChat do sgcWebSockets, com Desfazer.

Demos compilados

Executáveis prontos para rodar de todos os produtos sgcUI, sem nada para instalar.

Baixar sgcUI_bin.zip →

Onde o sgcPivotGrid está incluído

O sgcPivotGrid faz parte do sgcUI Enterprise e também é vendido separadamente. O sgcPivotGrid também está incluído no pacote All-Access.

sgcPivotGrid pacote individual

€249 / desenvolvedor, código-fonte completo, 1 ano de atualizações.

Comprar o sgcPivotGrid → Ver preços →

sgcUI Enterprise

Todos os 14 produtos sgcUI, a partir de €699.

Ver Enterprise →

.NET

A edição .NET tem o mesmo preço. Uma edição Community gratuita está no NuGet como esegece.sgcPivotGrid.Community.

Ver preços →

A edição Community gratuita é o esegece.sgcPivotGrid.Community no NuGet. A tabela mostra o que ela inclui.

RecursoCommunity (gratuita)Registrada
Grade dinâmica e lista de campos (VCL, FireMonkey, WinForms, WPF, Avalonia)✓✓
Oito agregações, inclusive CountDistinct, StdDev e Var✓✓
Agrupamento de datas, subtotais e totais gerais✓✓
Filtros, ordenação e drill down✓✓
Formatação condicional e escalas de cores✓✓
Exportação para CSV, JSON e HTML, PNG e SVG headless✓✓
Layouts dinâmicos por IA com qualquer LLM e a barra de consulta de IA✓✓
Campos calculados−✓
Mostrar valores como−✓
Top N com Outros−✓
Persistência de layout−✓
Desfazer de layouts de IA, a ponte sgcPivotGridWS e o provedor de IA do sgcWebSockets−✓

Frameworks e plataformas suportados

Componentes do sgcPivotGrid

ComponenteO que faz
TsgcVCLPivotGrid, TsgcFMXPivotGridO controle de tabela dinâmica para VCL e FireMonkey (FMX a partir do XE6).
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListA lista de campos de arrastar e soltar que permite aos usuários alterar o layout.
TsgcPivotEngineO mecanismo de cálculo, acessível como Grid.Pivot e utilizável sem janela.
TsgcPivotSource_DataSet, TsgcPivotSource_TableDinamize um TDataSet ou qualquer tabela que implemente a interface de tabela do sgcUI.
TsgcPivotGridRendererSaída headless em PNG e SVG para servidores e relatórios.
TsgcPivotFormatRuleRegras de formatação condicional, como escalas de cores.
TsgcPivotGridAIPerguntas em linguagem natural convertidas em layouts dinâmicos por qualquer provedor de IA, em todas as edições e em todas as plataformas.
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarA barra de consulta de IA do sgcUICore: digite uma pergunta, leia o que foi aplicado, Cancelar e Desfazer.
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)Provedores de IA: qualquer LLM por meio de um evento, ou o TsgcAIChat do sgcWebSockets (Somente Registrada).
TsgcPivotGridAIQuery (sgcPivotGridWS)O TsgcPivotGridAI com a propriedade Chat para um TsgcAIChat do sgcWebSockets. Somente Registrada.
DestinoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLPivotGridWin32 e Win64
Delphi XE6 a 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS e Android
C++ Builder 2007 a 13Grades dinâmicas VCL e FMXCabeçalhos .hpp gerados e bibliotecas estáticas
Delphi 10.2 a 13, neutro quanto ao frameworkMecanismo, fontes, exportação, JSON de layout, renderizador headlessLinux64, por exemplo para montar relatórios dinâmicos em um servidor
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms, WPF, Avalonia, PNG e SVG headless

Perguntas frequentes

O mecanismo foi criado para grandes volumes de dados: um armazenamento de colunas tipadas, uma passada por recálculo e desenho virtual. Os orçamentos de QA no Win64 são de 100 ms para recalcular 1.000.000 de linhas e 900 ms para acrescentá-las. O tamanho do layout também conta: um layout acima de MaxCells, 5.000.000 de células por padrão, gera um erro, então agrupe as datas ou use o Top N.

Sim. O TsgcPivotSource_DataSet copia qualquer TDataSet para o mecanismo e, enquanto LiveUpdates for True, o recarrega após cada gravação. Para um lote de edições, desative-o e chame Load no final. O demo DataSetPivot mostra um TClientDataSet com atualizações em tempo real e drill down.

Não. O sgcPivotGrid é um mecanismo em memória dentro do seu aplicativo. Ele lê linhas de um dataset, de uma tabela ou do seu próprio código, agrega tudo sozinho e não precisa de servidor de banco de dados nem de modelagem de cubo.

Quatro recursos avançados: campos calculados, mostrar valores como, Top N com Outros e persistência de layout, além da ponte sgcPivotGridWS, do provedor de IA do sgcWebSockets e do Desfazer de um layout de IA. Os layouts dinâmicos por IA com o seu próprio provedor, todas as agregações, o agrupamento de datas, filtros, ordenação, drill down, regras de formatação, exportação, as listas de campos e a saída headless em PNG e SVG estão na Community.

Apenas a pergunta e o catálogo de campos: nomes, legendas, tipos e até 5 valores de exemplo por campo, nunca as linhas. A resposta é validada com os campos reais, campos e valores desconhecidos são descartados e nada muda quando não sobra nenhum layout utilizável. Funciona em todas as edições com qualquer provedor que você ligue ao TsgcUIAIEventProvider; o TsgcUIAIChatProvider pronto exige uma edição Registrada e um sgcWebSockets registrado.

Sim. As grades e o mecanismo expõem o resultado visível como um IsgcUITable por meio de ResultTable. Defina a propriedade Table de uma fonte de dados de tabela do sgcCharts como a grade dinâmica, e o gráfico desenha o que o usuário montou. O demo GridToPivotToChart encadeia sgcGrid, sgcPivotGrid e sgcCharts.

Sim. O TsgcPivotGridRenderer desenha um resultado em PNG ou SVG sem janela, e o mecanismo exporta CSV, JSON e HTML. No Linux64, as units neutras quanto ao framework compilam a partir do Delphi 10.2: o mecanismo, as fontes, a exportação, o JSON de layout e o renderizador.

Ajuda do sgcPivotGrid

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Experimente o sgcPivotGrid hoje

A avaliação do sgcUI inclui o sgcPivotGrid e todos os outros produtos sgcUI.