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

sgcGrid, la cuadrícula de datos en vivo para Delphi, C++ Builder & .NET

Una cuadrícula pensada para datos que nunca se quedan quietos. Escribe filas por clave desde cualquier hilo, mira cómo las celdas cambiadas parpadean en verde o rojo, y después agrupa, filtra, edita y exporta las mismas filas. Un fotograma 1080p de una cuadrícula de 100.000 filas tarda 3,0 ms en Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms por fotograma 1080p (Win32)Versión Community gratuita para .NETIncluido en sgcUI Standard
sgcGrid con 100.000 pedidos agrupados por Región y después por Categoría, chips del panel de grupos y totales en el pie

Todo lo que necesita una cuadrícula en vivo

Dieciocho funciones en cinco grupos, cada una enlazada con su tema de la ayuda.

Datos en vivo

Flujos que nunca se detienen: precios, telemetría, colas y registros.

Datos en vivo

Actualiza miles de filas por segundo desde cualquier hilo

Un flujo de mercado, un bus de sensores o una cola de trabajos pueden escribir directamente en la cuadrícula. Cada fila tiene una clave, y un hilo de trabajo actualiza la fila de una clave por nombre de campo, sin llamar a Synchronize y sin código de bloqueo propio. La cuadrícula solo se marca como pendiente en el hilo que escribe y se repinta en el hilo principal como máximo MaxFPS veces por segundo.

  • UpdateRow asigna los campos indicados de una clave e inserta la fila cuando la clave es nueva; UpdateCell cambia un solo campo
  • AppendRow y DeleteRow añaden y eliminan filas por clave, desde cualquier hilo
  • BeginUpdate y EndUpdate convierten un lote en una única notificación
  • La fila seleccionada se vuelve a encontrar por su clave tras cada reordenación, así que nunca se escapa
Leer el tema de la ayuda
Ve cada cambio de un vistazo

Datos en vivo

Ve cada cambio de un vistazo

Los operadores y los traders necesitan ver qué se ha movido sin leer cada número. Con FlashChanges activado, que es el valor por defecto, una celda cambiada se tiñe de verde si su valor subió y de rojo si bajó, y después se desvanece durante FlashDuration milisegundos, 800 por defecto. Para registros y flujos que crecen, el modo cola mantiene a la vista la fila más reciente y deja de seguirla en cuanto el usuario se desplaza hacia arriba para leer.

  • FlashUpColor, FlashDownColor y FlashChangedColor; un color 0 usa el valor por defecto del tema
  • FlashMode tiñe el fondo (fmBackground) o el texto (fmText)
  • TailMode sigue la fila más reciente, MaxRows descarta las filas más antiguas de un registro sin fin
  • La selección se pinta sobre el parpadeo, y el parpadeo sobre las reglas de formato
Leer el tema de la ayuda
Colorea las filas que necesitan atención

Datos en vivo

Colorea las filas que necesitan atención

Una factura vencida, un saldo negativo o un trabajo fallido deben destacar antes de que nadie pregunte. Las reglas de formato comparan una columna con un valor usando el tipo de datos de esa columna: números numéricamente, fechas como fechas, texto sin distinguir mayúsculas. Una regla que coincide asigna el color de fondo, el color del texto o la negrita a la celda o a toda la fila, y sigue funcionando mientras las actualizaciones en vivo cambian los valores.

  • TsgcGridFormatRules evalúa sus reglas en el orden de la colección, y una coincidencia posterior anula a una anterior
  • Operadores como gfoLess, gfoBetween, gfoContains y gfoIsEmpty
  • ApplyToRow da estilo a todas las celdas de la fila, StopOnMatch termina la evaluación de una celda
  • Los colores translúcidos tiñen la celda sobre su fondo, y OnGetCellStyle tiene la última palabra
Leer el tema de la ayuda

Da forma a los datos

Ordena, filtra, agrupa y anida grandes conjuntos de filas.

Agrupa y totaliza 100.000 filas en una sola llamada

Da forma a los datos

Agrupa y totaliza 100.000 filas en una sola llamada

Ventas por región, pedidos por mes, incidencias por estado: los usuarios quieren totales, no filas en bruto. GroupBy agrupa la cuadrícula por una o más columnas, y cada fila de grupo muestra su miembro, su número de filas y los resúmenes de sus filas. Los usuarios reagrupan por su cuenta arrastrando un encabezado al panel de grupos. La agrupación es solo estado de la vista, así que un gráfico enlazado a la cuadrícula sigue viendo las filas planas y ordenadas.

  • GroupBy y ClearGrouping desde código, o GroupIndex por columna
  • ShowGroupPanel añade chips para arrastrar y soltar; un clic en un chip invierte el orden del grupo
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin o gsuMax, con el formato de SummaryFormat
  • GroupSummaries en cada fila de grupo y ShowFooter para los totales generales
  • Un DisplayFormat de yyyy-mm agrupa las fechas por mes
Leer el tema de la ayuda
Ordena, filtra y busca en grandes volúmenes de datos

