Delphi, C++ Builder & .NET Część sgcUI

sgcPivotGrid, siatka tabeli przestawnej dla Delphi, C++ Builder & .NET

Zamień surowe wiersze w odpowiedzi. Upuść pola w wierszach, kolumnach i wartościach, grupuj daty według roku, kwartału lub miesiąca i pozwól użytkownikom budować własny układ za pomocą listy pól z przeciąganiem. Typowany magazyn kolumn przelicza milion wierszy w ułamku sekundy, a dwukrotne kliknięcie pokazuje wiersze źródłowe stojące za dowolną komórką.

VCL, FireMonkey, WinForms, WPF, Avalonia1 000 000 wierszy: budżet przeliczenia 100 ms w Win64Bezpłatna edycja .NET CommunityW sgcUI Enterprise
Demo SalesPivot: lista pól z obszarami Filtry, Kolumny, Wiersze i Wartości obok budowanej tabeli przestawnej

Wszystko, czego potrzebuje tabela przestawna

Trzynaście funkcji w pięciu grupach. Funkcje oznaczone jako Registered nie wchodzą w skład bezpłatnej edycji .NET Community.

Szybkość i dane

Wczytaj raz, przelicz raz, z oknem lub bez.

Demo MillionRows po przestawieniu 1 000 000 wierszy, z etykietą pomiaru czasu, którą wypisuje

Szybkość i dane

Przestaw milion wierszy w ułamku sekundy

Historie zamówień i dzienniki czujników szybko przerastają arkusz kalkulacyjny. sgcPivotGrid trzyma każdą kolumnę w typowanym magazynie kolumn, agreguje komórki w jednym przebiegu po wierszach źródłowych i rysuje tylko widoczną część wyniku. Budżet QA na przeliczenie 1 000 000 wierszy to 100 ms w Win64, a demo MillionRows wczytuje i przestawia milion wierszy oraz wypisuje własny pomiar czasu.

  • TsgcPivotEngine to silnik, publikowany jako Pivot w siatce i używany także samodzielnie
  • BeginLoad, DefineColumn, AppendRow i EndLoad wczytują wiersze z jednym przeliczeniem na końcu
  • BeginUpdate i EndUpdate grupują zmiany układu w jeden przebieg
  • Kolumny tekstowe są kodowane słownikowo, a sumy pochodzą z wartości źródłowych, nigdy ze średnich ze średnich
Przeczytaj temat pomocy
Demo DataSetPivot: tabela zamówień nad tabelą przestawną, która podąża za edycjami

Szybkość i dane

Zasil ją z TDataSet, siatki lub własnego kodu

Wskaż tabeli przestawnej dane, które już masz. Źródło DataSet kopiuje dowolny TDataSet do silnika, a przy włączonych aktualizacjach na żywo przeładowuje go po każdym zatwierdzeniu, więc tabela podąża za zmianami, które użytkownicy wprowadzają w formularzu. Źródło Table czyta dowolny IsgcUITable, na przykład sgcGrid, i przeładowuje się tylko wtedy, gdy tabela się zmieni. Kod, który już trzyma wiersze w pamięci, po prostu je dopisuje. Tabela przestawna nigdy nie zapisuje zmian z powrotem do Twoich danych.

  • TsgcPivotSource_DataSet z DataSet, Active, Columns i LiveUpdates
  • Działa każdy potomek TDataSet, ponieważ źródło czyta go przez TDataLink
  • TsgcPivotSource_Table czyta sgcGrid lub dowolny inny IsgcUITable i przeładowuje się, gdy zmienia się TableVersion
  • W .NET ten sam silnik czyta DataTable
Przeczytaj temat pomocy

Analiza

Pytania, które zadaje kierownik sprzedaży, z odpowiedziami w postaci właściwości.

Tabela przestawna z rokiem 2025 rozwiniętym do kwartałów i miesięcy oraz zwiniętym rokiem 2024

Analiza

Daty grupowane tak, jak myślą ludzie

