Delphi, C++ Builder & .NET Teil von sgcUI

sgcPivotGrid, das Pivot-Tabellen-Grid für Delphi, C++ Builder & .NET

Mach aus Rohdaten Antworten. Lege Felder in Zeilen, Spalten und Werte, gruppiere Datumsfelder nach Jahr, Quartal oder Monat und lass deine Benutzer ihr eigenes Layout mit einer Feldliste per Drag and Drop bauen. Ein typisierter Spaltenspeicher berechnet eine Million Zeilen in einem Bruchteil einer Sekunde neu, und ein Doppelklick zeigt die Quellzeilen hinter jeder Zelle.

VCL, FireMonkey, WinForms, WPF, Avalonia1.000.000 Zeilen: 100 ms Budget für die Neuberechnung unter Win64Kostenlose .NET Community EditionEnthalten in sgcUI Enterprise
SalesPivot-Demo: die Feldliste mit den Bereichen Filter, Spalten, Zeilen und Werte neben dem Pivot, den sie baut

Alles, was eine Pivot-Tabelle braucht

Dreizehn Funktionen in fünf Gruppen. Als Registered markierte Funktionen sind nicht in der kostenlosen .NET Community Edition enthalten.

Geschwindigkeit und Daten

Einmal laden, einmal neu berechnen, mit oder ohne Fenster.

MillionRows-Demo nach dem Pivotieren von 1.000.000 Zeilen, mit dem Zeit-Label, das sie ausgibt

Geschwindigkeit und Daten

Eine Million Zeilen in einem Bruchteil einer Sekunde pivotieren

Bestellhistorien und Sensorprotokolle wachsen schnell über eine Tabellenkalkulation hinaus. sgcPivotGrid hält jede Spalte in einem typisierten Spaltenspeicher, aggregiert die Zellen in einem Durchlauf über die Quellzeilen und zeichnet nur den sichtbaren Teil des Ergebnisses. Das QA-Budget für die Neuberechnung von 1.000.000 Zeilen beträgt 100 ms unter Win64, und die Demo MillionRows lädt und pivotiert eine Million Zeilen und gibt ihre eigene Zeitmessung aus.

  • TsgcPivotEngine ist die Engine, am Grid als Pivot veröffentlicht und auch allein nutzbar
  • BeginLoad, DefineColumn, AppendRow und EndLoad laden die Zeilen mit einer Neuberechnung am Ende
  • BeginUpdate und EndUpdate fassen Layoutänderungen in einem Durchlauf zusammen
  • Textspalten sind wörterbuchcodiert, und Summen stammen aus den Quellwerten, nie aus Mittelwerten von Mittelwerten
Hilfethema lesen
DataSetPivot-Demo: eine Bestelltabelle über einem Pivot, der den Änderungen folgt

Geschwindigkeit und Daten

Aus einem TDataSet, einem Grid oder deinem eigenen Code speisen

Richte den Pivot auf die Daten, die du schon hast. Eine Dataset-Quelle kopiert jedes TDataSet in die Engine und lädt es bei eingeschalteter Live-Aktualisierung nach jedem Post neu, sodass der Pivot den Änderungen folgt, die deine Benutzer in einem Formular machen. Eine Tabellenquelle liest jedes IsgcUITable, etwa ein sgcGrid, und lädt nur neu, wenn sich die Tabelle ändert. Code, der die Zeilen schon im Speicher hält, hängt sie einfach an. Der Pivot schreibt nie in deine Daten zurück.

  • TsgcPivotSource_DataSet mit DataSet, Active, Columns und LiveUpdates
  • Jeder Nachkomme von TDataSet funktioniert, weil die Quelle ihn über einen TDataLink liest
  • TsgcPivotSource_Table liest ein sgcGrid oder jedes andere IsgcUITable und lädt neu, wenn sich TableVersion ändert
  • In .NET liest dieselbe Engine eine DataTable
Hilfethema lesen

Analyse

Die Fragen eines Vertriebsleiters, mit Eigenschaften beantwortet.

Pivot mit 2025 bis auf Quartale und Monate aufgeklappt und 2024 zugeklappt

Analyse