Da forma a los datos

Ordena, filtra y busca en grandes volúmenes de datos

Encontrar un cliente entre miles debería costar unas pocas pulsaciones. FilterText conserva las filas cuyo texto formateado contiene las palabras escritas en cualquier columna visible, y un manejador OnFilterRow añade tus propias reglas encima. Un clic en un encabezado ordena, Ctrl y clic añade una columna a una ordenación multicolumna, y la ordenación es estable. Una columna que cambia sin estar ordenada ni filtrada no cuesta ninguna reordenación.

  • SortOrder y SortIndex por columna, OnSortChange tras cada cambio
  • FilterText no distingue mayúsculas y lee el texto tal como lo ve el usuario
  • OnFilterRow para lógica personalizada, InvalidateView cuando esa lógica cambia
  • SelectionMode selecciona filas o celdas, y Ctrl+C las copia como texto separado por tabuladores
  • Los valores nulos, vacíos y no convertibles siempre se ordenan primero
Leer el tema de la ayuda
Muestra jerarquías con filas en árbol y bandas de detalle

Da forma a los datos Solo registrada

Muestra jerarquías con filas en árbol y bandas de detalle

Un organigrama o una lista de materiales se lee mejor como un árbol, y los pedidos de un cliente justo debajo del cliente. Las filas en árbol disponen las filas en profundidad a partir de una columna clave y una columna padre. Las bandas de detalle abren una pequeña cuadrícula de filas relacionadas bajo cualquier fila maestra, con su propio encabezado, desplazamiento y ordenación, rellenada desde un TsgcGridDataStore, otra cuadrícula o un evento.

  • Tree.KeyField y Tree.ParentField activan el árbol; ExpandNode y CollapseNode funcionan desde código
  • El estado expandido se guarda por clave, así que sobrevive a la ordenación, al filtrado y a las actualizaciones en vivo
  • Detail.MasterKeyField y Detail.DetailKeyField enlazan una banda con su origen, OnGetDetailData la rellena bajo demanda
  • Las bandas funcionan en modo plano, agrupado y árbol, y las celdas de detalle cambiadas parpadean como en la cuadrícula maestra

No está en la versión Community de .NET, que conserva la agrupación.

Leer el tema de la ayuda
Mantén a la vista las columnas clave mientras el resto se desplaza

Da forma a los datos

Mantén a la vista las columnas clave mientras el resto se desplaza

Las cuadrículas anchas pierden su contexto cuando el símbolo o el nombre del cliente se desplaza fuera de la vista. FrozenColumns mantiene fijas las primeras columnas visibles mientras las demás se desplazan horizontalmente, y el encabezado, el pie y los resúmenes de grupo siguen la misma división. Los usuarios redimensionan las columnas arrastrando el borde del encabezado, y el renderizador sin ventana usa el mismo ajuste, así que las imágenes exportadas coinciden con la pantalla. Los símbolos de grupo de la izquierda tampoco se desplazan nunca.

  • FrozenColumns cuenta columnas visibles, y una línea de un píxel marca el borde fijo
  • Los movimientos con el teclado traen a la vista una columna desplazada a la derecha del borde fijo
  • FrozenWidth del renderizador devuelve el ancho que no se desplaza
  • MinWidth limita el cambio de tamaño, OnColumnResized notifica el nuevo ancho
  • Forma parte de todas las ediciones, incluida la versión Community gratuita de .NET
  • De derecha a izquierda para árabe y hebreo: la primera columna está a la derecha, las columnas fijas se quedan en el borde derecho, y la exportación XLSX de una cuadrícula de derecha a izquierda escribe una hoja de derecha a izquierda
Leer el tema de la ayuda
Demo FilterAndFind: botones de embudo, una fila de filtro con (2 values) y > 500, y el panel de búsqueda resaltando Nakatomi

Da forma a los datos

Filtra como en una hoja de cálculo y encuentra cualquier valor

Los usuarios esperan el embudo que conocen de Excel. ShowFilterButtons pone uno en el encabezado de cada columna: abre una ventana emergente con los valores distintos de la columna y su número de filas, un cuadro de búsqueda y hasta dos condiciones tipadas unidas por And o Or. ShowFilterRow añade bajo el encabezado una fila que filtra una columna mientras el usuario escribe, y Ctrl+F abre el panel de búsqueda, que resalta el texto en todas las celdas y salta de una coincidencia a otra.

  • Cada columna tiene un único filtro, editado por la ventana emergente, por la fila de filtro y por Column.Filter en código, así que los tres siempre coinciden
  • Las listas de valores de dos columnas filtradas se acotan entre sí, y un embudo relleno muestra qué columnas filtran
  • FilterRowOperator por columna: igual a, mayor que, contiene, empieza por, está en blanco y más
  • FindText, FindNext y FindPrevious funcionan desde código, y FindOnlyMatches oculta las filas sin coincidencia
  • Los filtros de columna se aplican junto con FilterText y OnFilterRow, y OnFilterChange notifica cada cambio