Nikt nie czyta raportu sprzedaży dzień po dniu. Dodaj to samo pole daty do kolumn kilka razy z różnym grupowaniem, a sgcPivotGrid zbuduje z niego poziomy Rok, Kwartał i Miesiąc, każdy z własnym podsumowaniem. Użytkownicy otwierają i zamykają poziomy przyciskami plus i minus, a Twój kod może rozwinąć cały poziom naraz. Rozwijanie lub zwijanie buduje nową migawkę bez ponownej agregacji danych. Grupowania Tydzień i Dzień są dla raportów operacyjnych, które ich potrzebują.

  • TsgcPivotDateGrouping: pvdYear, pvdQuarter, pvdMonth, pvdWeek i pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) dodaje jeden poziom na wywołanie
  • ExpandAll, CollapseAll i ExpandLevel dla każdej osi
  • Podsumowania częściowe i sumy końcowe z własnym położeniem i podpisem
Przeczytaj temat pomocy
Trzy miary obok siebie: suma kwot, unikatowi klienci i średnia marża

Analiza

Osiem agregacji, w tym liczba unikatowych

Przychód to suma, a liczba zamówień to liczność, ale ilu różnych klientów kupiło w marcu, to liczba unikatowych, i o tę wartość pytają działy finansów. Każde pole danych wybiera własną agregację, więc jeden układ może pokazać obok siebie sumę sprzedaży, liczbę unikatowych klientów i średnią marżę. Na liście pól przycisk chipa Values zmienia agregację jednym kliknięciem. Sumy zawsze są liczone z wartości źródłowych.

  • TsgcPivotAggregation: pvfSum, pvfCount, pvfAverage, pvfMin i pvfMax
  • pvfCountDistinct, pvfStdDev i pvfVar dla statystyki
  • AddDataField('Sales', pvfSum) dodaje miarę, a kilka miar leży pod każdym elementem kolumny
  • Wszystkie osiem jest w bezpłatnej edycji Community
Przeczytaj temat pomocy
Pięć najlepszych produktów według sprzedaży plus wiersz Inne, z otwartą listą kontrolną elementów

Analiza Tylko zarejestrowana

Filtruj do tego, co ważne, zachowaj najlepsze N

Duże układy są użyteczne tylko wtedy, gdy użytkownicy mogą je zawęzić. Filtry elementów, etykiet i wartości tną wynik, z 13 operatorami od równości po zakres i zawieranie. Top N zachowuje elementy o największych sumach w obrębie każdego rodzica i może scalić resztę w jeden wiersz Inne, dzięki czemu sumy nadal się zgadzają. Drążenie wiersza Inne zwraca wiersze źródłowe każdego należącego do niego elementu.

  • TsgcPivotFilterOperator: pvcEqual, pvcGreater, pvcBetween, pvcContains, pvcBeginsWith i inne
  • FilterValues i FilterExclude dla list kontrolnych elementów, także z listy pól
  • TopN, TopNOthers i OthersCaption dla widoku Top N
  • SortBy pvsValue z pvoDescending wypisuje największe najpierw

Filtry elementów, etykiet i wartości oraz sortowanie są w edycji Community. Top N z pozycją Inne jest w edycji Registered.

Przeczytaj temat pomocy
Demo AdvancedPivot z obliczonym polem marży i procentem sumy kolumny

Analiza Tylko zarejestrowana

Pola obliczane i procent sumy

Marże, zyski i udziały to liczby, o których rozmawiają kierownicy, a rzadko istnieją jako kolumny w bazie danych. Pole obliczane wylicza wartość dla każdego wiersza źródłowego z wyrażenia, z IF, ROUND, MIN, MAX, ISNULL i funkcjami dat, a potem jest agregowane jak każda inna kolumna. Pokaż wartości jako zamienia miarę na procent wiersza, kolumny lub sumy końcowej, sumę narastającą, różnicę względem elementu bazowego lub ranking.

  • CalculatedFields.Add zwraca TsgcPivotCalculatedField z Name i Expression
  • Obliczenie na poziomie wiersza: suma obliczonego zysku jest sumą zysków
  • ShowAs: pvwPercentOfRow, pvwPercentOfColumn, pvwPercentOfGrandTotal, pvwRunningTotal, pvwDifferenceFrom, pvwRank
  • ShowAsBaseItem wybiera element, względem którego mierzona jest różnica

Nie ma w edycji Community: te elementy są kompilowane pod SGC_PIVOTGRID_ADVANCED.

Przeczytaj temat pomocy

Interakcja

Pozwól użytkownikom samodzielnie znaleźć odpowiedź.

Interakcja

