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

sgcPivotGrid, la cuadrícula de tabla dinámica para Delphi, C++ Builder & .NET

Convierte filas en bruto en respuestas. Suelta campos en filas, columnas y valores, agrupa las fechas por año, trimestre o mes, y deja que tus usuarios construyan su propio diseño con una lista de campos de arrastrar y soltar. Un almacén de columnas tipado recalcula un millón de filas en una fracción de segundo, y un doble clic muestra las filas de origen de cualquier celda.

VCL, FireMonkey, WinForms, WPF, Avalonia1,000,000 de filas: presupuesto de recálculo de 100 ms en Win64Edición .NET Community gratuitaIncluido en sgcUI Enterprise
Demo SalesPivot: la lista de campos con las áreas Filtros, Columnas, Filas y Valores junto a la tabla dinámica que construye

Todo lo que necesita una tabla dinámica

Quince funciones en seis grupos. Las funciones marcadas como registradas no están en la edición .NET Community gratuita.

Velocidad y datos

Carga una vez, recalcula una vez, con o sin ventana.

Demo MillionRows tras pivotar 1,000,000 de filas, con la etiqueta de tiempo que imprime

Velocidad y datos

Pivota un millón de filas en una fracción de segundo

Los historiales de pedidos y los registros de sensores superan enseguida una hoja de cálculo. sgcPivotGrid guarda cada columna en un almacén de columnas tipado, agrega las celdas en una sola pasada sobre las filas de origen y dibuja solo la parte visible del resultado. El presupuesto de QA para recalcular 1,000,000 de filas es de 100 ms en Win64, y la demo MillionRows carga y pivota un millón de filas e imprime su propio tiempo.

Un usuario que cambia el diseño de una tabla con millones de filas no debería ver la ventana congelada. Activa AsyncCalculation y la cuadrícula recalcula en un hilo en segundo plano, mantiene el resultado anterior en pantalla hasta que el nuevo está listo y dispara OnCalculated en el hilo de la interfaz. Solo registrada

  • TsgcPivotEngine es el motor, publicado como Pivot en la cuadrícula y utilizable por sí solo
  • BeginLoad, DefineColumn, AppendRow y EndLoad cargan las filas con un único recálculo al final
  • BeginUpdate y EndUpdate agrupan los cambios de diseño en una sola pasada
  • Las columnas de texto se codifican con diccionario, y los totales salen de los valores de origen, nunca de promedios de promedios
  • AsyncCalculation o RecalculateAsync calculan en segundo plano, y CancelCalculation mantiene el resultado anterior en pantalla
  • En .NET, RecalculateAsync devuelve un Task<bool> y recibe un CancellationToken

El cálculo asíncrono no está en la edición Community.

Leer el tema de la ayuda Leer el tema del cálculo asíncrono
Demo DataSetPivot: una tabla de pedidos sobre una tabla dinámica que sigue las ediciones

Velocidad y datos

Aliméntala desde un TDataSet, una cuadrícula o tu propio código

Apunta la tabla dinámica a los datos que ya tienes. Una fuente de conjunto de datos copia cualquier TDataSet en el motor y, con las actualizaciones en vivo activadas, lo recarga tras cada grabación, de modo que la tabla dinámica sigue las ediciones que tus usuarios hacen en un formulario. Una fuente de tabla lee cualquier IsgcUITable, como un sgcGrid, y recarga solo cuando la tabla cambia. El código que ya tiene las filas en memoria simplemente las añade. La tabla dinámica nunca escribe de vuelta en tus datos.

  • TsgcPivotSource_DataSet con DataSet, Active, Columns y LiveUpdates
  • Funciona cualquier descendiente de TDataSet, porque la fuente lo lee a través de un TDataLink
  • TsgcPivotSource_Table lee un sgcGrid o cualquier otra IsgcUITable y recarga cuando cambia TableVersion
  • En .NET el mismo motor lee un DataTable
Leer el tema de la ayuda

Análisis

Las preguntas que hace un director de ventas, respondidas con propiedades.

Tabla dinámica con 2025 expandido a trimestres y meses y 2024 contraído

Análisis

Fechas agrupadas como piensa la gente