En las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia, incluida la versión Community gratuita de .NET.

Leer el tema de la ayuda

Da forma a los datos

Deja que los usuarios organicen las columnas y que se mantenga así

Un clic derecho en el encabezado de una columna abre un menú que ordena, agrupa, ajusta los anchos, filtra y abre el selector de columnas, una ventana emergente con una casilla por columna. Los usuarios arrastran un encabezado para mover su columna, y un doble clic en el borde del encabezado ajusta el ancho al título y a las celdas. SaveLayoutToString y LoadLayoutFromString guardan todo como un texto JSON breve, de modo que la cuadrícula se abre como el usuario la dejó.

  • HeaderMenu, ColumnMoving y BestFitOnDblClick están activados por defecto, y un PopupMenu asignado sigue teniendo prioridad
  • ShowColumnChooser abre el selector desde un botón o un elemento de menú propio
  • Una columna movida permanece en su lado de las columnas inmovilizadas y dentro de su banda, y OnColumnMoved notifica el movimiento
  • BestFitColumn y BestFitColumns miden el encabezado y hasta 1.000 filas de muestra, así que un millón de filas cuesta casi lo mismo que mil
  • El diseño guarda el orden de las columnas, los anchos, la visibilidad, la ordenación, la agrupación, los filtros de columna, las bandas y las opciones del panel; SaveLayoutToFile y LoadLayoutFromFile usan un archivo

En las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia, incluida la versión Community gratuita de .NET.

Leer el tema de la ayuda
Demo BandsAndCells: bandas Instrument, Live data, Price y Position, minigráficos de área, barras de progreso, iconos de estado y tres filas seleccionadas

Da forma a los datos

Encabezados de banda, celdas enriquecidas y selección de varias filas

Una pantalla de trading se lee mejor cuando Last, Change y Trend están bajo un mismo título Price. Bands añade títulos sobre grupos de columnas, en tantos niveles como necesites, y cada columna indica su banda en Band. CellKind pinta una celda como imagen, barra de progreso o minigráfico, mientras la celda conserva su valor simple, así que la ordenación, la agrupación y la exportación siguen viendo el número.

  • Bands.Add recibe un título y una banda padre, y las filas de banda se apilan sobre el encabezado de columna
  • gcdProgress usa ProgressMin y ProgressMax; gcdSparkline dibuja un gráfico de líneas, de área o de barras a partir de una lista de números
  • gcdImage dibuja una imagen de CellImages, que la cuadrícula rellena desde cualquier lista de imágenes asignada a Images
  • SelectionMode gsmMultiRow selecciona cualquier conjunto de filas con Ctrl y Shift, gsmCellRange un rango de celdas, y Ctrl+A lo selecciona todo
  • La selección se guarda por clave de fila, así que sobrevive a la ordenación, el filtrado y las actualizaciones en vivo, y Ctrl+C la copia como texto separado por tabuladores

En las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia, incluida la versión Community gratuita de .NET.

Leer el tema de la ayuda

Edita y exporta

Cambia los datos, sincronízalos con tu base de datos, entrégalos.

Edita y exporta Solo registrada

Edición directa con validación

Los usuarios de administración esperan corregir una cantidad o un estado directamente en la cuadrícula. Pon ReadOnly a False y F2, Intro, un carácter escrito o un doble clic abre un editor sobre la celda, o un cuadro combinado cuando la columna tiene un PickList. El texto escrito se convierte al tipo de datos de la columna, OnValidate puede cambiar o rechazar el valor, y el resultado se escribe con UpdateCell, así que la ordenación y el parpadeo siguen aplicándose.

  • Editable por columna, y OnBeforeEdit puede rechazar una edición
  • Intro confirma, Tab pasa a la siguiente celda editable, Escape cancela; StartEdit, CommitEdit y CancelEdit hacen lo mismo desde código
  • OnEditError mantiene abierto el editor ante una entrada incorrecta, OnEdited notifica el valor anterior y el nuevo

No está en la versión Community de .NET.

Leer el tema de la ayuda
Enlaza cualquier TDataSet en unas pocas líneas

Edita y exporta

Enlaza cualquier TDataSet en unas pocas líneas

El código de base de datos existente sigue funcionando: un TsgcGridSource_DataSet rellena la cuadrícula desde una consulta FireDAC, un TClientDataSet o cualquier otro TDataSet. Asigna su Grid y su DataSet, ponlo Active y aparecen las filas. Con un KeyField la cuadrícula se sincroniza en lugar de recargarse, así que las filas cambiadas se actualizan en su sitio y parpadean. Con LiveUpdates activado, cada Append, Edit y Delete confirmado llega a la cuadrícula sin código adicional.

  • AutoColumns crea las columnas a partir de los campos del dataset
  • Con un KeyField, las claves nuevas se añaden y las que faltan se eliminan
  • El dataset se recorre con DisableControls y se restaura su registro actual
  • También JSON y CSV: GridLoadFromJSONFile, GridSaveToCSVFile y el resto de sgcGrid_IO
  • En .NET la misma clase lee un DataTable