Datumsangaben so gruppiert, wie Menschen denken

Niemand liest einen Vertriebsbericht Tag für Tag. Füge dasselbe Datumsfeld mehrfach mit unterschiedlicher Gruppierung zu den Spalten hinzu, und sgcPivotGrid baut daraus die Ebenen Jahr, Quartal und Monat, jede mit eigener Zwischensumme. Benutzer öffnen und schließen die Ebenen mit den Plus- und Minus-Schaltflächen, und dein Code kann eine ganze Ebene auf einmal aufklappen. Auf- oder Zuklappen erstellt einen neuen Snapshot, ohne die Daten erneut zu aggregieren. Gruppierungen nach Woche und Tag gibt es für operative Berichte, die sie brauchen.

  • TsgcPivotDateGrouping: pvdYear, pvdQuarter, pvdMonth, pvdWeek und pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) fügt pro Aufruf eine Ebene hinzu
  • ExpandAll, CollapseAll und ExpandLevel für jede Achse
  • Zwischensummen und Gesamtsummen mit eigener Position und Beschriftung
Hilfethema lesen
Drei Kennzahlen nebeneinander: Summe der Beträge, eindeutige Kunden und durchschnittliche Marge

Analyse

Acht Aggregationen, einschließlich eindeutiger Anzahl

Umsatz ist eine Summe und eine Bestellzahl eine Anzahl, aber wie viele verschiedene Kunden im März gekauft haben, ist eine eindeutige Anzahl, und genau diese Zahl fragen Finanzteams ab. Jedes Datenfeld wählt seine eigene Aggregation, sodass ein Layout die Umsatzsumme, die Zahl der eindeutigen Kunden und die durchschnittliche Marge nebeneinander zeigen kann. In der Feldliste schaltet die Schaltfläche eines Werte-Chips die Aggregation mit einem Klick um. Summen werden immer aus den Quellwerten berechnet.

  • TsgcPivotAggregation: pvfSum, pvfCount, pvfAverage, pvfMin und pvfMax
  • pvfCountDistinct, pvfStdDev und pvfVar für Statistik
  • AddDataField('Sales', pvfSum) fügt eine Kennzahl hinzu, und mehrere Kennzahlen stehen unter jedem Spaltenmitglied
  • Alle acht sind in der kostenlosen Community Edition enthalten
Hilfethema lesen
Top 5 Produkte nach Umsatz plus eine Zeile Sonstige, mit geöffneter Mitglieder-Checkliste

Analyse Nur Registered

Auf das Wesentliche filtern, die Top N behalten

Große Layouts sind nur nützlich, wenn Benutzer sie eingrenzen können. Filter nach Mitglied, Beschriftung und Wert schneiden das Ergebnis zusammen, mit 13 Operatoren von gleich über zwischen bis enthält. Top N behält die Mitglieder mit den größten Summen innerhalb jedes Elternelements und kann den Rest in einer einzigen Zeile Sonstige zusammenfassen, sodass die Summen weiter stimmen. Ein Drilldown auf Sonstige liefert die Quellzeilen aller darin enthaltenen Mitglieder.

  • TsgcPivotFilterOperator: pvcEqual, pvcGreater, pvcBetween, pvcContains, pvcBeginsWith und mehr
  • FilterValues und FilterExclude für Mitglieder-Checklisten, auch aus der Feldliste
  • TopN, TopNOthers und OthersCaption für die Top-N-Ansicht
  • SortBy pvsValue mit pvoDescending listet die größten zuerst

Filter nach Mitglied, Beschriftung und Wert sowie Sortierung sind in der Community Edition enthalten. Top N mit Sonstige ist Registered.

Hilfethema lesen
AdvancedPivot-Demo mit einem berechneten Margenfeld und Prozent der Spaltensumme

Analyse Nur Registered

Berechnete Felder und Prozent der Summe