Nadie lee un informe de ventas día a día. Añade el mismo campo de fecha a las columnas varias veces con una agrupación distinta y sgcPivotGrid construye a partir de él los niveles Año, Trimestre y Mes, cada uno con su propio subtotal. Los usuarios abren y cierran los niveles con los botones más y menos, y tu código puede expandir un nivel entero de golpe. Expandir o contraer genera una nueva instantánea sin volver a agregar los datos. Las agrupaciones por Semana y Día están ahí para los informes operativos que las necesitan.

  • TsgcPivotDateGrouping: pvdYear, pvdQuarter, pvdMonth, pvdWeek y pvdDay
  • AddField('Date', pvaColumn, pvdQuarter) añade un nivel por llamada
  • ExpandAll, CollapseAll y ExpandLevel para cada eje
  • Subtotales y totales generales con su propia posición y título
Leer el tema de la ayuda
Tres medidas en paralelo: suma del importe, clientes distintos y margen medio

Análisis

Ocho agregaciones, incluido el recuento distinto

Los ingresos son una suma y el número de pedidos es un recuento, pero cuántos clientes distintos compraron en marzo es un recuento distinto, y esa es la cifra que piden los equipos de finanzas. Cada campo de datos elige su propia agregación, así que un mismo diseño puede mostrar juntas la suma de ventas, el número de clientes distintos y el margen medio. En la lista de campos, el botón de un chip de Valores cambia la agregación con un clic. Los totales se calculan siempre a partir de los valores de origen.

  • TsgcPivotAggregation: pvfSum, pvfCount, pvfAverage, pvfMin y pvfMax
  • pvfCountDistinct, pvfStdDev y pvfVar para estadística
  • AddDataField('Sales', pvfSum) añade una medida, y varias medidas se colocan bajo cada miembro de columna
  • Las ocho están en la edición Community gratuita
Leer el tema de la ayuda
Los 5 productos con más ventas más una fila Otros, con la lista de verificación de miembros abierta

Análisis Solo registrada

Filtra lo que importa, quédate con el Top N

Los diseños grandes solo son útiles cuando los usuarios pueden acotarlos. Los filtros de miembro, de etiqueta y de valor reducen el resultado, con 13 operadores, de igual a entre y contiene. Top N conserva los miembros con los totales más altos dentro de cada padre y puede plegar el resto en una única fila Otros, de modo que los totales siguen cuadrando. Un desglose sobre Otros devuelve las filas de origen de todos los miembros que contiene.

  • TsgcPivotFilterOperator: pvcEqual, pvcGreater, pvcBetween, pvcContains, pvcBeginsWith y más
  • FilterValues y FilterExclude para listas de verificación de miembros, también desde la lista de campos
  • TopN, TopNOthers y OthersCaption para la vista Top N
  • SortBy pvsValue con pvoDescending lista primero los mayores

Los filtros de miembro, de etiqueta y de valor y la ordenación están en la edición Community. Top N con Otros es de la edición registrada.

Leer el tema de la ayuda
Demo AdvancedPivot con un campo de margen calculado y porcentaje del total de la columna

Análisis Solo registrada

Campos calculados y porcentaje del total

Los márgenes, el beneficio y las proporciones son las cifras que discuten los directivos, y rara vez existen como columnas en la base de datos. Un campo calculado calcula un valor para cada fila de origen a partir de una expresión, con IF, ROUND, MIN, MAX, ISNULL y funciones de fecha, y después se agrega como cualquier otra columna. Mostrar valores como convierte una medida en porcentaje de la fila, de la columna o del total general, un total acumulado, una diferencia respecto a un elemento base o una clasificación.

Los responsables de ventas también piden un miembro que no está en los datos, como Este más Oeste en una sola línea, o T1 menos T2 como columna de variación. Un elemento calculado añade ese miembro a un campo de fila o de columna con una fórmula sobre sus elementos hermanos. Se ordena después de los miembros reales, y los subtotales y los totales generales siguen basados en las filas de origen, así que nada se cuenta dos veces.

  • CalculatedFields.Add devuelve un TsgcPivotCalculatedField con Name y Expression
  • Evaluación a nivel de fila: la suma de un beneficio calculado es la suma de los beneficios
  • ShowAs: pvwPercentOfRow, pvwPercentOfColumn, pvwPercentOfGrandTotal, pvwRunningTotal, pvwDifferenceFrom, pvwRank
  • ShowAsBaseItem elige el miembro respecto al cual se mide una diferencia
  • Field.CalculatedItems.Add(Name, Formula) define un elemento como East+West o Q1-Q2, y el JSON del diseño lo guarda

No está en la edición Community: estos miembros se compilan bajo SGC_PIVOTGRID_ADVANCED.

Leer el tema de la ayuda Leer el tema de los elementos calculados

Interacción

Deja que tus usuarios encuentren la respuesta por sí mismos.

Interacción