Leer el tema de la ayuda

Edita y exporta Solo registrada

Entrega a los usuarios un archivo de Excel de verdad

Contabilidad quiere los números en Excel, no una captura de pantalla. SaveToXLSX escribe la cuadrícula como un libro Office Open XML en un archivo o un flujo, sin ninguna biblioteca externa. La hoja conserva lo que ve el usuario: las columnas visibles en el orden de pantalla con sus anchos y formatos numéricos, el encabezado inmovilizado, los grupos y los niveles del árbol como un esquema plegable, y los totales de grupo como fórmulas SUBTOTAL.

  • SaveToXLSX acepta un nombre de archivo o un flujo y un nombre de hoja opcional
  • Los números siguen siendo números, las fechas pasan a ser fechas de Excel y un DisplayFormat se convierte en el formato numérico de la celda
  • Los grupos plegados se abren plegados en Excel, como los mostraba la cuadrícula
  • Llámalo desde el hilo de la interfaz; las bandas de detalle no se exportan
  • Se escribe cada fila de grupo y cada fila de la vista, esté lo que esté plegado

No está en la versión Community de .NET, que conserva la exportación a JSON y CSV.

Leer el tema de la ayuda
Demo DataSetEditing: un TDBNavigator y dos TDBEdit sobre los mismos registros que la cuadrícula, con una columna de búsqueda de categoría

Edita y exporta Solo registrada

Edita el DataSet a través de la cuadrícula

Con WriteBack activado, un TsgcGridSource_DataSet escribe cada edición de la cuadrícula en el registro de su fila. Localiza el registro por KeyField y envía el valor. Cuando el envío falla, por ejemplo en una comprobación de BeforePost, el registro se cancela y la celda conserva su valor anterior. SyncCursor mantiene juntos el registro actual y la fila con el foco, de modo que un TDBNavigator y controles TDBEdit sobre el mismo dataset siguen a la cuadrícula, y la cuadrícula los sigue a ellos.

  • AllowInsert: Ins añade y envía un registro, y OnNewRecord del dataset rellena los valores por defecto
  • AllowDelete: Ctrl+Supr elimina las filas seleccionadas y sus registros una vez que OnBeforeDelete lo acepta
  • Los campos de búsqueda se editan como una lista de selección de los resultados de la búsqueda, y se escribe la clave correspondiente
  • OnEditError muestra el mensaje del dataset; los valores pegados y deshacer usan la misma ruta de escritura

En las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia; no está en la versión Community de .NET. En .NET el origen escribe de vuelta en un DataTable, AddLookup añade las columnas de búsqueda y SyncCursor es solo de Delphi.

Leer el tema de la ayuda
Demo Editing con el tema oscuro y un selector de fecha abierto en la columna Date

Edita y exporta Solo registrada

Selectores de fecha, pegado desde Excel, deshacer y rehacer

Cada columna elige el control que la edita. EditorKind elige un selector de fecha, de hora o de fecha y hora, un editor numérico con flechas, un selector de color o un editor de tokens de sgcEditors, y el valor por defecto se elige según el tipo de dato de la columna. Ctrl+V pega un bloque copiado de Excel: cada valor se convierte y se valida antes de escribir nada, y todo el pegado es un único paso de deshacer. Ctrl+Z y Ctrl+Y deshacen y rehacen ediciones y pegados.

  • OnCreateEditor pone en una celda cualquier control propio, por ejemplo un TTrackBar
  • PasteText y PasteFromClipboard funcionan desde código, y OnBeforePaste puede cambiar o rechazar el texto
  • Un valor que no se convierte, o que OnValidate rechaza, detiene el pegado antes de escribir nada
  • Deshacer trabaja por clave de fila y campo, así que encuentra sus filas tras ordenar y filtrar, y conserva un valor que una actualización en vivo haya cambiado desde entonces
  • UndoLimit conserva los últimos 100 pasos; Undo, Redo y CanUndo funcionan desde código

En las cuadrículas VCL, FireMonkey, WinForms, WPF y Avalonia; no está en la versión Community de .NET.

Leer el tema de la ayuda

Escala y conecta

Millones de filas, flujos en vivo y lenguaje natural.

Recorre millones de filas sin cargarlas

Escala y conecta

Recorre millones de filas sin cargarlas

Los archivos de registro, los históricos de sensores y los resultados de consultas que ya viven en otro sitio no necesitan copiarse en memoria. En modo virtual la cuadrícula no almacena filas: VirtualRowCount indica cuántas hay y OnGetValue devuelve un valor cuando su fila entra en la vista. Solo se pintan las filas visibles, así que una cuadrícula de un millón de filas cuesta lo mismo que una de cincuenta. Cambia el número a medida que crece el origen.

  • Virtual y VirtualRowCount en los datos de la cuadrícula, OnGetValue suministra las celdas
  • Los resúmenes del pie también leen sus valores mediante OnGetValue
  • Las filas virtuales no tienen claves, así que conservan el orden del origen, sin ordenación, filtrado ni parpadeo
  • Para flujos que crecen sin fin, MaxRows con TailMode es la alternativa con claves