Margen, Gewinn und Anteile sind die Zahlen, über die Manager sprechen, und sie existieren selten als Spalten in der Datenbank. Ein berechnetes Feld ermittelt für jede Quellzeile aus einem Ausdruck einen Wert, mit IF, ROUND, MIN, MAX, ISNULL und Datumsfunktionen, und wird dann wie jede andere Spalte aggregiert. Werte anzeigen als macht aus einer Kennzahl Prozent der Zeilen-, Spalten- oder Gesamtsumme, eine laufende Summe, eine Differenz zu einem Basiselement oder einen Rang.

  • CalculatedFields.Add liefert ein TsgcPivotCalculatedField mit Name und Expression
  • Auswertung auf Zeilenebene: Die Summe eines berechneten Gewinns ist die Summe der Gewinne
  • ShowAs: pvwPercentOfRow, pvwPercentOfColumn, pvwPercentOfGrandTotal, pvwRunningTotal, pvwDifferenceFrom, pvwRank
  • ShowAsBaseItem wählt das Mitglied, von dem aus eine Differenz gemessen wird

Nicht in der Community Edition: Diese Member werden unter SGC_PIVOTGRID_ADVANCED kompiliert.

Hilfethema lesen

Interaktion

Lass deine Benutzer die Antwort selbst finden.

Interaktion

Benutzer bauen ihren eigenen Bericht per Drag and Drop

Eine neue Frage sollte kein neues Release brauchen. Setze eine Feldliste neben das Grid, stelle eine Eigenschaft ein, und Benutzer ziehen Quellspalten in Filter, Spalten, Zeilen und Werte. Eine Textspalte, die auf Werte fällt, zählt, eine numerische summiert, und die Chip-Schaltfläche schaltet die Aggregation um. Jeder Chip öffnet eine Mitglieder-Checkliste mit Suchfeld, und der verzögerte Modus hält die Änderungen ausstehend, bis der Benutzer sie anwendet, was bei sehr großen Daten hilft. Dieselbe Feldliste funktioniert in FireMonkey.

  • TsgcVCLPivotFieldList und TsgcFMXPivotFieldList, über PivotGrid gebunden
  • Vier Bereiche: pvaFilter, pvaColumn, pvaRow und pvaData
  • DeferUpdate und ApplyChanges berechnen einmal neu, wenn der Benutzer fertig ist
  • Feldlisten für WinForms, WPF und Avalonia in .NET
  • Rechts nach links für Arabisch und Hebräisch: Der Zeilenkopfbereich, die Spaltenreihenfolge, die Chevrons und die Feldliste sind gespiegelt, und der XLSX-Export schreibt ein Blatt von rechts nach links
Hilfethema lesen
Pivot Land nach Monat mit grüner Farbskala auf den Umsatzwerten

Interaktion

Farbskalen zeigen Brennpunkte sofort

Ein Raster aus Zahlen verbirgt die Geschichte, bis jemand es einfärbt. Formatregeln tönen die Datenzellen nach ihren Werten: Eine Farbskala schattiert jede Zelle zwischen zwei Farben nach ihrer Stellung zwischen dem kleinsten und dem größten Wert der Kennzahl, und Wertregeln färben oder fetten die Zellen, die eine Bedingung erfüllen. Dieselben Regeln gelten auf dem Bildschirm und in den PNG- und SVG-Bildern, weil beide vom selben Renderer gezeichnet werden. Eigener Zeichencode ist nicht nötig.

  • TsgcPivotFormatRule in der Sammlung FormatRules, im Objektinspektor bearbeitbar
  • pvrColorScale mit MinColor und MaxColor
  • pvrValue-Regeln mit einem Operator, BackColor, ForeColor und Bold
  • Measure wählt das Datenfeld, und Theme schaltet zwischen hell und dunkel um
Hilfethema lesen
DataSetPivot-Demo mit den Bestellungen hinter einer Pivot-Zelle, neben dem Grid aufgelistet

Interaktion

Drilldown zu den Zeilen hinter jeder Zahl