Los usuarios crean su propio informe arrastrando y soltando

Una pregunta nueva no debería requerir una versión nueva. Coloca una lista de campos junto a la cuadrícula, activa una propiedad y los usuarios arrastran columnas de origen a Filtros, Columnas, Filas y Valores. Una columna de texto soltada en Valores cuenta, una numérica suma, y el botón del chip cambia la agregación. Cada chip abre una lista de verificación de miembros con un cuadro de búsqueda, y el modo diferido mantiene los cambios pendientes hasta que el usuario los aplica, lo que ayuda con datos muy grandes. La misma lista de campos funciona en FireMonkey.

  • TsgcVCLPivotFieldList y TsgcFMXPivotFieldList, enlazadas mediante PivotGrid
  • Cuatro áreas: pvaFilter, pvaColumn, pvaRow y pvaData
  • DeferUpdate y ApplyChanges recalculan una sola vez, cuando el usuario termina
  • Listas de campos para WinForms, WPF y Avalonia en .NET
  • De derecha a izquierda para árabe y hebreo: el área de cabeceras de fila, el orden de las columnas, los chevrones y la lista de campos están reflejados, y la exportación XLSX escribe una hoja de derecha a izquierda
Leer el tema de la ayuda
Tabla dinámica de país por mes con una escala de color verde sobre los valores de ventas

Interacción

Las escalas de color muestran los puntos calientes al instante

Una cuadrícula de números esconde la historia hasta que alguien la colorea. Las reglas de formato tiñen las celdas de datos según sus valores: una escala de color sombrea cada celda entre dos colores según su lugar entre el menor y el mayor valor de la medida, y las reglas de valor colorean o ponen en negrita las celdas que cumplen una condición. Las mismas reglas se aplican en pantalla y en las imágenes PNG y SVG, porque ambas las dibuja el mismo renderizador. No hace falta código de dibujo propio.

  • TsgcPivotFormatRule en la colección FormatRules, editable en el Inspector de objetos
  • pvrColorScale con MinColor y MaxColor
  • Reglas pvrValue con un operador, BackColor, ForeColor y Bold
  • Measure elige el campo de datos, y Theme cambia entre claro y oscuro
Leer el tema de la ayuda
Demo DataSetPivot con los pedidos que hay detrás de una celda de la tabla dinámica listados junto a la cuadrícula

Interacción

Desglosa hasta las filas que hay detrás de cualquier cifra

Cuando un total parece erróneo, la primera pregunta es qué pedidos lo componen. Un doble clic en una celda, o Intro en el teclado, desglosa, y el motor devuelve las filas de origen que se agregaron en ese valor, como números de fila o como una tabla con todas las columnas del almacén, incluidas las que no están en el diseño. La demo DataSetPivot lista los pedidos que hay detrás de una celda en un panel lateral.

  • OnDrillDown de la cuadrícula, y DrillDownCell para activarlo desde código
  • DrillDown devuelve las filas de origen como una IsgcUITable
  • GetSourceRows da los números de fila y SourceValue lee un valor
  • Un desglose sobre la fila Otros de Top N devuelve las filas de todos los miembros que contiene
Leer el tema de la ayuda

Interacción

Pide un diseño en lenguaje natural

Los usuarios escriben una pregunta como los 3 países con más ventas por trimestre, en la barra de consultas de IA o desde tu código, y TsgcPivotGridAI pide el diseño a un proveedor de IA. Funciona cualquier LLM: TsgcUIAIEventProvider entrega cada solicitud a tu propio código, y TsgcUIAIChatProvider usa el componente TsgcAIChat de sgcWebSockets. Solo salen de la aplicación la pregunta y el catálogo de campos: nombres, títulos, tipos y hasta 5 valores de muestra por campo, nunca las filas. La respuesta se comprueba con los campos reales antes de aplicarla en un único recálculo, y Deshacer restaura el diseño anterior.

  • TsgcPivotGridAI con Provider y PivotGrid, en VCL, FireMonkey, WinForms, WPF y Avalonia
  • Ask espera la respuesta, AskAsync se ejecuta en un hilo de trabajo y Cancel lo detiene
  • OnBeforeAsk puede editar o cancelar la petición, OnLayout puede rechazar la respuesta
  • MaxSampleValues limita las muestras; los campos desconocidos se descartan y la respuesta se limita a 64 KB
  • TsgcPivotGridAIQuery del puente sgcPivotGridWS sigue funcionando con Chat, y un Provider asignado prevalece sobre Chat