Leer el tema de la ayuda

Escala y conecta

Deja que los usuarios consulten la cuadrícula en lenguaje natural

No todos los usuarios quieren construir filtros. TsgcGridAI convierte una pregunta como price greater than 100 sort by volume descending highlight change less than 0 en filtros, ordenaciones y resaltados de filas sobre la cuadrícula, y la barra de consultas de IA da a los usuarios un lugar donde escribirla. Sin proveedor asignado, un analizador basado en reglas responde en local, sin red y sin clave de API. Asigna un proveedor y responde cualquier LLM: TsgcUIAIEventProvider entrega cada solicitud a tu propio código, y TsgcUIAIChatProvider usa el componente TsgcAIChat de sgcWebSockets. Solo se envía el catálogo de campos, los nombres, títulos, tipos y unos pocos valores de muestra de las columnas, nunca las filas.

  • La barra de consultas: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar y TsgcAvaloniaAIQueryBar, con preguntas recientes, sugerencias, Cancelar y Deshacer
  • Ask aplica la respuesta, y cada llamada ejecuta primero Reset, así que las preguntas no se acumulan
  • Los filtros pasan por OnFilterRow, los resaltados se convierten en reglas de formato ApplyToRow
  • Cada respuesta sustituye a la anterior, y Undo retrocede un paso
  • LastExplanation indica qué se aplicó, y cuando el proveedor falla responde el analizador basado en reglas
  • El puente sgcGridWS conserva TsgcGridAIQuery con TsgcHTMLAIAssistant y aporta TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT y TsgcGridFeedSource_SSE, que escriben mensajes JSON en la cuadrícula por clave

Todas las ediciones, Community incluida, en VCL, FireMonkey, WinForms, WPF y Avalonia. El proveedor de sgcWebSockets y el puente sgcGridWS requieren sgcWebSockets y una edición Registrada.

Leer el tema de la ayuda

Accesibilidad

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

Accesibilidad

Una cuadrícula expuesta como una tabla real

sgcGrid expone su contenido a Microsoft UI Automation como una tabla con encabezados de columna, filas y celdas, la API que usan los lectores de pantalla como Narrator y NVDA. Solo se construyen las filas visibles, y el número de filas y de columnas es siempre el total, de modo que una cuadrícula con un millón de filas no cuesta nada más.

  • La celda con el foco, la selección, la ordenación, el filtrado, la agrupación y las filas en árbol se exponen mediante los patrones Grid, Table y Selection
  • Las flechas, Inicio, Fin, Re Pág y Av Pág mueven la celda con el foco, Mayús amplía la selección, Ctrl+Espacio alterna la fila o la celda y F2 o Intro edita
  • Alt+Abajo abre la ventana emergente de filtro, Alt+Mayús+Izquierda y Alt+Mayús+Derecha mueven la columna, Ctrl+Mayús+G agrupa por la columna con el foco y Ctrl+Mayús+U quita esa agrupación
  • Un anillo de foco visible y, con un tema de alto contraste de Windows, la cuadrícula 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). En Avalonia, que no tiene patrones de tabla, cada celda lleva su columna y su posición en el nombre y en el texto de ayuda. Los anchos de columna solo se cambian con el ratón.

Leer el tema de la ayuda

Mira sgcGrid en acción

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

Un fotograma 1080p en unos pocos milisegundos

Últimos promedios medidos de la puerta de rendimiento de QA de sgcGrid: un fotograma de 1920 x 1080 con 12 columnas, 100.000 filas y 45 filas visibles, renderizado 60 veces sobre el lienzo raster. La puerta falla por encima de 16 ms por fotograma en Win64 y 25 ms en Win32.

MediciónResultadoCondiciones
Fotograma simple3,0 msWin32
Fotograma simple4,6 msWin64
Fotograma simple3,7 msLinux64
Parpadeo y 3 reglas de formato3,2 msWin32
Parpadeo y 3 reglas de formato6,8 msWin64
Demo LiveTicker, escrituras desde un hilo de trabajoUnas 1.000 actualizaciones por segundoCuadrícula ordenada con parpadeo a 60 fps

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

Quién construye con sgcGrid

Mesas de trading y datos de mercado

Un panel de cotizaciones tiene que seguir siendo legible mientras cientos de precios cambian cada segundo. Los hilos de entrada escriben con UpdateRow y nunca esperan a la interfaz, el parpadeo al cambiar muestra la dirección de cada movimiento, y el modo cola mantiene el registro de operaciones en su última ejecución. El puente sgcGridWS puede leer las cotizaciones por WebSocket, MQTT o SSE.

  • Actualizaciones en vivo
  • Parpadeo al cambiar
  • Modo cola
  • Flujos en vivo
Ejecuta la demo LiveTicker

Administración y aplicaciones de gestión

