Delphi, C++ Builder & .NET Fait partie de sgcUI

sgcPivotGrid, la grille de tableau croisé dynamique pour Delphi, C++ Builder & .NET

Transforme des lignes brutes en réponses. Dépose des champs dans les lignes, les colonnes et les valeurs, regroupe les dates par année, trimestre ou mois, et laisse tes utilisateurs construire leur propre disposition avec une liste de champs par glisser-déposer. Un stockage typé par colonnes recalcule un million de lignes en une fraction de seconde, et un double-clic affiche les lignes sources derrière n'importe quelle cellule.

VCL, FireMonkey, WinForms, WPF, Avalonia1 000 000 de lignes : budget de recalcul de 100 ms sous Win64Édition .NET Community gratuiteInclus dans sgcUI Enterprise
Démo SalesPivot : la liste de champs avec les zones Filtres, Colonnes, Lignes et Valeurs à côté du pivot qu'elle construit

Tout ce qu'il faut à un tableau croisé dynamique

Treize fonctions en cinq groupes. Les fonctions marquées Enregistrée ne font pas partie de l'édition .NET Community gratuite.

Vitesse et données

Charge une fois, recalcule une fois, avec ou sans fenêtre.

Démo MillionRows après le croisement de 1 000 000 de lignes, avec le libellé de temps qu'elle affiche

Vitesse et données

Croise un million de lignes en une fraction de seconde

Les historiques de commandes et les journaux de capteurs dépassent vite un tableur. sgcPivotGrid garde chaque colonne dans un stockage typé par colonnes, agrège les cellules en une seule passe sur les lignes sources et ne dessine que la partie visible du résultat. Le budget QA pour recalculer 1 000 000 de lignes est de 100 ms sous Win64, et la démo MillionRows charge et croise un million de lignes et affiche son propre temps.

  • TsgcPivotEngine est le moteur, publié sous le nom Pivot sur la grille et utilisable seul
  • BeginLoad, DefineColumn, AppendRow et EndLoad chargent les lignes avec un seul recalcul à la fin
  • BeginUpdate et EndUpdate regroupent les changements de disposition en une seule passe
  • Les colonnes de texte sont encodées par dictionnaire, et les totaux viennent des valeurs sources, jamais de moyennes de moyennes
Lire la rubrique d'aide
Démo DataSetPivot : une table de commandes au-dessus d'un pivot qui suit les modifications

Vitesse et données

Alimente-le depuis un TDataSet, une grille ou ton propre code

Pointe le pivot vers les données que tu as déjà. Une source dataset copie tout TDataSet dans le moteur et, avec les mises à jour en direct activées, le recharge après chaque enregistrement, le pivot suit donc les modifications de tes utilisateurs dans une fiche. Une source table lit toute IsgcUITable, comme un sgcGrid, et ne recharge que lorsque la table change. Le code qui détient déjà les lignes en mémoire les ajoute simplement. Le pivot n'écrit jamais dans tes données.

  • TsgcPivotSource_DataSet avec DataSet, Active, Columns et LiveUpdates
  • Tout descendant de TDataSet fonctionne, car la source le lit via un TDataLink
  • TsgcPivotSource_Table lit un sgcGrid ou toute autre IsgcUITable et recharge quand TableVersion change
  • En .NET, le même moteur lit une DataTable
Lire la rubrique d'aide

Analyse

Les questions d'un responsable des ventes, résolues par des propriétés.

Pivot avec 2025 développé en trimestres et en mois et 2024 réduit

Analyse

Des dates regroupées comme les gens les pensent

Personne ne lit un rapport de ventes jour après jour. Ajoute le même champ de date plusieurs fois aux colonnes avec un regroupement différent et sgcPivotGrid construit des niveaux Année, Trimestre et Mois, chacun avec son sous-total. Les utilisateurs ouvrent et ferment les niveaux avec les boutons plus et moins, et ton code peut développer tout un niveau d'un coup. Développer ou réduire construit un nouvel instantané sans réagréger les données. Les regroupements par semaine et par jour existent pour les rapports opérationnels qui en ont besoin.

  • TsgcPivotDateGrouping : pvdYear, pvdQuarter, pvdMonth, pvdWeek et pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) ajoute un niveau par appel
  • ExpandAll, CollapseAll et ExpandLevel pour chaque axe
  • Sous-totaux et totaux généraux avec leur propre position et leur propre libellé