Todas las ediciones y todas las plataformas, Community incluida; Deshacer de un diseño de IA no está en la edición Community. El proveedor de sgcWebSockets requiere una edición Registrada con un sgcWebSockets registrado: sgcUICoreWS en Delphi y C++ Builder, el paquete esegece.sgcUICore.sgcWebSockets en .NET.

Leer el tema de la ayuda

Salida

Un archivo, un navegador, un gráfico o una tarea de servidor.

Demo GridToPivotToChart: filas de la cuadrícula, la tabla dinámica y un gráfico de sgcCharts en tres paneles

Salida

Exporta lo que ves, o conviértelo en gráfico

Una tabla dinámica suele ser el principio de un informe, no el final. Cada exportación escribe la vista tal como la organizó el usuario, con sus niveles expandidos y sus filtros: CSV para hojas de cálculo, JSON para otros sistemas, HTML para un navegador o un correo, PNG y SVG para documentos. El resultado es también una tabla que sgcCharts lee directamente, así que la demo GridToPivotToChart pasa de las filas de una cuadrícula a una tabla dinámica y a un gráfico sin copiar ningún dato. Los flujos funcionan igual que los archivos.

El equipo de finanzas quiere el pivote en Excel con su formato, no como una imagen pegada. SaveToXLSX escribe un libro real sin ninguna biblioteca externa: los encabezados de columna se combinan sobre sus grupos, los totales van en negrita, las filas forman un grupo de esquema, el encabezado se inmoviliza, el formato de la medida se convierte en el formato numérico de Excel y mostrar valores como porcentaje se convierte en un porcentaje de Excel. Solo registrada

Para un gráfico que sigue al pivote, TsgcChartTableLink de sgcCharts enlaza un gráfico con el resultado del pivote. Crea una serie por cada columna de valores, usa las etiquetas de fila como categorías, ofrece barras, barras apiladas, líneas y áreas, se reconstruye cuando cambia el pivote y conserva los colores de las series. Está en todas las ediciones de sgcCharts y también funciona con sgcGrid. El gráfico dinámico siguiente añade botones de campo y un diseñador de gráficos.

  • SaveToCSV, SaveToJSON y SaveToHTML a un archivo o a un flujo
  • SaveToXLSX en el motor y en las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia
  • SaveToPNG y SaveToSVG con un tamaño opcional
  • TsgcPivotGridRenderer dibuja sin ventana, en un servidor o en Linux64
  • ResultTable expone el resultado visible como una IsgcUITable para sgcCharts
  • TsgcChartTableLink enlaza un gráfico con el resultado del pivote, también para un sgcGrid

La exportación a XLSX no está en la edición Community. Las demás exportaciones y el enlace de gráfico están en todas las ediciones.

Leer el tema de la ayuda Leer el tema de la exportación a XLSX Leer el tema del gráfico dinámico
Demo PivotChart: la cuadrícula dinámica, los botones de campo de Filtros, Columnas, Filas y Valores, y un gráfico combinado de ventas y unidades por región y canal

Salida Solo registrada

Un gráfico dinámico que los usuarios cambian desde el propio gráfico

Un gráfico de una tabla dinámica debería moverse con ella. TsgcPivotChartTable convierte el resultado de la tabla dinámica en una tabla de gráfico con un grupo por medida y los totales generales a petición, y TsgcChartTableLink de sgcCharts la dibuja. Una lista de campos con Layout = pvlBar se sitúa sobre el gráfico como botones de campo de Filtros, Columnas (la leyenda), Filas (el eje) y Valores. Los usuarios arrastran un botón para mover un campo, filtran sus miembros con el embudo, y expanden, contraen o quitan un campo desde su menú. Cada cambio se envía al motor de la tabla dinámica, de modo que la cuadrícula y el gráfico muestran siempre el mismo diseño.

El diseñador de gráficos es el editor de gráficos en tiempo de ejecución de sgcCharts con una página Datos para el vínculo: el tipo de gráfico, las series por columnas o por filas, los primeros N, la serie circular, las etiquetas de datos, la fila y la columna de total general, y el tipo de serie y el eje de cada medida de un gráfico combinado. Los títulos, la leyenda, los ejes, los colores y el tema siguen en las demás páginas. La configuración del gráfico se guarda en el JSON del diseño de la tabla dinámica, con el mismo formato en Delphi y .NET, de modo que un diseño guardado por uno se carga en el otro.

  • Columnas agrupadas, apiladas y apiladas al 100%, líneas, área, circular, anillo y combinado con eje secundario
  • Botones de campo que mueven, filtran, expanden, contraen y quitan campos, también desde el teclado
  • sgcVCLShowChartDesigner y sgcFMXShowChartDesigner en Delphi, ShowDesigner en WinForms y WPF, ShowDesignerAsync en Avalonia
  • El miembro charts del diseño de la tabla dinámica conserva los totales, el tipo de gráfico, las series, los primeros N, los títulos, la leyenda y los colores
  • Exporta con SaveToPNG, SaveToSVG, ExportToPDF y Print de la vista del gráfico, o sin ventana mediante TsgcChartRenderer