Użytkownicy budują własny raport przez przeciąganie

Nowe pytanie nie powinno wymagać nowego wydania. Umieść listę pól obok siatki, ustaw jedną właściwość, a użytkownicy przeciągną kolumny źródłowe do Filtrów, Kolumn, Wierszy i Wartości. Kolumna tekstowa upuszczona na Wartości liczy, liczbowa sumuje, a przycisk chipa przełącza agregację. Każdy chip otwiera listę kontrolną elementów z polem wyszukiwania, a tryb odroczony trzyma zmiany w zawieszeniu, dopóki użytkownik ich nie zastosuje, co pomaga przy bardzo dużych danych. Ta sama lista pól działa w FireMonkey.

  • TsgcVCLPivotFieldList i TsgcFMXPivotFieldList, powiązane przez PivotGrid
  • Cztery obszary: pvaFilter, pvaColumn, pvaRow i pvaData
  • DeferUpdate i ApplyChanges przeliczają raz, gdy użytkownik skończy
  • Listy pól WinForms, WPF i Avalonia w .NET
  • Od prawej do lewej dla arabskiego i hebrajskiego: obszar nagłówków wierszy, kolejność kolumn, szewrony i lista pól są odbite lustrzanie, a eksport XLSX zapisuje arkusz od prawej do lewej
Przeczytaj temat pomocy
Tabela przestawna kraj według miesiąca z zieloną skalą kolorów na wartościach sprzedaży

Interakcja

Skale kolorów od razu pokazują gorące punkty

Siatka liczb ukrywa historię, dopóki ktoś jej nie pokoloruje. Reguły formatowania barwią komórki danych według ich wartości: skala kolorów cieniuje każdą komórkę między dwoma kolorami według jej miejsca między najmniejszą a największą wartością miary, a reguły wartości kolorują lub pogrubiają komórki spełniające warunek. Te same reguły działają na ekranie i w obrazach PNG i SVG, ponieważ oba rysuje ten sam renderer. Nie potrzeba własnego kodu rysującego.

  • TsgcPivotFormatRule w kolekcji FormatRules, edytowalnej w Inspektorze obiektów
  • pvrColorScale z MinColor i MaxColor
  • Reguły pvrValue z operatorem, BackColor, ForeColor i Bold
  • Measure wybiera pole danych, a Theme przełącza między jasnym i ciemnym
Przeczytaj temat pomocy
Demo DataSetPivot z zamówieniami stojącymi za jedną komórką tabeli przestawnej, wypisanymi obok siatki

Interakcja

Drąż do wierszy stojących za dowolną liczbą

Gdy suma wygląda źle, pierwsze pytanie brzmi, które zamówienia się na nią składają. Dwukrotne kliknięcie komórki lub Enter na klawiaturze drąży w dół, a silnik zwraca wiersze źródłowe zagregowane do tej wartości, jako numery wierszy albo jako tabelę ze wszystkimi kolumnami magazynu, także tymi, których nie ma w układzie. Demo DataSetPivot wypisuje zamówienia stojące za komórką w panelu bocznym.

  • OnDrillDown siatki oraz DrillDownCell do wywołania z kodu
  • DrillDown zwraca wiersze źródłowe jako IsgcUITable
  • GetSourceRows daje numery wierszy, a SourceValue odczytuje wartość
  • Drążenie wiersza Inne w Top N zwraca wiersze każdego należącego do niego elementu
Przeczytaj temat pomocy

Interakcja

Poproś o układ zwykłym językiem

Użytkownicy wpisują pytanie, na przykład 3 najlepsze kraje według sprzedaży na kwartał, w pasku zapytań AI lub z Twojego kodu, a TsgcPivotGridAI prosi dostawcę AI o układ. Działa dowolny LLM: TsgcUIAIEventProvider przekazuje każde żądanie do Twojego kodu, a TsgcUIAIChatProvider używa komponentu TsgcAIChat z sgcWebSockets. Z aplikacji wychodzi tylko pytanie i katalog pól: nazwy, podpisy, typy i do 5 przykładowych wartości na pole, nigdy wiersze. Odpowiedź jest sprawdzana względem prawdziwych pól, zanim zostanie zastosowana w jednym przeliczeniu, a Undo przywraca poprzedni układ.

  • TsgcPivotGridAI z Provider i PivotGrid, w VCL, FireMonkey, WinForms, WPF i Avalonia
  • Ask czeka na odpowiedź, AskAsync działa w wątku roboczym, a Cancel ją zatrzymuje
  • OnBeforeAsk może edytować lub anulować żądanie, OnLayout może odrzucić odpowiedź
  • MaxSampleValues ogranicza próbki; nieznane pola są odrzucane, a odpowiedź jest ograniczona do 64 KB
  • TsgcPivotGridAIQuery z mostu sgcPivotGridWS nadal działa z Chat, a przypisany Provider ma pierwszeństwo przed Chat