Lire la rubrique d'aide
Trois mesures côte à côte : somme du montant, clients distincts et marge moyenne

Analyse

Huit agrégations, dont le comptage distinct

Le chiffre d'affaires est une somme et un nombre de commandes est un comptage, mais le nombre de clients différents qui ont acheté en mars est un comptage distinct, et c'est le chiffre que demandent les équipes financières. Chaque champ de données choisit sa propre agrégation, une même disposition peut donc afficher côte à côte la somme des ventes, le nombre de clients distincts et la marge moyenne. Dans la liste de champs, le bouton d'une pastille Valeurs change l'agrégation en un clic. Les totaux sont toujours calculés à partir des valeurs sources.

  • TsgcPivotAggregation : pvfSum, pvfCount, pvfAverage, pvfMin et pvfMax
  • pvfCountDistinct, pvfStdDev et pvfVar pour les statistiques
  • AddDataField('Sales', pvfSum) ajoute une mesure, et plusieurs mesures se placent sous chaque membre de colonne
  • Les huit sont dans l'édition Community gratuite
Lire la rubrique d'aide
Top 5 des produits par ventes plus une ligne Autres, avec la liste de membres à cocher ouverte

Analyse Enregistrée uniquement

Filtre ce qui compte, garde le top N

Les grandes dispositions ne sont utiles que si les utilisateurs peuvent les restreindre. Les filtres par membre, par libellé et par valeur réduisent le résultat, avec 13 opérateurs, de égal à entre et contient. Le Top N conserve les membres aux totaux les plus élevés dans chaque parent et peut regrouper le reste dans une seule ligne Autres, pour que les totaux restent justes. Une exploration sur Autres renvoie les lignes sources de chaque membre qu'elle contient.

  • TsgcPivotFilterOperator : pvcEqual, pvcGreater, pvcBetween, pvcContains, pvcBeginsWith et d'autres
  • FilterValues et FilterExclude pour les listes de membres à cocher, aussi depuis la liste de champs
  • TopN, TopNOthers et OthersCaption pour la vue Top N
  • SortBy pvsValue avec pvoDescending liste les plus grands en premier

Les filtres par membre, par libellé et par valeur et le tri sont dans l'édition Community. Le Top N avec Autres est Enregistrée.

Lire la rubrique d'aide
Démo AdvancedPivot avec un champ de marge calculé et le pourcentage du total de la colonne

Analyse Enregistrée uniquement

Champs calculés et pourcentage du total

Marges, bénéfices et parts sont les chiffres dont parlent les responsables, et ils existent rarement comme colonnes dans la base de données. Un champ calculé calcule une valeur pour chaque ligne source à partir d'une expression, avec IF, ROUND, MIN, MAX, ISNULL et des fonctions de date, puis il est agrégé comme n'importe quelle autre colonne. Afficher les valeurs comme transforme une mesure en pourcentage de la ligne, de la colonne ou du total général, en cumul, en écart par rapport à un élément de base ou en rang.

  • CalculatedFields.Add renvoie un TsgcPivotCalculatedField avec Name et Expression
  • Évaluation au niveau des lignes : la somme d'un bénéfice calculé est la somme des bénéfices
  • ShowAs : pvwPercentOfRow, pvwPercentOfColumn, pvwPercentOfGrandTotal, pvwRunningTotal, pvwDifferenceFrom, pvwRank
  • ShowAsBaseItem choisit le membre à partir duquel un écart est mesuré

Absent de l'édition Community : ces membres sont compilés sous SGC_PIVOTGRID_ADVANCED.

Lire la rubrique d'aide

Interaction

Laisse tes utilisateurs trouver eux-mêmes la réponse.

Interaction

Les utilisateurs construisent leur propre rapport par glisser-déposer