El gráfico dinámico necesita las ediciones registradas de sgcPivotGrid y sgcCharts. Los dos productos no se requieren entre sí: se encuentran a través de dos interfaces de sgcUICore. El vínculo de gráfico con barras, barras apiladas, líneas y área sigue en todas las ediciones.

Leer el tema de la ayuda
Lista de diseños con las vistas guardadas Ventas por región y Margen por producto

Salida Solo registrada

Guarda un diseño y restáuralo con una llamada

Los usuarios avanzados crean las mismas vistas una y otra vez: ventas por región el lunes, margen por producto a fin de mes. La persistencia del diseño escribe el diseño completo como JSON, con sus campos, áreas, agrupaciones, agregaciones, ordenación, filtros y totales, y lo carga de nuevo con un único recálculo. Guárdalo en un archivo, en un campo de base de datos o en un perfil de usuario, ofrece una lista de vistas con nombre o copia el diseño de una cuadrícula a otra.

  • SaveLayoutToFile y LoadLayoutFromFile en las cuadrículas y en el motor
  • SaveLayoutToString y LoadLayoutFromString para una base de datos o un almacén de ajustes
  • Las versiones de cuadrícula también conservan los anchos de columna que cambió el usuario
  • Copia un diseño entre cuadrículas con LoadLayoutFromString(SaveLayoutToString)

No está en la edición Community.

Leer el tema de la ayuda

Accesibilidad

UI Automation para lectores de pantalla, teclado y alto contraste, sin configuración.

Accesibilidad

Una tabla dinámica expuesta con sus encabezados

sgcPivotGrid expone su contenido a Microsoft UI Automation como una tabla con encabezados de fila y de columna que se expanden y se contraen, celdas de datos y totales. La lista de campos se expone como una lista de campos por área, de modo que un usuario de lector de pantalla también puede construir la tabla dinámica.

  • Las flechas, Inicio, Fin, Re Pág y Av Pág mueven la celda con el foco, e Izquierda y Derecha (o las teclas más y menos) contraen y expanden los encabezados
  • En la lista de campos, Arriba y Abajo mueven el foco entre campos, Ctrl+1 a Ctrl+4 llevan el campo a filas, columnas, valores o filtros, Ctrl+Arriba y Ctrl+Abajo lo reordenan, Espacio lo activa o desactiva y Supr lo quita
  • Las teclas de la lista de campos sustituyen el arrastre de campos con el ratón
  • Un anillo de foco visible y, con un tema de alto contraste de Windows, la tabla dinámica se pinta con los colores del sistema

La accesibilidad está activada por defecto en todas las ediciones, también en la edición Community gratuita, en VCL en todas las versiones de Delphi y C++Builder desde Delphi 7 hasta Delphi 13, en FireMonkey en Windows, y en WinForms, WPF y Avalonia. En Delphi y C++Builder, AccessibleName y AccessibleDescription establecen el nombre y la descripción expuestos a UI Automation, y en .NET lo hacen el nombre accesible y el texto de ayuda estándar de cada framework. Consulta los informes de conformidad de accesibilidad (en inglés).

Leer el tema de la ayuda

Mira sgcPivotGrid en acción

sgcPivotGrid dentro de las demos de la suite sgcUI: aplicaciones completas que funcionan sin conexión con datos simulados integrados.

Medido frente a presupuestos

El grupo de rendimiento de QA ejecuta estos escenarios en compilaciones de release, como la mediana de cinco ejecuciones con datos fijos. Las cifras son presupuestos que cada escenario debe cumplir, publicados en la ayuda.

MediciónResultadoCondiciones
Recalcular 1,000,000 de filas (2 campos de fila, 1 campo de columna, 1 Sum)100 msPresupuesto de QA, compilación release Win64
Recalcular 1,000,000 de filas (2 campos de fila, 1 campo de columna, 1 Sum)160 msPresupuesto de QA, compilación release Win32
AppendRow de 1,000,000 de filas (3 de texto, 1 float y 1 valor de fecha)900 msPresupuesto de QA, compilación release Win64
AppendRow de 1,000,000 de filas (3 de texto, 1 float y 1 valor de fecha)1,400 msPresupuesto de QA, compilación release Win32