Każda edycja i każda platforma, także Community; Undo układu AI nie ma w edycji Community. Dostawca sgcWebSockets wymaga edycji Registered z zarejestrowanym sgcWebSockets: sgcUICoreWS w Delphi i C++ Builder, pakiet esegece.sgcUICore.sgcWebSockets w .NET.

Przeczytaj temat pomocy

Wyjście

Plik, przeglądarka, wykres lub zadanie serwerowe.

Demo GridToPivotToChart: wiersze siatki, tabela przestawna i wykres sgcCharts w trzech panelach

Wyjście

Eksportuj to, co widzisz, albo narysuj wykres

Tabela przestawna jest często początkiem raportu, a nie jego końcem. Każdy eksport zapisuje widok tak, jak ułożył go użytkownik, z rozwiniętymi poziomami i filtrami: CSV dla arkuszy kalkulacyjnych, JSON dla innych systemów, HTML dla przeglądarki lub e-maila, PNG i SVG dla dokumentów. Wynik jest też tabelą, którą sgcCharts czyta bezpośrednio, więc demo GridToPivotToChart przechodzi od wierszy siatki przez tabelę przestawną do wykresu bez kopiowania danych. Strumienie działają tak samo jak pliki.

  • SaveToCSV, SaveToJSON i SaveToHTML do pliku lub strumienia
  • SaveToPNG i SaveToSVG z opcjonalnym rozmiarem
  • TsgcPivotGridRenderer rysuje bez okna, na serwerze lub w Linux64
  • ResultTable udostępnia widoczny wynik jako IsgcUITable dla sgcCharts
Przeczytaj temat pomocy
Lista układów z zapisanymi widokami Sprzedaż według regionu i Marża według produktu

Wyjście Tylko zarejestrowana

Zapisz układ, przywróć go jednym wywołaniem

Zaawansowani użytkownicy budują te same widoki raz po raz: sprzedaż według regionu w poniedziałek, marża według produktu na koniec miesiąca. Zapis układu zapisuje cały układ jako JSON, z polami, obszarami, grupowaniami, agregacjami, sortowaniem, filtrami i sumami, i wczytuje go z jednym przeliczeniem. Trzymaj go w pliku, polu bazy danych lub profilu użytkownika, oferuj listę nazwanych widoków albo kopiuj układ z jednej siatki do drugiej.

  • SaveLayoutToFile i LoadLayoutFromFile w siatkach i silniku
  • SaveLayoutToString i LoadLayoutFromString dla bazy danych lub magazynu ustawień
  • Wersje siatek zachowują też szerokości kolumn zmienione przez użytkownika
  • Kopiuj układ między siatkami przez LoadLayoutFromString(SaveLayoutToString)

Nie ma w edycji Community.

Przeczytaj temat pomocy

Dostępność

UI Automation dla czytników ekranu, klawiatura i wysoki kontrast, bez konfiguracji.

Dostępność

Tabela przestawna udostępniana wraz z nagłówkami

sgcPivotGrid udostępnia swoją zawartość Microsoft UI Automation jako tabelę z nagłówkami wierszy i kolumn, które można rozwijać i zwijać, komórkami danych i sumami. Lista pól jest udostępniana jako jedna lista pól dla każdego obszaru, więc użytkownik czytnika ekranu również może zbudować tabelę przestawną.

  • Strzałki, Home, End, Page Up i Page Down przesuwają aktywną komórkę, a Left i Right (lub klawisze plus i minus) zwijają i rozwijają nagłówki
  • Na liście pól Up i Down przesuwają fokus pola, Ctrl+1 do Ctrl+4 przenoszą pole do wierszy, kolumn, wartości lub filtrów, Ctrl+Up i Ctrl+Down zmieniają jego kolejność, Space je przełącza, a Del je usuwa
  • Klawisze listy pól zastępują przeciąganie pól myszą
  • Widoczny wskaźnik fokusu, a w motywie wysokiego kontrastu systemu Windows tabela przestawna rysuje się kolorami systemowymi