Wenn eine Summe falsch aussieht, lautet die erste Frage, welche Bestellungen sie ausmachen. Ein Doppelklick auf eine Zelle oder Enter auf der Tastatur führt den Drilldown aus, und die Engine liefert die Quellzeilen, die zu diesem Wert aggregiert wurden, als Zeilennummern oder als Tabelle mit jeder Spalte des Speichers, auch denen, die nicht im Layout stehen. Die Demo DataSetPivot listet die Bestellungen hinter einer Zelle in einem Seitenbereich auf.

  • OnDrillDown des Grids und DrillDownCell, um es aus dem Code auszulösen
  • DrillDown liefert die Quellzeilen als IsgcUITable
  • GetSourceRows liefert die Zeilennummern, und SourceValue liest einen Wert
  • Ein Drilldown auf die Zeile Sonstige von Top N liefert die Zeilen aller darin enthaltenen Mitglieder
Hilfethema lesen

Interaktion

Ein Layout in einfacher Sprache anfordern

Benutzer tippen eine Frage wie die Top 3 Länder nach Umsatz pro Quartal, in der KI-Abfrageleiste oder aus deinem Code, und TsgcPivotGridAI fragt einen KI-Anbieter nach dem Layout. Jedes LLM funktioniert: TsgcUIAIEventProvider reicht jede Anfrage an deinen eigenen Code weiter, und TsgcUIAIChatProvider nutzt die Komponente TsgcAIChat von sgcWebSockets. Nur die Frage und der Feldkatalog verlassen die Anwendung: Namen, Beschriftungen, Typen und bis zu 5 Beispielwerte pro Feld, nie die Zeilen. Die Antwort wird gegen die echten Felder geprüft, bevor sie in einer Neuberechnung angewendet wird, und Undo stellt das vorherige Layout wieder her.

  • TsgcPivotGridAI mit Provider und PivotGrid, unter VCL, FireMonkey, WinForms, WPF und Avalonia
  • Ask wartet auf die Antwort, AskAsync läuft in einem Worker-Thread und Cancel bricht ab
  • OnBeforeAsk kann die Anfrage ändern oder abbrechen, OnLayout kann die Antwort ablehnen
  • MaxSampleValues begrenzt die Beispiele; unbekannte Felder werden verworfen, und die Antwort ist auf 64 KB begrenzt
  • TsgcPivotGridAIQuery der Brücke sgcPivotGridWS funktioniert weiterhin mit Chat, und ein zugewiesener Provider hat Vorrang vor Chat

Jede Edition und jede Plattform, auch Community; Undo eines KI-Layouts gibt es nicht in der Edition Community. Der Anbieter für sgcWebSockets erfordert eine Edition Registered mit einem registrierten sgcWebSockets: sgcUICoreWS in Delphi und C++ Builder, das Paket esegece.sgcUICore.sgcWebSockets unter .NET.

Hilfethema lesen

Ausgabe

Eine Datei, ein Browser, ein Diagramm oder ein Serverjob.

GridToPivotToChart-Demo: Grid-Zeilen, der Pivot und ein sgcCharts-Diagramm in drei Bereichen

Ausgabe

Exportieren, was du siehst, oder als Diagramm darstellen

Ein Pivot ist oft der Anfang eines Berichts, nicht sein Ende. Jeder Export schreibt die Ansicht so, wie der Benutzer sie angeordnet hat, mit ihren aufgeklappten Ebenen und Filtern: CSV für Tabellenkalkulationen, JSON für andere Systeme, HTML für einen Browser oder eine E-Mail, PNG und SVG für Dokumente. Das Ergebnis ist außerdem eine Tabelle, die sgcCharts direkt liest, sodass die Demo GridToPivotToChart von Grid-Zeilen über einen Pivot zu einem Diagramm kommt, ohne Daten zu kopieren. Streams funktionieren genauso wie Dateien.

  • SaveToCSV, SaveToJSON und SaveToHTML in eine Datei oder einen Stream
  • SaveToPNG und SaveToSVG mit optionaler Größe
  • TsgcPivotGridRenderer zeichnet ohne Fenster, auf einem Server oder unter Linux64
  • ResultTable stellt das sichtbare Ergebnis als IsgcUITable für sgcCharts bereit
Hilfethema lesen
Layoutliste mit den gespeicherten Ansichten Umsatz nach Region und Marge nach Produkt

Ausgabe Nur Registered

Ein Layout speichern, mit einem Aufruf wiederherstellen