Fuente: el tema de la ayuda que documenta estas cifras.

Quién construye con sgcPivotGrid

Desarrolladores de ERP y de aplicaciones de gestión

Análisis de ventas y finanzas dentro de un ERP

Da al personal de contabilidad y ventas una tabla dinámica sobre la tabla de pedidos sin exportar a una hoja de cálculo. Una fuente de conjunto de datos enlaza la tabla dinámica con el mismo TDataSet que usan tus formularios y sigue cada edición grabada. Las fechas se agrupan por año, trimestre y mes, una escala de color marca las regiones débiles y un doble clic lista las facturas que hay detrás de un total sospechoso, de modo que las preguntas se responden dentro de tu aplicación.

  • Fuente de conjunto de datos con actualizaciones en vivo
  • Agrupación de fechas
  • Escalas de color
  • Desglose
Ejecuta la demo DataSetPivot

Analistas y controllers

Análisis de autoservicio para usuarios avanzados

Los usuarios avanzados quieren explorar, no presentar solicitudes de cambio. La lista de campos les permite arrastrar campos entre filas, columnas, filtros y valores, las listas de verificación de miembros acotan los datos y los diseños guardados les devuelven sus vistas favoritas. Con el puente de IA también pueden escribir una pregunta y obtener el diseño construido, con Deshacer a un clic cuando la respuesta no es lo que querían decir.

  • Lista de campos
  • Top N con Otros
  • Persistencia del diseño
  • Diseños con IA
Ejecuta la demo AdvancedPivot

Servicios de back office e informes

Informes programados en un servidor

Los resúmenes nocturnos no necesitan pantalla. El motor y el renderizador sin ventana se ejecutan en un servicio o en una aplicación de consola, en Windows o en Linux64 desde Delphi 10.2. Carga las filas del día, aplica un diseño guardado y escribe la tabla dinámica como PNG, SVG, HTML o CSV, lista para adjuntar a un correo o publicar en una página de intranet.

  • TsgcPivotEngine sin ventana
  • TsgcPivotGridRenderer
  • Exportación HTML y CSV
  • Linux64
Ejecuta la demo HeadlessReport

Una tabla dinámica en pocas líneas

La misma API en Delphi, C++ Builder y C#: carga 100,000 filas una vez y después dispón las regiones por trimestre con la región mayor primero.

Un formulario VCL con una cuadrícula dinámica y una lista de campos: 100,000 filas cargadas con un único recálculo, regiones por trimestre, la región mayor primero.

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.

Leer el tema de la ayuda →

La misma tabla dinámica en C++ Builder, con las cabeceras que generan los paquetes.

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

Leer el tema de la ayuda →

La versión en C# para WinForms. Usa solo funciones de la edición Community gratuita.

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

Leer el tema de la ayuda →

Los ejemplos de Delphi y C++ Builder muestran los valores como porcentaje del total general (ShowAs), una función de la edición registrada. El ejemplo de C# usa solo funciones de la edición Community gratuita.

Ejecuta las demos de sgcPivotGrid

Los ejecutables de demostración compilados están en sgcUI_bin.zip, sin nada que instalar. El código fuente de cada demo se incluye con el paquete, para Delphi, C++ Builder y .NET.

SalesPivot

SalesPivot

100,000 filas de ventas con agrupación de fechas, una escala de color, la lista de campos y exportación. SalesPivotFMX es su gemela en FireMonkey.

DataSetPivot

DataSetPivot

Un TClientDataSet de pedidos: edita una fila y la tabla dinámica la sigue; haz doble clic en una celda para listar sus pedidos.

MillionRows

MillionRows

Carga y pivota 1,000,000 de filas generadas e imprime el tiempo que tardó.

AdvancedPivot

Solo registrada AdvancedPivot

Campos calculados, mostrar valores como, Top N con Otros, y guardado y carga de diseños.

GridToPivotToChart

GridToPivotToChart

Las filas de un sgcGrid alimentan la tabla dinámica, y el resultado de la tabla dinámica alimenta un gráfico de sgcCharts, sin copiar datos.

PivotChart

Solo registrada PivotChart

Botones de campo sobre el gráfico, el diseñador de gráficos, ocho tipos de gráfico y el gráfico guardado con el diseño de la tabla dinámica. También para C++ Builder, como pestaña Gráfico en SalesPivotFMX, y en .NET como PivotChart (WinForms), PivotChartWpf y PivotChartAvalonia.