Une nouvelle question ne devrait pas exiger une nouvelle version. Place une liste de champs à côté de la grille, définis une propriété, et les utilisateurs font glisser les colonnes sources dans Filtres, Colonnes, Lignes et Valeurs. Une colonne de texte déposée sur Valeurs compte, une colonne numérique additionne, et le bouton de la pastille change l'agrégation. Chaque pastille ouvre une liste de membres à cocher avec un champ de recherche, et le mode différé garde les changements en attente jusqu'à ce que l'utilisateur les applique, ce qui aide sur de très gros volumes. La même liste de champs fonctionne sous FireMonkey.

  • TsgcVCLPivotFieldList et TsgcFMXPivotFieldList, liées via PivotGrid
  • Quatre zones : pvaFilter, pvaColumn, pvaRow et pvaData
  • DeferUpdate et ApplyChanges recalculent une seule fois, quand l'utilisateur a terminé
  • Listes de champs WinForms, WPF et Avalonia en .NET
  • De droite à gauche pour l'arabe et l'hébreu : la zone des en-têtes de lignes, l'ordre des colonnes, les chevrons et la liste des champs sont en miroir, et l'export XLSX écrit une feuille de droite à gauche
Lire la rubrique d'aide
Pivot pays par mois avec une échelle de couleurs verte sur les valeurs de ventes

Interaction

Les échelles de couleurs révèlent instantanément les points chauds

Une grille de chiffres cache l'histoire tant que personne ne la colore. Les règles de format teintent les cellules de données selon leurs valeurs : une échelle de couleurs nuance chaque cellule entre deux couleurs selon sa place entre la plus petite et la plus grande valeur de la mesure, et les règles de valeur colorent ou mettent en gras les cellules qui remplissent une condition. Les mêmes règles s'appliquent à l'écran et dans les images PNG et SVG, car les deux sont dessinées par le même moteur de rendu. Aucun code de dessin personnalisé n'est nécessaire.

  • TsgcPivotFormatRule dans la collection FormatRules, modifiable dans l'inspecteur d'objets
  • pvrColorScale avec MinColor et MaxColor
  • Règles pvrValue avec un opérateur, BackColor, ForeColor et Bold
  • Measure choisit le champ de données, et Theme bascule entre clair et sombre
Lire la rubrique d'aide
Démo DataSetPivot avec les commandes derrière une cellule du pivot listées à côté de la grille

Interaction

Explore les lignes derrière n'importe quel chiffre

Quand un total semble faux, la première question est de savoir quelles commandes le composent. Un double-clic sur une cellule, ou Entrée au clavier, explore le détail, et le moteur renvoie les lignes sources qui ont été agrégées dans cette valeur, sous forme de numéros de ligne ou de table avec chaque colonne du stockage, y compris les colonnes absentes de la disposition. La démo DataSetPivot liste les commandes derrière une cellule dans un panneau latéral.

  • OnDrillDown de la grille, et DrillDownCell pour le déclencher depuis le code
  • DrillDown renvoie les lignes sources sous forme de IsgcUITable
  • GetSourceRows donne les numéros de ligne et SourceValue lit une valeur
  • Une exploration sur la ligne Autres d'un Top N renvoie les lignes de chaque membre qu'elle contient
Lire la rubrique d'aide

Interaction

Demande une disposition en langage naturel

Les utilisateurs saisissent une question comme top 3 des pays par ventes par trimestre, dans la barre de requête IA ou depuis ton code, et TsgcPivotGridAI demande la disposition à un fournisseur d'IA. N'importe quel LLM convient : TsgcUIAIEventProvider transmet chaque requête à ton propre code, et TsgcUIAIChatProvider utilise le composant TsgcAIChat de sgcWebSockets. Seuls la question et le catalogue de champs quittent l'application : noms, libellés, types et jusqu'à 5 valeurs d'exemple par champ, jamais les lignes. La réponse est vérifiée par rapport aux vrais champs avant d'être appliquée en un seul recalcul, et Annuler rétablit la disposition précédente.

  • TsgcPivotGridAI avec Provider et PivotGrid, sur VCL, FireMonkey, WinForms, WPF et Avalonia
  • Ask attend la réponse, AskAsync s'exécute sur un thread de travail et Cancel l'arrête
  • OnBeforeAsk peut modifier ou annuler la requête, OnLayout peut refuser la réponse
  • MaxSampleValues limite les exemples ; les champs inconnus sont ignorés et la réponse est plafonnée à 64 Ko
  • TsgcPivotGridAIQuery du pont sgcPivotGridWS fonctionne toujours avec Chat, et un Provider assigné l'emporte sur Chat