Dostępność jest domyślnie włączona w każdej edycji, łącznie z bezpłatną edycją Community, w VCL w każdej wersji Delphi i C++Builder od Delphi 7 do Delphi 13, w FireMonkey w systemie Windows oraz w WinForms, WPF i Avalonia. W Delphi i C++Builder właściwości AccessibleName i AccessibleDescription ustawiają nazwę i opis udostępniane UI Automation, a w .NET to samo robią standardowa nazwa dostępności i tekst pomocy każdego frameworka. Zobacz raporty zgodności dotyczące dostępności.

Przeczytaj temat pomocy

Zobacz sgcPivotGrid w akcji

sgcPivotGrid w demach pakietu sgcUI: kompletne aplikacje działające offline na wbudowanych danych symulowanych.

Zmierzone względem budżetów

Grupa wydajnościowa QA uruchamia te scenariusze na kompilacjach release, jako medianę pięciu przebiegów na stałych danych. Liczby to budżety, w których każdy scenariusz musi się mieścić, opublikowane w pomocy.

PomiarWynikWarunki
Przeliczenie 1 000 000 wierszy (2 pola wierszy, 1 pole kolumny, 1 Sum)100 msKompilacja release Win64, budżet QA
Przeliczenie 1 000 000 wierszy (2 pola wierszy, 1 pole kolumny, 1 Sum)160 msKompilacja release Win32, budżet QA
AppendRow dla 1 000 000 wierszy (3 teksty, 1 wartość zmiennoprzecinkowa i 1 data)900 msKompilacja release Win64, budżet QA
AppendRow dla 1 000 000 wierszy (3 teksty, 1 wartość zmiennoprzecinkowa i 1 data)1 400 msKompilacja release Win32, budżet QA

Źródło: temat pomocy opisujący te liczby.

Kto buduje z sgcPivotGrid

Programiści ERP i aplikacji branżowych

Analiza sprzedaży i finansów w ERP

Daj księgowości i sprzedaży tabelę przestawną nad tabelą zamówień bez eksportu do arkusza kalkulacyjnego. Źródło DataSet wiąże tabelę z tym samym TDataSet, którego używają Twoje formularze, i podąża za każdą zatwierdzoną zmianą. Daty grupują się według roku, kwartału i miesiąca, skala kolorów wskazuje słabe regiony, a dwukrotne kliknięcie wypisuje faktury stojące za podejrzaną sumą, więc na pytania odpowiada Twoja aplikacja.

  • Źródło DataSet z aktualizacjami na żywo
  • Grupowanie dat
  • Skale kolorów
  • Drążenie
Uruchom demo DataSetPivot

Analitycy i kontrolerzy

Analiza samoobsługowa dla zaawansowanych użytkowników

Zaawansowani użytkownicy chcą eksplorować, a nie składać zgłoszenia zmian. Lista pól pozwala im przeciągać pola między wierszami, kolumnami, filtrami i wartościami, listy kontrolne elementów zawężają dane, a zapisane układy przywracają ulubione widoki. Z mostem AI mogą też wpisać pytanie i dostać zbudowany układ, a Undo jest na wyciągnięcie kliknięcia, gdy odpowiedź nie jest tym, co mieli na myśli.

  • Lista pól
  • Top N z pozycją Inne
  • Zapis układu
  • Układy AI
Uruchom demo AdvancedPivot

Zaplecze i usługi raportowe

Raporty cykliczne na serwerze

Nocne zestawienia nie potrzebują ekranu. Silnik i renderer bez interfejsu działają w usłudze lub aplikacji konsolowej, w Windows lub w Linux64 od Delphi 10.2. Wczytaj wiersze z dnia, zastosuj zapisany układ i zapisz tabelę przestawną jako PNG, SVG, HTML lub CSV, gotową do załączenia do e-maila lub publikacji na stronie intranetu.

  • TsgcPivotEngine bez okna
  • TsgcPivotGridRenderer
  • Eksport HTML i CSV
  • Linux64
Uruchom 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.

Przeczytaj temat pomocy →

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