Las pantallas de entrada de pedidos, listas de existencias y facturación viven sobre una base de datos. Enlaza el TDataSet existente, deja que los usuarios agrupen por cliente o por mes con totales en cada fila de grupo, corrijan valores directamente con validación, y exporta un libro que contabilidad abre con sus grupos y fórmulas SUBTOTAL intactos.

  • Enlace con DataSet
  • Agrupación y resúmenes
  • Edición directa
  • Exportación a Excel
Ejecuta la demo DataSetGrid

Monitorización, registros y alertas

Las pantallas de operaciones muestran flujos de eventos que nunca terminan. MaxRows limita el registro, las reglas de formato pintan los errores en rojo, y el modo virtual recorre bajo demanda un archivo de millones de líneas. En un servidor Linux64 el renderizador escribe la misma cuadrícula en un archivo PNG o SVG para un correo de alerta.

  • Reglas de formato
  • MaxRows y modo cola
  • Modo virtual
  • PNG y SVG sin ventana
Ejecuta la demo LiveFeed

Una cuadrícula en vivo en unas pocas líneas

La misma API en Delphi, C++ Builder y C#: añade columnas, agrega filas por clave y actualízalas después desde cualquier hilo.

Una cuadrícula VCL en código: columnas tipadas, filas añadidas por clave y una actualización por nombre de campo desde cualquier hilo.

uses
  Forms, Classes, Controls,
  sgcGrid_Columns, sgcGrid_Data, sgcGrid_VCL;

procedure CreateGrid(aForm: TForm);
var
  oGrid: TsgcVCLGrid;
begin
  oGrid := TsgcVCLGrid.Create(aForm);
  oGrid.Parent := aForm;
  oGrid.Align := alClient;
  // the columns: FieldName, Caption and DataType
  oGrid.Columns.Add('Symbol', 'Symbol');
  oGrid.Columns.Add('Price', 'Price', gdtFloat).DisplayFormat := '0.00';
  oGrid.Columns.Add('Volume', 'Volume', gdtInteger);
  // one row per key, the values in column order
  oGrid.Data.AppendRow('MSFT', ['MSFT', 412.5, 1200]);
  oGrid.Data.AppendRow('AAPL', ['AAPL', 228.1, 3400]);
  // later, from any thread: update the row of a key by field name
  oGrid.Data.UpdateRow('MSFT', ['Price', 'Volume'], [413.1, 1350]);
end;

Leer el tema de la ayuda →

La misma cuadrícula en C++ Builder con las cabeceras de sgcGrid generadas.

#include "sgcGrid_Columns.hpp"
#include "sgcGrid_Data.hpp"
#include "sgcGrid_VCL.hpp"

void __fastcall CreateGrid(TForm *Form)
{
  TsgcVCLGrid *Grid = new TsgcVCLGrid(Form);
  Grid->Parent = Form;
  Grid->Align = alClient;
  // the columns: FieldName, Caption and DataType
  Grid->Columns->Add("Symbol", "Symbol", gdtText);
  Grid->Columns->Add("Price", "Price", gdtFloat)->DisplayFormat = "0.00";
  Grid->Columns->Add("Volume", "Volume", gdtInteger);
  // one row per key, the values in column order
  Grid->Data->AppendRow("MSFT", OPENARRAY(Variant,
    (Variant("MSFT"), Variant(412.5), Variant(1200))));
  Grid->Data->AppendRow("AAPL", OPENARRAY(Variant,
    (Variant("AAPL"), Variant(228.1), Variant(3400))));
  // later, from any thread: update the row of a key by field name
  Grid->Data->UpdateRow("MSFT",
    OPENARRAY(String, (String("Price"), String("Volume"))),
    OPENARRAY(Variant, (Variant(413.1), Variant(1350))));
}

Leer el tema de la ayuda →

Una cuadrícula WinForms con celdas que parpadean, una regla para cambios negativos y el tema oscuro.

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

internal class MainForm : Form
{
    private readonly TsgcWinFormsGrid Grid = new TsgcWinFormsGrid();

    public MainForm()
    {
        Grid.Dock = DockStyle.Fill;
        // the columns: field name, caption and data type
        Grid.Columns.Add("symbol", "Symbol");
        Grid.Columns.Add("price", "Price", TsgcGridDataType.gdtFloat).DisplayFormat = "#,##0.00";
        Grid.Columns.Add("change", "Change", TsgcGridDataType.gdtFloat).DisplayFormat = "+0.00;-0.00;0.00";
        Grid.Columns.Add("volume", "Volume", TsgcGridDataType.gdtInteger).DisplayFormat = "#,##0";
        // changed cells flash and fade, negative rows are tinted red
        Grid.FlashChanges = true;
        Grid.FormatRules.Add("change", TsgcGridFormatOperator.gfoLess, "0", 0x30E53935).ApplyToRow = true;
        Grid.Theme = TsgcUITheme.utDark;
        // one row per key, the values follow the column order
        Grid.Data.AppendRow("MSFT", "MSFT", 412.5, 0.0, 1200);
        Grid.Data.AppendRow("AAPL", "AAPL", 228.1, 0.0, 3400);
        Controls.Add(Grid);
    }