Chaque édition et chaque plateforme, Community comprise ; l'annulation d'une disposition IA n'est pas dans l'édition Community. Le fournisseur sgcWebSockets nécessite une édition Enregistrée avec un sgcWebSockets enregistré : sgcUICoreWS en Delphi et C++ Builder, le paquet esegece.sgcUICore.sgcWebSockets en .NET.

Lire la rubrique d'aide

Sortie

Un fichier, un navigateur, un graphique ou une tâche serveur.

Démo GridToPivotToChart : lignes de la grille, pivot et graphique sgcCharts en trois volets

Sortie

Exporte ce que tu vois, ou affiche-le en graphique

Un pivot est souvent le début d'un rapport, pas sa fin. Chaque export écrit la vue telle que l'utilisateur l'a organisée, avec ses niveaux développés et ses filtres : CSV pour les tableurs, JSON pour d'autres systèmes, HTML pour un navigateur ou un e-mail, PNG et SVG pour des documents. Le résultat est aussi une table que sgcCharts lit directement, la démo GridToPivotToChart passe donc des lignes d'une grille à un pivot puis à un graphique sans copier de données. Les flux fonctionnent aussi bien que les fichiers.

  • SaveToCSV, SaveToJSON et SaveToHTML vers un fichier ou un flux
  • SaveToPNG et SaveToSVG avec une taille facultative
  • TsgcPivotGridRenderer dessine sans fenêtre, sur un serveur ou sous Linux64
  • ResultTable expose le résultat visible sous forme de IsgcUITable pour sgcCharts
Lire la rubrique d'aide
Liste de dispositions avec les vues enregistrées Ventes par région et Marge par produit

Sortie Enregistrée uniquement

Enregistre une disposition, restaure-la en un appel

Les utilisateurs avancés reconstruisent sans cesse les mêmes vues : ventes par région le lundi, marge par produit en fin de mois. La persistance de disposition écrit toute la disposition en JSON, avec ses champs, zones, regroupements, agrégations, tris, filtres et totaux, et la recharge avec un seul recalcul. Conserve-la dans un fichier, un champ de base de données ou un profil utilisateur, propose une liste de vues nommées, ou copie la disposition d'une grille vers une autre.

  • SaveLayoutToFile et LoadLayoutFromFile sur les grilles et le moteur
  • SaveLayoutToString et LoadLayoutFromString pour une base de données ou un magasin de paramètres
  • Les versions grille conservent aussi les largeurs de colonnes modifiées par l'utilisateur
  • Copie une disposition entre grilles avec LoadLayoutFromString(SaveLayoutToString)

Absent de l'édition Community.

Lire la rubrique d'aide

Accessibilité

UI Automation pour les lecteurs d'écran, le clavier et le contraste élevé, sans configuration.

Accessibilité

Un tableau croisé dynamique exposé avec ses en-têtes

sgcPivotGrid expose son contenu à Microsoft UI Automation sous forme de tableau avec des en-têtes de ligne et de colonne qui se développent et se réduisent, des cellules de données et des totaux. La liste de champs est exposée comme une liste de champs par zone, un utilisateur de lecteur d'écran peut donc aussi construire le tableau croisé.

  • Flèches, Début, Fin, Page précédente et Page suivante déplacent la cellule qui a le focus, et Gauche et Droite (ou les touches plus et moins) réduisent et développent les en-têtes
  • Dans la liste de champs, Haut et Bas déplacent le focus entre les champs, Ctrl+1 à Ctrl+4 déplacent le champ vers les lignes, les colonnes, les valeurs ou les filtres, Ctrl+Haut et Ctrl+Bas le réordonnent, Espace le bascule et Suppr le retire
  • Les touches de la liste de champs remplacent le glissement des champs à la souris
  • Un anneau de focus visible, et sous un thème à contraste élevé de Windows le tableau croisé se dessine avec les couleurs du système