HeadlessReport

Construye una tabla dinámica sin ventana y la renderiza en un archivo PNG.

Solo registrada AskYourPivot

Escribe una pregunta en la barra de consultas de IA y obtén un diseño, mediante TsgcPivotGridAI con un proveedor simulado o el TsgcAIChat de sgcWebSockets, con Deshacer.

Demos compiladas

Ejecutables listos para usar de cada producto sgcUI, sin nada que instalar.

Descargar sgcUI_bin.zip →

Guía Getting Started

Cinco demos QuickStart para Delphi (VCL) se incluyen en Demos\PivotGrid\Delphi\00.QuickStart. La guía en PDF las recorre paso a paso: una primera tabla dinámica, filas, columnas y valores, totales y reglas de formato, una conexión a un dataset y una aplicación de análisis de ventas.

Descargar la guía (PDF, en inglés) →

Dónde se incluye sgcPivotGrid

sgcPivotGrid forma parte de sgcUI Enterprise, y también se vende por separado. sgcPivotGrid se incluye además en el paquete All-Access.

Paquete individual de sgcPivotGrid

€249 / desarrollador, código fuente completo, 1 año de actualizaciones.

Comprar sgcPivotGrid → Ver precios →

sgcUI Enterprise

Los 17 productos sgcUI, desde €699.

Ver Enterprise →

.NET

La edición .NET tiene el mismo precio. Hay una edición Community gratuita en NuGet como esegece.sgcPivotGrid.Community.

Ver precios →

La edición Community gratuita es esegece.sgcPivotGrid.Community en NuGet. La tabla muestra lo que incluye.

FunciónCommunity (gratuita)Registrada
Cuadrícula dinámica y lista de campos (VCL, FireMonkey, WinForms, WPF, Avalonia)✓✓
Ocho agregaciones, incluidas CountDistinct, StdDev y Var✓✓
Agrupación de fechas, subtotales y totales generales✓✓
Filtros, ordenación y desglose✓✓
Formato condicional y escalas de color✓✓
Exportación a CSV, JSON y HTML, PNG y SVG sin ventana, y el enlace de gráfico de sgcCharts✓✓
Diseños dinámicos con IA con cualquier LLM y la barra de consultas de IA✓✓
Campos calculados−✓
Mostrar valores como−✓
Top N con Otros−✓
Persistencia del diseño−✓
Elementos calculados−✓
Exportación a Excel XLSX−✓
Cálculo asíncrono−✓
Gráfico dinámico: botones de campo, diseñador de gráficos, persistencia del diseño del gráfico−✓
Deshacer de los diseños de IA, el puente sgcPivotGridWS y el proveedor de IA de sgcWebSockets−✓

Frameworks y plataformas compatibles

Componentes de sgcPivotGrid

ComponenteQué hace
TsgcVCLPivotGrid, TsgcFMXPivotGridEl control de tabla dinámica para VCL y FireMonkey (FMX desde XE6).
TsgcVCLPivotFieldList, TsgcFMXPivotFieldListLa lista de campos de arrastrar y soltar que permite a los usuarios cambiar el diseño, o con Layout = pvlBar los botones de campo sobre un gráfico dinámico (solo registrada).
TsgcPivotEngineEl motor de cálculo, accesible como Grid.Pivot y utilizable sin ventana.
TsgcPivotSource_DataSet, TsgcPivotSource_TablePivota un TDataSet, o cualquier tabla que implemente la interfaz de tabla de sgcUI.
TsgcPivotGridRendererSalida PNG y SVG sin ventana para servidores e informes.
TsgcPivotChartTableEl resultado de la tabla dinámica como tabla de gráfico para un TsgcChartTableLink de sgcCharts, con un grupo por medida y los totales generales a petición. Solo registrada.
TsgcPivotFormatRuleReglas de formato condicional como las escalas de color.
TsgcPivotGridAIPreguntas en lenguaje natural convertidas en diseños dinámicos por cualquier proveedor de IA, en todas las ediciones y en todas las plataformas.
TsgcVCLAIQueryBar, TsgcFMXAIQueryBarLa barra de consultas de IA de sgcUICore: escribe una pregunta, lee lo que se aplicó, Cancelar y Deshacer.
TsgcUIAIEventProvider, TsgcUIAIChatProvider (sgcUICoreWS)Proveedores de IA: cualquier LLM mediante un evento, o el TsgcAIChat de sgcWebSockets (solo edición registrada).
TsgcPivotGridAIQuery (sgcPivotGridWS)TsgcPivotGridAI con la propiedad Chat para un TsgcAIChat de sgcWebSockets. Solo edición registrada.
DestinoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLPivotGridWin32 y Win64
Delphi XE6 a 13, FireMonkeyTsgcFMXPivotGridWindows, macOS, iOS y Android
C++ Builder 2007 a 13Cuadrículas dinámicas VCL y FMXCabeceras .hpp generadas y bibliotecas estáticas
Delphi 10.2 a 13, independiente del frameworkMotor, fuentes, exportación, JSON de diseño, renderizador sin ventanaLinux64, por ejemplo para generar informes dinámicos en un servidor
.NET Framework 4.7.2, .NET 8, 9 y 10TsgcWinFormsPivotGrid, TsgcWpfPivotGrid, TsgcAvaloniaPivotGridWinForms, WPF, Avalonia, PNG y SVG sin ventana