Power-User bauen immer wieder dieselben Ansichten: Umsatz nach Region am Montag, Marge nach Produkt zum Monatsende. Die Layout-Persistenz schreibt das ganze Layout als JSON, mit seinen Feldern, Bereichen, Gruppierungen, Aggregationen, Sortierung, Filtern und Summen, und lädt es mit einer Neuberechnung zurück. Bewahre es in einer Datei, einem Datenbankfeld oder einem Benutzerprofil auf, biete eine Liste benannter Ansichten an oder kopiere das Layout eines Grids in ein anderes.

  • SaveLayoutToFile und LoadLayoutFromFile an den Grids und der Engine
  • SaveLayoutToString und LoadLayoutFromString für eine Datenbank oder einen Einstellungsspeicher
  • Die Grid-Versionen behalten auch die vom Benutzer geänderten Spaltenbreiten
  • Ein Layout zwischen Grids kopieren mit LoadLayoutFromString(SaveLayoutToString)

Nicht in der Community Edition.

Hilfethema lesen

Barrierefreiheit

UI Automation für Screenreader, Tastatur und hohen Kontrast, ohne Einrichtung.

Barrierefreiheit

Eine Pivot-Tabelle, die mit ihren Kopfzeilen bereitgestellt wird

sgcPivotGrid stellt seinen Inhalt über Microsoft UI Automation als Tabelle mit Zeilen- und Spaltenköpfen bereit, die sich auf- und zuklappen lassen, mit Datenzellen und Summen. Die Feldliste wird als eine Liste von Feldern je Bereich bereitgestellt, sodass auch ein Screenreader-Nutzer die Pivot-Tabelle aufbauen kann.

  • Pfeiltasten, Pos1, Ende, Bild auf und Bild ab bewegen die fokussierte Zelle, und Links und Rechts (oder die Plus- und Minustasten) klappen Köpfe zu und auf
  • In der Feldliste bewegen Auf und Ab den Feldfokus, Strg+1 bis Strg+4 verschieben das Feld in Zeilen, Spalten, Werte oder Filter, Strg+Auf und Strg+Ab ändern seine Reihenfolge, Leertaste schaltet es um, und Entf entfernt es
  • Die Tasten der Feldliste ersetzen das Ziehen von Feldern mit der Maus
  • Ein sichtbarer Fokusrahmen, und unter einem Windows-Kontrastdesign zeichnet das Pivot-Grid mit den Systemfarben

Barrierefreiheit ist in jeder Edition standardmäßig aktiv, auch in der kostenlosen Community-Edition, unter VCL in jeder Delphi- und C++Builder-Version von Delphi 7 bis Delphi 13, in FireMonkey unter Windows sowie unter WinForms, WPF und Avalonia. In Delphi und C++Builder legen AccessibleName und AccessibleDescription den Namen und die Beschreibung fest, die über UI Automation bereitgestellt werden, und unter .NET leisten der Standardname und der Standard-Hilfetext des jeweiligen Frameworks dasselbe. Siehe die Konformitätsberichte zur Barrierefreiheit.

Hilfethema lesen

sgcPivotGrid in Aktion erleben

sgcPivotGrid in den sgcUI-Suite-Demos: vollständige Anwendungen, die offline mit integrierten Simulationsdaten laufen.

Gemessen an Budgets

Die QA-Leistungsgruppe führt diese Szenarien auf Release-Builds aus, als Median aus fünf Läufen auf festen Daten. Die Zahlen sind Budgets, innerhalb derer jedes Szenario bleiben muss, und in der Hilfe veröffentlicht.

MessungErgebnisBedingungen
1.000.000 Zeilen neu berechnen (2 Zeilenfelder, 1 Spaltenfeld, 1 Summe)100 msWin64-Release-Build, QA-Budget
1.000.000 Zeilen neu berechnen (2 Zeilenfelder, 1 Spaltenfeld, 1 Summe)160 msWin32-Release-Build, QA-Budget
AppendRow von 1.000.000 Zeilen (3 Text-, 1 Gleitkomma- und 1 Datumswert)900 msWin64-Release-Build, QA-Budget
AppendRow von 1.000.000 Zeilen (3 Text-, 1 Gleitkomma- und 1 Datumswert)1,400 msWin32-Release-Build, QA-Budget