    // call it from any thread: TsgcGridData is thread safe
    public void OnQuote(string aSymbol, double aPrice, double aChange, int aVolume)
    {
        Grid.Data.UpdateRow(aSymbol, new[] { "price", "change", "volume" },
            new object[] { aPrice, aChange, aVolume });
    }
}
dotnet add package esegece.sgcGrid.WinForms

Leer el tema de la ayuda →

Ejecuta las demos de sgcGrid

15 demos para Delphi, tres de ellas FireMonkey, 11 para C++ Builder y 18 para .NET en WinForms, WPF y Avalonia.

LiveTicker

LiveTicker

Unas 1.000 actualizaciones de precio por segundo desde un hilo de trabajo con UpdateRow, una vista ordenada, celdas que parpadean y una regla de formato para los cambios negativos. VCL, FireMonkey, C++ Builder, WinForms, WPF y Avalonia.

DataSetGrid

DataSetGrid

Un TsgcGridSource_DataSet enlazado a un TClientDataSet de 200 registros con KeyField, AutoColumns y LiveUpdates, además de exportación e importación en JSON y CSV.

GroupAndSummary

GroupAndSummary

100.000 pedidos agrupados por Región y Categoría con el panel de grupos, resúmenes de Count, Sum y Average, un pie y dos columnas inmovilizadas. En .NET se llama Grouping.

FilterAndFind

FilterAndFind

100.000 filas de ventas con las ventanas emergentes de embudo, la fila de filtro y el panel de búsqueda, además del selector de columnas, el ajuste automático y un diseño guardado en un archivo y cargado de nuevo. VCL, FireMonkey, C++ Builder, WinForms, WPF y Avalonia.

BandsAndCells

BandsAndCells

2.000 instrumentos bajo las bandas Instrument, Live data, Price y Position, con celdas de minigráfico, progreso e imagen, selección de varias filas y un botón Copy. VCL, C++ Builder y WinForms.

Solo registrada Editing

Una columna con lista de selección, una columna booleana que se alterna con la barra espaciadora, OnValidate que rechaza cantidades negativas, OnEditError y un registro de OnEdited, además de editores de fecha, hora, numérico, color y de tokens de sgcEditors, un TTrackBar mediante OnCreateEditor, pegado, deshacer y rehacer.

DataSetEditing

Solo registrada DataSetEditing

Productos y categorías en dos TClientDataSet, con un TDBNavigator y dos TDBEdit sobre los mismos registros: WriteBack, SyncCursor, una columna de búsqueda, inserción, borrado y deshacer. VCL, C++ Builder y WinForms (un DataTable con AddLookup).

TreeAndDetail

Solo registrada TreeAndDetail

Un árbol de organigrama, y clientes con una banda de detalle de pedidos rellenada mediante un TsgcGridDataStore.

Solo registrada ExcelExport

Una cuadrícula agrupada y una cuadrícula en árbol guardadas con SaveToXLSX y abiertas en la hoja de cálculo, con el esquema y los resúmenes conservados.

GridAndChart

Un mosaico de cuadrícula y un mosaico de gráfico en un panel: un TsgcChartDataSource_Table representa las filas de la cuadrícula. Requiere sgcCharts y sgcDashboard.

Solo registrada AskYourGrid

TsgcGridAI y la barra de consultas de IA filtran, ordenan y resaltan 200 valores bursátiles a partir de preguntas en lenguaje natural, sin red y sin clave de API, junto al puente TsgcGridAIQuery. Requiere sgcWebSockets.

Solo registrada LiveFeed

Un servidor WebSocket en el mismo proceso difunde lotes JSON de 50 símbolos, y un TsgcGridFeedSource_WebSocket los escribe en la cuadrícula por clave. Delphi y .NET.

Demos compiladas

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

Descargar sgcUI_bin.zip →

Dónde se incluye sgcGrid

sgcGrid se vende por separado, forma parte de todas las ediciones de sgcUI desde Standard y está en el paquete All-Access.

Paquete individual de sgcGrid

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

Comprar sgcGrid → Ver precios →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar y sgcEditors, desde €380.

Ver Standard →

sgcUI Professional

Standard más sgcCharts, sgcDashboard y sgcGauges, desde €529.

Ver Professional →

sgcUI Enterprise

Los 14 productos sgcUI, desde €699.

Ver Enterprise →

La edición Community gratuita es esegece.sgcGrid.Community en NuGet. Un proyecto referencia los paquetes Community o los registrados, nunca ambos.