L'accessibilité est activée par défaut dans toutes les éditions, l'édition Community gratuite comprise, sur VCL dans toutes les versions de Delphi et C++Builder de Delphi 7 à Delphi 13, sur FireMonkey sous Windows, et sur WinForms, WPF et Avalonia. Dans Delphi et C++Builder, AccessibleName et AccessibleDescription définissent le nom et la description exposés à UI Automation, et en .NET le nom accessible et le texte d'aide standard de chaque framework font de même. Voir les rapports de conformité d'accessibilité.

Lire la rubrique d'aide

Découvre sgcPivotGrid en action

sgcPivotGrid dans les démos de la suite sgcUI : des applications complètes qui fonctionnent hors ligne avec des données simulées intégrées.

Mesuré par rapport à des budgets

Le groupe de performance QA exécute ces scénarios sur des builds release, en médiane de cinq exécutions sur des données fixes. Les chiffres sont des budgets que chaque scénario doit respecter, publiés dans l'aide.

MesureRésultatConditions
Recalcul de 1 000 000 de lignes (2 champs de ligne, 1 champ de colonne, 1 Sum)100 msBuild release Win64, budget QA
Recalcul de 1 000 000 de lignes (2 champs de ligne, 1 champ de colonne, 1 Sum)160 msBuild release Win32, budget QA
AppendRow de 1 000 000 de lignes (3 textes, 1 flottant et 1 date)900 msBuild release Win64, budget QA
AppendRow de 1 000 000 de lignes (3 textes, 1 flottant et 1 date)1 400 msBuild release Win32, budget QA

Source : la rubrique d'aide qui documente ces chiffres.

Qui construit avec sgcPivotGrid

Développeurs d'ERP et d'applications métier

Analyse des ventes et de la finance dans un ERP

Donne aux équipes comptables et commerciales un pivot sur la table des commandes sans export vers un tableur. Une source dataset lie le pivot au même TDataSet que tes fiches et suit chaque modification enregistrée. Les dates se regroupent par année, trimestre et mois, une échelle de couleurs signale les régions faibles, et un double-clic liste les factures derrière un total suspect, les questions trouvent donc leur réponse dans ton application.

  • Source dataset avec mises à jour en direct
  • Regroupement de dates
  • Échelles de couleurs
  • Exploration du détail
Lance la démo DataSetPivot

Analystes et contrôleurs de gestion

Analyse en libre-service pour utilisateurs avancés

Les utilisateurs avancés veulent explorer, pas déposer des demandes de changement. La liste de champs leur permet de faire glisser des champs entre lignes, colonnes, filtres et valeurs, les listes de membres à cocher restreignent les données, et les dispositions enregistrées ramènent leurs vues préférées. Avec le pont IA, ils peuvent aussi saisir une question et obtenir la disposition construite pour eux, avec Annuler à un clic quand la réponse ne correspond pas à leur intention.

  • Liste de champs
  • Top N avec Autres
  • Persistance de disposition
  • Dispositions IA
Lance la démo AdvancedPivot

Services de back-office et de reporting

Rapports planifiés sur un serveur

Les synthèses de nuit n'ont pas besoin d'écran. Le moteur et le moteur de rendu sans interface s'exécutent dans un service ou une application console, sous Windows ou sous Linux64 à partir de Delphi 10.2. Charge les lignes du jour, applique une disposition enregistrée et écris le pivot en PNG, SVG, HTML ou CSV, prêt à joindre à un e-mail ou à publier sur une page d'intranet.

  • TsgcPivotEngine sans fenêtre
  • TsgcPivotGridRenderer
  • Export HTML et CSV
  • Linux64
Lance la démo HeadlessReport

Un tableau croisé dynamique en quelques lignes

La même API en Delphi, C++ Builder et C# : charge 100 000 lignes une fois, puis dispose les régions par trimestre avec la plus grande région en premier.

Une fiche VCL avec une grille pivot et une liste de champs : 100 000 lignes chargées avec un seul recalcul, régions par trimestre, plus grande région en premier.

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.

Lire la rubrique d'aide →

Le même pivot en C++ Builder, avec les en-têtes générés par les paquets.

#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");
}

Lire la rubrique d'aide →

La version C# pour WinForms. Elle n'utilise que des fonctions de l'édition Community gratuite.

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

Lire la rubrique d'aide →