Quelle: das Hilfethema, das diese Zahlen dokumentiert.

Wer mit sgcPivotGrid baut

ERP- und Branchensoftware-Entwickler

Vertriebs- und Finanzanalyse in einem ERP

Gib Buchhaltung und Vertrieb einen Pivot über die Bestelltabelle, ohne in eine Tabellenkalkulation zu exportieren. Eine Dataset-Quelle bindet den Pivot an dasselbe TDataSet, das deine Formulare nutzen, und folgt jeder gebuchten Änderung. Datumsangaben gruppieren sich nach Jahr, Quartal und Monat, eine Farbskala markiert die schwachen Regionen, und ein Doppelklick listet die Rechnungen hinter einer verdächtigen Summe auf, sodass Fragen innerhalb deiner Anwendung beantwortet werden.

  • Dataset-Quelle mit Live-Aktualisierung
  • Datumsgruppierung
  • Farbskalen
  • Drilldown
Demo DataSetPivot ausführen

Analysten und Controller

Self-Service-Analyse für Power-User

Power-User wollen erkunden, keine Änderungsanträge stellen. Mit der Feldliste ziehen sie Felder zwischen Zeilen, Spalten, Filtern und Werten, Mitglieder-Checklisten grenzen die Daten ein, und gespeicherte Layouts holen ihre Lieblingsansichten zurück. Mit der KI-Brücke können sie auch eine Frage tippen und sich das Layout bauen lassen, wobei Undo nur einen Klick entfernt ist, wenn die Antwort nicht das Gemeinte war.

  • Feldliste
  • Top N mit Sonstige
  • Layout-Persistenz
  • KI-Layouts
Demo AdvancedPivot ausführen

Backoffice- und Berichtsdienste

Geplante Berichte auf einem Server

Nächtliche Zusammenfassungen brauchen keinen Bildschirm. Die Engine und der Headless-Renderer laufen in einem Dienst oder einer Konsolenanwendung, unter Windows oder ab Delphi 10.2 unter Linux64. Lade die Zeilen des Tages, wende ein gespeichertes Layout an und schreibe den Pivot als PNG, SVG, HTML oder CSV, bereit zum Anhängen an eine E-Mail oder zum Veröffentlichen auf einer Intranetseite.

  • TsgcPivotEngine ohne Fenster
  • TsgcPivotGridRenderer
  • HTML- und CSV-Export
  • Linux64
Demo HeadlessReport ausführen

Eine Pivot-Tabelle in wenigen Zeilen

Dieselbe API in Delphi, C++ Builder und C#: 100.000 Zeilen einmal laden, dann Regionen nach Quartal anordnen, die größte Region zuerst.

Ein VCL-Formular mit einem Pivot-Grid und einer Feldliste: 100.000 Zeilen mit einer Neuberechnung geladen, Regionen nach Quartal, größte Region zuerst.

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.

Hilfethema lesen →

Derselbe Pivot in C++ Builder, mit den Headern, die die Pakete generieren.

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

Hilfethema lesen →

Die C#-Version für WinForms. Sie nutzt nur Funktionen der kostenlosen 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

Hilfethema lesen →

Die Beispiele für Delphi und C++ Builder zeigen Werte als Prozent der Gesamtsumme (ShowAs), eine Funktion der Registered Edition. Das C#-Beispiel nutzt nur Funktionen der kostenlosen Community Edition.

Die sgcPivotGrid-Demos ausführen

Kompilierte Demo-Programme liegen in sgcUI_bin.zip, nichts zu installieren. Der Quellcode jeder Demo wird mit dem Paket geliefert, für Delphi, C++ Builder und .NET.

SalesPivot

SalesPivot

100.000 Verkaufszeilen mit Datumsgruppierung, Farbskala, Feldliste und Export. SalesPivotFMX ist der FireMonkey-Zwilling.

DataSetPivot

DataSetPivot

Ein TClientDataSet mit Bestellungen: Zeile bearbeiten, und der Pivot folgt; Zelle doppelklicken, um ihre Bestellungen aufzulisten.

MillionRows

MillionRows