Przeczytaj temat pomocy →

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

Przeczytaj temat pomocy →

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.

Uruchom dema sgcPivotGrid

Skompilowane pliki wykonywalne dem są w sgcUI_bin.zip, nic nie trzeba instalować. Kod źródłowy każdego dema jest w pakiecie, dla Delphi, C++ Builder i .NET.

SalesPivot

SalesPivot

100 000 wierszy sprzedaży z grupowaniem dat, skalą kolorów, listą pól i eksportem. SalesPivotFMX to bliźniak w FireMonkey.

DataSetPivot

DataSetPivot

TClientDataSet z zamówieniami: edytuj wiersz, a tabela przestawna podąży; kliknij komórkę dwukrotnie, aby wypisać jej zamówienia.

MillionRows

MillionRows

Wczytuje i przestawia 1 000 000 wygenerowanych wierszy i wypisuje czas, jaki to zajęło.

AdvancedPivot

Tylko zarejestrowana AdvancedPivot

Pola obliczane, pokazywanie wartości jako, Top N z pozycją Inne oraz zapisywanie i wczytywanie układów.

GridToPivotToChart

GridToPivotToChart

Wiersze w sgcGrid zasilają tabelę przestawną, a jej wynik zasila wykres sgcCharts, bez kopiowania danych.

HeadlessReport

Buduje tabelę przestawną bez okna i renderuje ją do pliku PNG.

Tylko zarejestrowana AskYourPivot

Wpisz pytanie w pasku zapytań AI i dostań układ, przez TsgcPivotGridAI z dostawcą z gotowymi odpowiedziami lub TsgcAIChat z sgcWebSockets, z Undo.

Skompilowane dema

Gotowe do uruchomienia pliki wykonywalne każdego produktu sgcUI, nic nie trzeba instalować.

Pobierz sgcUI_bin.zip →

Gdzie jest sgcPivotGrid

sgcPivotGrid wchodzi w skład sgcUI Enterprise, a jest też sprzedawany osobno. sgcPivotGrid jest również w pakiecie All-Access.

Pojedynczy pakiet sgcPivotGrid

€249 / programista, pełny kod źródłowy, 1 rok aktualizacji.

Kup sgcPivotGrid → Zobacz cennik →

sgcUI Enterprise

Wszystkie produkty sgcUI (14), od €699.

Zobacz Enterprise →

.NET

Edycja .NET ma tę samą cenę. Bezpłatna edycja Community jest w NuGet jako esegece.sgcPivotGrid.Community.

Zobacz cennik →

Bezpłatna edycja Community to esegece.sgcPivotGrid.Community w NuGet. Tabela pokazuje, co zawiera.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Tabela przestawna i lista pól (VCL, FireMonkey, WinForms, WPF, Avalonia)✓✓
Osiem agregacji, w tym CountDistinct, StdDev i Var✓✓
Grupowanie dat, podsumowania częściowe i sumy końcowe✓✓
Filtry, sortowanie i drążenie✓✓
Formatowanie warunkowe i skale kolorów✓✓
Eksport do CSV, JSON i HTML, PNG i SVG bez interfejsu✓✓
Układy tabel przestawnych AI z dowolnym LLM i pasek zapytań AI✓✓
Pola obliczane−✓
Pokaż wartości jako−✓
Top N z pozycją Inne−✓
Zapis układu−✓
Undo układów AI, most sgcPivotGridWS i dostawca AI sgcWebSockets−✓

Obsługiwane frameworki i platformy

Komponenty w sgcPivotGrid