FunciónCommunity (gratuita)Registrada
Actualizaciones en vivo desde cualquier hilo, parpadeo al cambiar, modo cola✓✓
Reglas de formato y temas✓✓
Ordenación, filtrado y selección✓✓
Agrupación, panel de grupos y resúmenes✓✓
Columnas inmovilizadas y cambio de tamaño de columnas✓✓
Modo virtual✓✓
Enlace con DataTable, JSON y CSV✓✓
PNG y SVG sin ventana✓✓
Filtros de columna, fila de filtro y panel de búsqueda✓✓
Selector de columnas, reordenación de columnas, ajuste automático y diseños✓✓
Bandas, celdas de imagen, progreso y minigráfico, selección múltiple✓✓
Pregunta a tu cuadrícula: TsgcGridAI, la barra de consultas de IA y cualquier proveedor de LLM✓✓
Edición directa−✓
Edición bidireccional de DataTable, pegado, deshacer y rehacer, editores de celda de sgcEditors−✓
Filas en árbol y maestro detalle−✓
Exportación a Excel−✓
Flujos en vivo, TsgcGridAIQuery y el proveedor de IA de sgcWebSockets (puentes sgcGridWS y sgcUICoreWS)−✓

Frameworks y plataformas compatibles

Componentes de sgcGrid

ComponenteDestino
TsgcVCLGridDelphi y C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey desde XE6, en Windows, macOS, iOS y Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererAlmacén de filas, columnas, reglas de formato y renderizador independientes del framework, también en Linux64
TsgcGridSource_DataSet, TsgcGridDataStoreEnlace con TDataSet y almacén de filas de las bandas maestro detalle
TsgcGridAIMotor de consultas en lenguaje natural independiente del framework, en todas las ediciones y también en Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderBarra de consultas de IA y proveedor de IA de sgcUICore, en todas las ediciones
TsgcUIAIChatProviderPuente sgcUICoreWS: el TsgcAIChat de sgcWebSockets como proveedor de IA (edición Registrada)
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryPuente sgcGridWS con sgcWebSockets (edición registrada)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF y Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, consultas en lenguaje natural y barra de consultas de IA para WinForms, WPF y Avalonia
DestinoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLGridWin32, y Win64 desde XE2
Delphi XE6 a 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS y Android
C++ Builder 2007 a 13TsgcVCLGrid, TsgcFMXGridCabeceras .hpp generadas y bibliotecas estáticas
Delphi 10.2 a 13, independiente del frameworkModelo, formato, renderizador, JSON y CSVLinux64, por ejemplo para renderizar imágenes de la cuadrícula en un servidor
.NET Framework 4.7.2, .NET 8, 9 y 10TsgcWinFormsGrid, cuadrículas WPF y AvaloniaWinForms, WPF, Avalonia, PNG y SVG sin ventana

Preguntas frecuentes

Sí. AppendRow, UpdateRow, UpdateCell y DeleteRow de los datos de la cuadrícula son seguros entre hilos, así que un hilo de trabajo escribe filas por clave directamente. La cuadrícula se repinta en el hilo principal como máximo MaxFPS veces por segundo. Consulta Actualizaciones en vivo.

Solo se pintan las filas visibles, así que el coste de un fotograma depende de la ventana, no del número de filas. La puerta de QA mide un fotograma 1080p de una cuadrícula de 100.000 filas en 3,0 ms en Win32 y 4,6 ms en Win64. Para datos que viven en otro sitio, el modo virtual no almacena filas y pide los valores a medida que entran en la vista. Consulta Rendimiento.

Sí. TsgcGridSource_DataSet rellena una cuadrícula desde cualquier TDataSet, crea las columnas con AutoColumns y, con LiveUpdates, sigue cada Append, Edit y Delete del dataset. Con un KeyField las filas cambiadas se actualizan en su sitio en lugar de recargarse. En .NET el mismo origen lee un DataTable. Consulta Enlace con DataSet.

Sí. TsgcVCLGrid es un control VCL normal, así que puede convivir en un formulario con un TStringGrid o un TDBGrid existente. Una pantalla con TDBGrid conserva su dataset y añade un TsgcGridSource_DataSet; una pantalla con TStringGrid escribe sus filas con AppendRow y UpdateRow por clave. No hay conversión automática de los formularios existentes.

La edición directa, la edición bidireccional de DataTable, el pegado, deshacer y rehacer, los editores de celda de sgcEditors, las filas en árbol, las filas maestro detalle, la exportación a Excel y el puente sgcGridWS. La ordenación, el filtrado, la fila de filtro y el panel de búsqueda, la agrupación, los resúmenes, las columnas inmovilizadas, el selector de columnas, los diseños, las bandas, las celdas de imagen, progreso y minigráfico, la selección múltiple, las reglas de formato, el modo virtual, JSON y CSV, la salida sin ventana y Pregunta a tu cuadrícula con TsgcGridAI están en todas las ediciones. Consulta Ediciones.

Sí. Tamaños como GroupIndent y GroupPanelHeight son píxeles independientes del dispositivo, y la cuadrícula VCL los escala según el DPI de su monitor, por monitor desde Delphi 10.3. Theme alterna entre utLight y utDark, y AccentColor fija el acento de la selección y del parpadeo.

Ayuda de sgcGrid

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 sgcGrid hoy

La prueba de sgcUI incluye sgcGrid con todas las funciones desbloqueadas, los otros 13 productos sgcUI y todos los proyectos de demostración.