Avalonia 12: la página Pivot grid para Avalonia muestra TsgcAvaloniaPivotGrid en XAML y C#.

Preguntas frecuentes

El motor está pensado para datos grandes: un almacén de columnas tipado, una pasada por recálculo y dibujo virtual. Los presupuestos de QA en Win64 son 100 ms para recalcular 1,000,000 de filas y 900 ms para añadirlas. También cuenta el tamaño del diseño: un diseño por encima de MaxCells, 5,000,000 de celdas por defecto, lanza un error, así que agrupa las fechas o usa Top N.

Sí. TsgcPivotSource_DataSet copia cualquier TDataSet en el motor y, mientras LiveUpdates es True, lo recarga tras cada grabación. Para un lote de ediciones, desactívalo y llama a Load al final. La demo DataSetPivot muestra un TClientDataSet con actualizaciones en vivo y desglose.

No. sgcPivotGrid es un motor en memoria dentro de tu aplicación. Lee filas de un conjunto de datos, de una tabla o de tu propio código, las agrega por sí mismo y no necesita servidor de base de datos ni diseño de cubo.

Ocho funciones avanzadas: campos calculados, elementos calculados, mostrar valores como, Top N con Otros, persistencia del diseño, exportación a XLSX, cálculo asíncrono y el gráfico dinámico, además del puente sgcPivotGridWS, el proveedor de IA de sgcWebSockets y Deshacer de un diseño de IA. Los diseños dinámicos con IA con tu propio proveedor, todas las agregaciones, la agrupación de fechas, los filtros, la ordenación, el desglose, las reglas de formato, la exportación a CSV, JSON y HTML, el enlace de gráfico, las listas de campos y la salida PNG y SVG sin ventana están en Community.

Solo la pregunta y el catálogo de campos: nombres de campo, títulos, tipos y hasta 5 valores de muestra por campo, nunca las filas. La respuesta se valida con los campos reales, los campos y valores desconocidos se descartan y no cambia nada cuando no queda ningún diseño utilizable. Funciona en todas las ediciones con cualquier proveedor que conectes a TsgcUIAIEventProvider; el TsgcUIAIChatProvider ya preparado requiere una edición Registrada y un sgcWebSockets registrado.

Sí. Las cuadrículas y el motor exponen el resultado visible como una IsgcUITable mediante ResultTable. Asigna la propiedad Table de una fuente de datos de tabla de sgcCharts a la cuadrícula dinámica y el gráfico dibuja lo que el usuario ha organizado. La demo GridToPivotToChart encadena sgcGrid, sgcPivotGrid y sgcCharts. Con las ediciones registradas, TsgcPivotChartTable y los botones de campo lo convierten en un gráfico dinámico que los usuarios cambian desde el propio gráfico, con un diseñador de gráficos, como en la demo PivotChart.

Sí. TsgcPivotGridRenderer dibuja un resultado a PNG o SVG sin ventana, y el motor exporta CSV, JSON y HTML. En Linux64 las unidades independientes del framework se compilan desde Delphi 10.2: el motor, las fuentes, la exportación, el JSON de diseño y el renderizador.

Ayuda de sgcPivotGrid

3,000+Desarrolladores
20+Años
761+Componentes
30+Integraciones de API
5Plataformas
Garantía de devolución de 30 días¿No estás satisfecho? Solicita un reembolso completo en los 30 días posteriores a la compra. Ver política de reembolso

Prueba sgcPivotGrid hoy

La prueba de sgcUI incluye sgcPivotGrid y todos los demás productos sgcUI.