KomponentCo robi
TsgcVCLPivotGrid, TsgcFMXPivotGridKontrolka tabeli przestawnej dla VCL i FireMonkey (FMX od XE6).
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListLista pól z przeciąganiem, dzięki której użytkownicy zmieniają układ.
TsgcPivotEngineSilnik obliczeń, dostępny jako Grid.Pivot i używany także bez okna.
TsgcPivotSource_DataSet, TsgcPivotSource_TablePrzestawiaj TDataSet lub dowolną tabelę implementującą interfejs tabeli sgcUI.
TsgcPivotGridRendererWyjście PNG i SVG bez interfejsu dla serwerów i raportów.
TsgcPivotFormatRuleReguły formatowania warunkowego, takie jak skale kolorów.
TsgcPivotGridAIPytania w zwykłym języku zamieniane na układy tabel przestawnych przez dowolnego dostawcę AI, w każdej edycji i na każdej platformie.
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarPasek zapytań AI z sgcUICore: wpisz pytanie, przeczytaj, co zastosowano, Cancel i Undo.
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)Dostawcy AI: dowolny LLM przez jedno zdarzenie albo TsgcAIChat z sgcWebSockets (tylko Registered).
TsgcPivotGridAIQuery (sgcPivotGridWS)TsgcPivotGridAI z właściwością Chat dla TsgcAIChat z sgcWebSockets. Tylko Registered.
CelKomponentPlatformy
Delphi 7 do 13, VCLTsgcVCLPivotGridWin32 i Win64
Delphi XE6 do 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS i Android
C++ Builder 2007 do 13Tabele przestawne VCL i FMXWygenerowane nagłówki .hpp i biblioteki statyczne
Delphi 10.2 do 13, niezależnie od frameworkaSilnik, źródła, eksport, układ JSON, renderer bez interfejsuLinux64, na przykład do budowania raportów przestawnych na serwerze
.NET Framework 4.7.2, .NET 8, 9 i 10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms, WPF, Avalonia, PNG i SVG bez interfejsu

Najczęściej zadawane pytania

Silnik jest zbudowany z myślą o dużych danych: typowany magazyn kolumn, jeden przebieg na przeliczenie i wirtualne rysowanie. Budżety QA w Win64 to 100 ms na przeliczenie 1 000 000 wierszy i 900 ms na ich dopisanie. Liczy się też rozmiar układu: układ powyżej MaxCells, domyślnie 5 000 000 komórek, zgłasza błąd, więc pogrupuj daty lub użyj Top N.

Tak. TsgcPivotSource_DataSet kopiuje dowolny TDataSet do silnika i, dopóki LiveUpdates ma wartość True, przeładowuje go po każdym zatwierdzeniu. Przy partii zmian wyłącz tę opcję i wywołaj Load na końcu. Demo DataSetPivot pokazuje TClientDataSet z aktualizacjami na żywo i drążeniem.

Nie. sgcPivotGrid to silnik w pamięci wewnątrz Twojej aplikacji. Czyta wiersze ze zbioru danych, tabeli lub Twojego kodu, sam je agreguje i nie wymaga serwera bazy danych ani projektowania kostki.

Czterech zaawansowanych funkcji: pól obliczanych, pokazywania wartości jako, Top N z pozycją Inne i zapisu układu, a także mostu sgcPivotGridWS, dostawcy AI sgcWebSockets i Undo układu AI. Układy tabel przestawnych AI z własnym dostawcą, każda agregacja, grupowanie dat, filtry, sortowanie, drążenie, reguły formatowania, eksport, listy pól i wyjście PNG i SVG bez interfejsu są w Community.

Tylko pytanie i katalog pól: nazwy pól, podpisy, typy i do 5 przykładowych wartości na pole, nigdy wiersze. Odpowiedź jest walidowana względem prawdziwych pól, nieznane pola i wartości są odrzucane, a gdy nie zostanie użyteczny układ, nic się nie zmienia. Działa w każdej edycji z dowolnym dostawcą podłączonym do TsgcUIAIEventProvider; gotowy TsgcUIAIChatProvider wymaga edycji Registered i zarejestrowanego sgcWebSockets.

Tak. Siatki i silnik udostępniają widoczny wynik jako IsgcUITable przez ResultTable. Ustaw właściwość Table źródła danych tabeli sgcCharts na tabelę przestawną, a wykres narysuje to, co ułożył użytkownik. Demo GridToPivotToChart łączy sgcGrid, sgcPivotGrid i sgcCharts.

Tak. TsgcPivotGridRenderer rysuje wynik do PNG lub SVG bez okna, a silnik eksportuje CSV, JSON i HTML. W Linux64 jednostki niezależne od frameworka kompilują się od Delphi 10.2: silnik, źródła, eksport, układ JSON i renderer.

Pomoc sgcPivotGrid

3,000+Programistów
20+Lat
761+Komponentów
30+Integracji API
5Platform
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Wypróbuj sgcPivotGrid już dziś

Wersja próbna sgcUI zawiera sgcPivotGrid i każdy inny produkt sgcUI.