Lädt und pivotiert 1.000.000 erzeugte Zeilen und gibt die dafür benötigte Zeit aus.

AdvancedPivot

Nur Registered AdvancedPivot

Berechnete Felder, Werte anzeigen als, Top N mit Sonstige sowie Speichern und Laden von Layouts.

GridToPivotToChart

GridToPivotToChart

Zeilen in einem sgcGrid speisen den Pivot, und das Pivot-Ergebnis speist ein sgcCharts-Diagramm, ohne Daten zu kopieren.

HeadlessReport

Baut einen Pivot ohne Fenster und rendert ihn in eine PNG-Datei.

Nur Registered AskYourPivot

Eine Frage in der KI-Abfrageleiste tippen und ein Layout erhalten, über TsgcPivotGridAI mit einem vorgefertigten Anbieter oder dem TsgcAIChat von sgcWebSockets, mit Undo.

Kompilierte Demos

Sofort lauffähige Programme jedes sgcUI-Produkts, nichts zu installieren.

sgcUI_bin.zip herunterladen →

Wo sgcPivotGrid enthalten ist

sgcPivotGrid ist Teil von sgcUI Enterprise und wird auch einzeln verkauft. sgcPivotGrid ist außerdem im All-Access-Paket enthalten.

sgcPivotGrid Einzelpaket

€249 / Entwickler, voller Quellcode, 1 Jahr Updates.

sgcPivotGrid kaufen → Preise ansehen →

sgcUI Enterprise

Alle 14 sgcUI-Produkte, ab €699.

Enterprise ansehen →

.NET

Die .NET Edition hat denselben Preis. Eine kostenlose Community Edition gibt es auf NuGet als esegece.sgcPivotGrid.Community.

Preise ansehen →

Die kostenlose Community Edition ist esegece.sgcPivotGrid.Community auf NuGet. Die Tabelle zeigt, was sie enthält.

FunktionCommunity (kostenlos)Registered
Pivot-Grid und Feldliste (VCL, FireMonkey, WinForms, WPF, Avalonia)✓✓
Acht Aggregationen, einschließlich CountDistinct, StdDev und Var✓✓
Datumsgruppierung, Zwischensummen und Gesamtsummen✓✓
Filter, Sortierung und Drilldown✓✓
Bedingte Formatierung und Farbskalen✓✓
Export nach CSV, JSON und HTML, headless PNG und SVG✓✓
KI-Pivot-Layouts mit jedem LLM und die KI-Abfrageleiste✓✓
Berechnete Felder−✓
Werte anzeigen als−✓
Top N mit Sonstige−✓
Layout-Persistenz−✓
Undo von KI-Layouts, die Brücke sgcPivotGridWS und der KI-Anbieter sgcWebSockets−✓

Unterstützte Frameworks und Plattformen

Komponenten in sgcPivotGrid

KomponenteWas sie tut
TsgcVCLPivotGrid, TsgcFMXPivotGridDas Pivot-Tabellen-Steuerelement für VCL und FireMonkey (FMX ab XE6).
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListDie Feldliste per Drag and Drop, mit der Benutzer das Layout ändern.
TsgcPivotEngineDie Berechnungs-Engine, erreichbar als Grid.Pivot und ohne Fenster nutzbar.
TsgcPivotSource_DataSet, TsgcPivotSource_TablePivotiert ein TDataSet oder jede Tabelle, die die sgcUI-Tabellenschnittstelle implementiert.
TsgcPivotGridRendererHeadless-Ausgabe als PNG und SVG für Server und Berichte.
TsgcPivotFormatRuleRegeln für bedingte Formatierung, etwa Farbskalen.
TsgcPivotGridAIFragen in natürlicher Sprache, von einem beliebigen KI-Anbieter in Pivot-Layouts umgewandelt, in jeder Edition und auf jeder Plattform.
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarDie KI-Abfrageleiste von sgcUICore: eine Frage tippen, lesen, was angewendet wurde, Cancel und Undo.
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)KI-Anbieter: jedes LLM über ein einziges Ereignis oder das TsgcAIChat von sgcWebSockets (nur Registered).
TsgcPivotGridAIQuery (sgcPivotGridWS)TsgcPivotGridAI mit der Eigenschaft Chat für ein TsgcAIChat von sgcWebSockets. Nur Registered.
ZielKomponentePlattformen
Delphi 7 bis 13, VCLTsgcVCLPivotGridWin32 und Win64
Delphi XE6 bis 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS und Android
C++ Builder 2007 bis 13VCL- und FMX-Pivot-GridsGenerierte .hpp-Header und statische Bibliotheken
Delphi 10.2 bis 13, frameworkneutralEngine, Quellen, Export, Layout-JSON, Headless-RendererLinux64, zum Beispiel um Pivot-Berichte auf einem Server zu erstellen
.NET Framework 4.7.2, .NET 8, 9 und 10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms, WPF, Avalonia, headless PNG und SVG