Les exemples Delphi et C++ Builder affichent les valeurs en pourcentage du total général (ShowAs), une fonction de l'édition Enregistrée. L'exemple C# n'utilise que des fonctions de l'édition Community gratuite.

Lance les démos de sgcPivotGrid

Les exécutables de démos compilés se trouvent dans sgcUI_bin.zip, rien à installer. Le code source de chaque démo est livré avec le paquet, pour Delphi, C++ Builder et .NET.

SalesPivot

SalesPivot

100 000 lignes de ventes avec regroupement de dates, échelle de couleurs, liste de champs et export. SalesPivotFMX est son jumeau FireMonkey.

DataSetPivot

DataSetPivot

Un TClientDataSet de commandes : modifie une ligne et le pivot suit ; double-clique sur une cellule pour lister ses commandes.

MillionRows

MillionRows

Charge et croise 1 000 000 de lignes générées et affiche le temps écoulé.

AdvancedPivot

Enregistrée uniquement AdvancedPivot

Champs calculés, afficher les valeurs comme, Top N avec Autres, et enregistrement et chargement des dispositions.

GridToPivotToChart

GridToPivotToChart

Les lignes d'un sgcGrid alimentent le pivot, et le résultat du pivot alimente un graphique sgcCharts, sans copier de données.

HeadlessReport

Construit un pivot sans fenêtre et le rend dans un fichier PNG.

Enregistrée uniquement AskYourPivot

Saisis une question dans la barre de requête IA et obtiens une disposition, via TsgcPivotGridAI avec un fournisseur simulé ou le TsgcAIChat de sgcWebSockets, avec Annuler.

Démos compilées

Des exécutables prêts à lancer pour chaque produit sgcUI, rien à installer.

Télécharger sgcUI_bin.zip →

Où sgcPivotGrid est inclus

sgcPivotGrid fait partie de sgcUI Enterprise, et il est aussi vendu séparément. sgcPivotGrid est aussi inclus dans le pack All-Access.

sgcPivotGrid, package seul

€249 / développeur, code source complet, 1 an de mises à jour.

Acheter sgcPivotGrid → Voir les tarifs →

sgcUI Enterprise

Les 14 produits sgcUI, à partir de €699.

Voir Enterprise →

.NET

L'édition .NET a le même prix. Une édition Community gratuite est disponible sur NuGet sous le nom esegece.sgcPivotGrid.Community.

Voir les tarifs →

L'édition Community gratuite est esegece.sgcPivotGrid.Community sur NuGet. Le tableau montre ce qu'elle inclut.

FonctionnalitéCommunity (gratuite)Enregistrée
Grille pivot et liste de champs (VCL, FireMonkey, WinForms, WPF, Avalonia)✓✓
Huit agrégations, dont CountDistinct, StdDev et Var✓✓
Regroupement de dates, sous-totaux et totaux généraux✓✓
Filtres, tri et exploration du détail✓✓
Mise en forme conditionnelle et échelles de couleurs✓✓
Export en CSV, JSON et HTML, PNG et SVG sans interface✓✓
Dispositions de pivot par IA avec n'importe quel LLM et la barre de requête IA✓✓
Champs calculés−✓
Afficher les valeurs comme−✓
Top N avec Autres−✓
Persistance de disposition−✓
Annulation des dispositions IA, pont sgcPivotGridWS et fournisseur d'IA sgcWebSockets−✓

Frameworks et plateformes pris en charge

Composants de sgcPivotGrid