Häufig gestellte Fragen

Die Engine ist für große Datenmengen gebaut: ein typisierter Spaltenspeicher, ein Durchlauf pro Neuberechnung und virtuelles Zeichnen. Die QA-Budgets unter Win64 betragen 100 ms für die Neuberechnung von 1.000.000 Zeilen und 900 ms für das Anhängen. Auch die Größe des Layouts zählt: Ein Layout über MaxCells, standardmäßig 5.000.000 Zellen, löst einen Fehler aus, gruppiere also die Datumsangaben oder nutze Top N.

Ja. TsgcPivotSource_DataSet kopiert jedes TDataSet in die Engine und lädt es, solange LiveUpdates True ist, nach jedem Post neu. Schalte es für einen Stapel von Änderungen aus und rufe am Ende Load auf. Die Demo DataSetPivot zeigt ein TClientDataSet mit Live-Aktualisierung und Drilldown.

Nein. sgcPivotGrid ist eine In-Memory-Engine in deiner Anwendung. Sie liest Zeilen aus einem Dataset, einer Tabelle oder deinem eigenen Code, aggregiert sie selbst und braucht weder einen Datenbankserver noch einen Würfelentwurf.

Vier erweiterte Funktionen: berechnete Felder, Werte anzeigen als, Top N mit Sonstige und Layout-Persistenz, dazu die Brücke sgcPivotGridWS, der KI-Anbieter sgcWebSockets und Undo eines KI-Layouts. KI-Pivot-Layouts mit deinem eigenen Anbieter, jede Aggregation, die Datumsgruppierung, Filter, Sortierung, Drilldown, Formatregeln, Export, die Feldlisten und die Headless-Ausgabe als PNG und SVG sind in Community enthalten.

Nur die Frage und den Feldkatalog: Feldnamen, Beschriftungen, Typen und bis zu 5 Beispielwerte pro Feld, nie die Zeilen. Die Antwort wird gegen die echten Felder validiert, unbekannte Felder und Werte werden verworfen, und es ändert sich nichts, wenn kein brauchbares Layout übrig bleibt. Es funktioniert in jeder Edition mit jedem Anbieter, den du in TsgcUIAIEventProvider einsteckst; der fertige TsgcUIAIChatProvider erfordert eine Edition Registered und ein registriertes sgcWebSockets.

Ja. Die Grids und die Engine stellen das sichtbare Ergebnis über ResultTable als IsgcUITable bereit. Setze die Eigenschaft Table einer sgcCharts-Tabellendatenquelle auf das Pivot-Grid, und das Diagramm zeichnet, was der Benutzer angeordnet hat. Die Demo GridToPivotToChart verkettet sgcGrid, sgcPivotGrid und sgcCharts.

Ja. TsgcPivotGridRenderer zeichnet ein Ergebnis ohne Fenster nach PNG oder SVG, und die Engine exportiert CSV, JSON und HTML. Unter Linux64 kompilieren die frameworkneutralen Units ab Delphi 10.2: die Engine, die Quellen, der Export, das Layout-JSON und der Renderer.

sgcPivotGrid Hilfe

3,000+Entwickler
20+Jahre
761+Komponenten
30+API-Integrationen
5Plattformen
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

sgcPivotGrid noch heute testen

Die sgcUI-Testversion enthält sgcPivotGrid und alle anderen sgcUI-Produkte.