ComposantRôle
TsgcVCLPivotGrid, TsgcFMXPivotGridLe contrôle de tableau croisé dynamique pour VCL et FireMonkey (FMX à partir de XE6).
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListLa liste de champs par glisser-déposer qui permet aux utilisateurs de changer la disposition.
TsgcPivotEngineLe moteur de calcul, accessible via Grid.Pivot et utilisable sans fenêtre.
TsgcPivotSource_DataSet, TsgcPivotSource_TableCroise un TDataSet, ou toute table qui implémente l'interface de table sgcUI.
TsgcPivotGridRendererSortie PNG et SVG sans interface pour les serveurs et les rapports.
TsgcPivotFormatRuleRègles de mise en forme conditionnelle, comme les échelles de couleurs.
TsgcPivotGridAIQuestions en langage naturel transformées en dispositions de pivot par n'importe quel fournisseur d'IA, dans chaque édition et sur toutes les plateformes.
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarLa barre de requête IA de sgcUICore : saisis une question, lis ce qui a été appliqué, interromps et annule.
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)Fournisseurs d'IA : n'importe quel LLM via un seul événement, ou le TsgcAIChat de sgcWebSockets (Enregistrée uniquement).
TsgcPivotGridAIQuery (sgcPivotGridWS)TsgcPivotGridAI avec la propriété Chat pour un TsgcAIChat de sgcWebSockets. Enregistrée uniquement.
CibleComposantPlateformes
Delphi 7 à 13, VCLTsgcVCLPivotGridWin32 et Win64
Delphi XE6 à 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS et Android
C++ Builder 2007 à 13Grilles pivot VCL et FMXEn-têtes .hpp générés et bibliothèques statiques
Delphi 10.2 à 13, indépendant du frameworkMoteur, sources, export, JSON de disposition, moteur de rendu sans interfaceLinux64, par exemple pour générer des rapports pivot sur un serveur
.NET Framework 4.7.2, .NET 8, 9 et 10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms, WPF, Avalonia, PNG et SVG sans interface

Foire aux questions

Le moteur est conçu pour les gros volumes : stockage typé par colonnes, une seule passe par recalcul et dessin virtuel. Les budgets QA sous Win64 sont de 100 ms pour recalculer 1 000 000 de lignes et de 900 ms pour les ajouter. La taille de la disposition compte aussi : une disposition au-dessus de MaxCells, 5 000 000 de cellules par défaut, déclenche une erreur, regroupe donc les dates ou utilise le Top N.

Oui. TsgcPivotSource_DataSet copie tout TDataSet dans le moteur et, tant que LiveUpdates vaut True, le recharge après chaque enregistrement. Pour un lot de modifications, désactive-le et appelle Load à la fin. La démo DataSetPivot montre un TClientDataSet avec mises à jour en direct et exploration du détail.

Non. sgcPivotGrid est un moteur en mémoire à l'intérieur de ton application. Il lit les lignes d'un dataset, d'une table ou de ton propre code, les agrège lui-même et ne nécessite ni serveur de base de données ni conception de cube.

Quatre fonctions avancées : champs calculés, afficher les valeurs comme, Top N avec Autres et persistance de disposition, plus le pont sgcPivotGridWS, le fournisseur d'IA sgcWebSockets et l'annulation d'une disposition IA. Les dispositions de pivot par IA avec ton propre fournisseur, toutes les agrégations, le regroupement de dates, les filtres, le tri, l'exploration du détail, les règles de format, l'export, les listes de champs et la sortie PNG et SVG sans interface sont dans Community.

Seulement la question et le catalogue de champs : noms de champs, libellés, types et jusqu'à 5 valeurs d'exemple par champ, jamais les lignes. La réponse est validée par rapport aux vrais champs, les champs et valeurs inconnus sont ignorés, et rien ne change quand aucune disposition exploitable ne reste. Elle fonctionne dans chaque édition avec n'importe quel fournisseur que tu branches sur TsgcUIAIEventProvider ; le TsgcUIAIChatProvider prêt à l'emploi nécessite une édition Enregistrée et un sgcWebSockets enregistré.

Oui. Les grilles et le moteur exposent le résultat visible sous forme de IsgcUITable via ResultTable. Définis la propriété Table d'une source de données table de sgcCharts sur la grille pivot, et le graphique trace ce que l'utilisateur a disposé. La démo GridToPivotToChart enchaîne sgcGrid, sgcPivotGrid et sgcCharts.

Oui. TsgcPivotGridRenderer dessine un résultat en PNG ou SVG sans fenêtre, et le moteur exporte en CSV, JSON et HTML. Sous Linux64, les unités indépendantes du framework compilent à partir de Delphi 10.2 : le moteur, les sources, l'export, le JSON de disposition et le moteur de rendu.

Aide de sgcPivotGrid

3,000+Développeurs
20+Ans
761+Composants
30+Intégrations d'API
5Plateformes
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement

Essaie sgcPivotGrid dès aujourd'hui

L'essai sgcUI inclut sgcPivotGrid et tous les autres produits sgcUI.