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

sgcGrid, la griglia dati live per Delphi, C++ Builder & .NET

Una griglia pensata per dati che non stanno mai fermi. Scrivi le righe per chiave da qualsiasi thread, guarda le celle modificate lampeggiare in verde o in rosso, poi raggruppa, filtra, modifica ed esporta le stesse righe. Un frame 1080p di una griglia con 100.000 righe richiede 3,0 ms su Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms per frame 1080p (Win32)Build .NET Community gratuitaIncluso in sgcUI Standard
sgcGrid con 100.000 ordini raggruppati per Regione e poi per Categoria, chip del pannello dei gruppi e totali nel piè di pagina

Tutto ciò che serve a una griglia live

Diciotto funzionalità in cinque gruppi, ciascuna collegata al suo argomento della guida.

Dati live

Feed che non si fermano mai: prezzi, telemetria, code e log.

Dati live

Aggiorna migliaia di righe al secondo da qualsiasi thread

Un feed di mercato, un bus di sensori o una coda di job possono scrivere direttamente nella griglia. Ogni riga ha una chiave e un thread di lavoro aggiorna la riga di una chiave per nome di campo senza chiamare Synchronize e senza codice di locking. La griglia si limita a segnarsi come da aggiornare nel thread che scrive e si ridisegna nel thread principale al massimo MaxFPS volte al secondo.

  • UpdateRow imposta i campi indicati di una chiave e inserisce la riga se la chiave è nuova; UpdateCell modifica un solo campo
  • AppendRow e DeleteRow aggiungono e rimuovono righe per chiave, da qualsiasi thread
  • BeginUpdate e EndUpdate trasformano un gruppo di modifiche in una sola notifica
  • La riga selezionata viene ritrovata tramite la sua chiave dopo ogni riordinamento, quindi non salta mai via
Leggi l'argomento della guida
Vedi ogni cambiamento a colpo d'occhio

Dati live

Vedi ogni cambiamento a colpo d'occhio

Trader e operatori devono vedere cosa si è mosso senza leggere ogni numero. Con FlashChanges attivo, che è il valore predefinito, una cella modificata si tinge di verde quando il valore sale e di rosso quando scende, poi svanisce in FlashDuration millisecondi, 800 per impostazione predefinita. Per i log e i feed in crescita, la modalità tail mantiene in vista la riga più recente e smette di seguirla non appena l'utente scorre verso l'alto per leggere.

  • FlashUpColor, FlashDownColor e FlashChangedColor; un colore 0 usa il valore predefinito del tema
  • FlashMode tinge lo sfondo (fmBackground) o il testo (fmText)
  • TailMode segue la riga più recente, MaxRows elimina le righe più vecchie di un log infinito
  • La selezione si disegna sopra il lampeggio, e il lampeggio sopra le regole di formato
Leggi l'argomento della guida
Colora le righe che richiedono attenzione

Dati live

Colora le righe che richiedono attenzione

Una fattura scaduta, un saldo negativo o un job fallito devono risaltare prima che qualcuno lo chieda. Le regole di formato confrontano una colonna con un valore usando il tipo di dati di quella colonna: i numeri numericamente, le date come date, il testo senza distinzione tra maiuscole e minuscole. Una regola che corrisponde imposta il colore di sfondo, il colore del testo o il grassetto sulla cella o sull'intera riga, e continua a funzionare mentre gli aggiornamenti live cambiano i valori sottostanti.

  • TsgcGridFormatRules valuta le sue regole nell'ordine della collezione, e una corrispondenza successiva prevale su una precedente
  • Operatori come gfoLess, gfoBetween, gfoContains e gfoIsEmpty
  • ApplyToRow applica lo stile a ogni cella della riga, StopOnMatch interrompe la valutazione per una cella
  • I colori traslucidi tingono la cella sopra il suo sfondo, e OnGetCellStyle ha l'ultima parola
Leggi l'argomento della guida

Dai forma ai dati

Ordina, filtra, raggruppa e annida grandi insiemi di righe.

Raggruppa e totalizza 100.000 righe con una sola chiamata

Dai forma ai dati

Raggruppa e totalizza 100.000 righe con una sola chiamata

Vendite per regione, ordini per mese, ticket per stato: gli utenti vogliono totali, non righe grezze. GroupBy raggruppa la griglia per una o più colonne, e ogni riga di gruppo mostra il suo membro, il numero di righe e i riepiloghi delle sue righe. Gli utenti raggruppano da soli trascinando un'intestazione sul pannello dei gruppi. Il raggruppamento è solo stato della vista, quindi un grafico collegato alla griglia vede comunque le righe piatte e ordinate.

  • GroupBy e ClearGrouping da codice, oppure GroupIndex per colonna
  • ShowGroupPanel aggiunge chip con drag and drop; un clic su un chip inverte l'ordine dei gruppi
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin o gsuMax, formattato con SummaryFormat
  • GroupSummaries in ogni riga di gruppo e ShowFooter per i totali generali
  • Un DisplayFormat di yyyy-mm raggruppa le date per mese
Leggi l'argomento della guida
Ordina, filtra e cerca in grandi quantità di dati

Dai forma ai dati

Ordina, filtra e cerca in grandi quantità di dati

Trovare un cliente tra migliaia dovrebbe richiedere pochi tasti. FilterText mantiene le righe il cui testo formattato contiene le parole digitate in una qualsiasi colonna visibile, e un gestore OnFilterRow aggiunge le tue regole. Un clic su un'intestazione ordina, Ctrl e clic aggiunge una colonna a un ordinamento multicolonna, e l'ordinamento è stabile. Una colonna che si aggiorna di continuo ma non è né ordinata né filtrata non richiede alcun riordinamento.

  • SortOrder e SortIndex per colonna, OnSortChange dopo ogni modifica
  • FilterText non distingue maiuscole e minuscole e legge il testo come lo vede l'utente
  • OnFilterRow per la logica personalizzata, InvalidateView quando quella logica cambia
  • SelectionMode seleziona righe o celle, e Ctrl+C le copia come testo separato da tabulazioni
  • I valori nulli, vuoti e non convertibili vengono sempre ordinati per primi
Leggi l'argomento della guida
Mostra le gerarchie con righe ad albero e bande di dettaglio

Dai forma ai dati Solo Registered

Mostra le gerarchie con righe ad albero e bande di dettaglio

Un organigramma o una distinta base si leggono meglio come un albero, e gli ordini di un cliente subito sotto il cliente. Le righe ad albero dispongono le righe in profondità a partire da una colonna chiave e da una colonna padre. Le bande di dettaglio aprono una piccola griglia di righe correlate sotto qualsiasi riga master, con la propria intestazione, scorrimento e ordinamento, riempita da un TsgcGridDataStore, da un'altra griglia o da un evento.

  • Tree.KeyField e Tree.ParentField attivano l'albero; ExpandNode e CollapseNode funzionano da codice
  • Lo stato di espansione è mantenuto per chiave, quindi sopravvive a ordinamenti, filtri e aggiornamenti live
  • Detail.MasterKeyField e Detail.DetailKeyField collegano una banda alla sua origine, OnGetDetailData la riempie su richiesta
  • Le bande funzionano in modalità piatta, raggruppata e ad albero, e le celle di dettaglio modificate lampeggiano come nella griglia master

Non è nella build .NET Community, che mantiene il raggruppamento.

Leggi l'argomento della guida
Tieni in vista le colonne chiave mentre le altre scorrono

Dai forma ai dati

Tieni in vista le colonne chiave mentre le altre scorrono

Le griglie larghe perdono il contesto quando il simbolo o il nome del cliente scorre via. FrozenColumns mantiene in posizione le prime colonne visibili mentre le altre scorrono in orizzontale, e l'intestazione, il piè di pagina e i riepiloghi di gruppo seguono la stessa divisione. Gli utenti ridimensionano le colonne trascinando il bordo dell'intestazione, e il renderer headless usa la stessa impostazione, quindi le immagini esportate corrispondono allo schermo. Anche le frecce dei gruppi a sinistra non scorrono mai.

  • FrozenColumns conta le colonne visibili, e una linea di un pixel segna il bordo bloccato
  • Gli spostamenti da tastiera portano in vista una colonna scorsa a destra del bordo bloccato
  • FrozenWidth del renderer restituisce la larghezza che non scorre
  • MinWidth limita un ridimensionamento, OnColumnResized segnala la nuova larghezza
  • Presente in ogni edizione, compresa la build .NET Community gratuita
  • Da destra a sinistra per arabo ed ebraico: la prima colonna è a destra, le colonne bloccate restano sul bordo destro, e l'esportazione XLSX di una griglia da destra a sinistra scrive un foglio da destra a sinistra
Leggi l'argomento della guida
Demo FilterAndFind: pulsanti a imbuto, una riga filtro con (2 values) e > 500, e il pannello di ricerca che evidenzia Nakatomi

Dai forma ai dati

Filtra come in un foglio di calcolo e trova qualsiasi valore

Gli utenti si aspettano l'imbuto che conoscono da Excel. ShowFilterButtons ne mette uno in ogni intestazione di colonna: apre un popup con i valori distinti della colonna e il numero di righe di ciascuno, una casella di ricerca e fino a due condizioni tipizzate unite da And o Or. ShowFilterRow aggiunge sotto l'intestazione una riga che filtra una colonna mentre l'utente digita, e Ctrl+F apre il pannello di ricerca, che evidenzia il testo in ogni cella e salta da una corrispondenza all'altra.

  • Ogni colonna ha un solo filtro, modificato dal popup, dalla riga filtro e da Column.Filter nel codice, così i tre restano sempre d'accordo
  • Gli elenchi di valori di due colonne filtrate si restringono a vicenda, e un imbuto pieno mostra quali colonne filtrano
  • FilterRowOperator per colonna: uguale a, maggiore di, contiene, inizia con, è vuoto e altro
  • FindText, FindNext e FindPrevious funzionano dal codice, e FindOnlyMatches nasconde le righe senza corrispondenza
  • I filtri di colonna si applicano insieme a FilterText e OnFilterRow, e OnFilterChange segnala ogni modifica

Nelle griglie VCL, FireMonkey, WinForms, WPF e Avalonia, compresa la build .NET Community gratuita.

Leggi l'argomento della guida

Dai forma ai dati

Lascia che gli utenti dispongano le colonne e mantieni la loro scelta

Un clic destro sull'intestazione di una colonna apre un menu che ordina, raggruppa, adatta le larghezze, filtra e apre il selettore colonne, un popup con una casella di controllo per colonna. Gli utenti trascinano un'intestazione per spostare la sua colonna, e un doppio clic sul bordo dell'intestazione adatta la larghezza alla didascalia e alle celle. SaveLayoutToString e LoadLayoutFromString conservano tutto questo come un breve testo JSON, così la griglia si apre come l'utente l'ha lasciata.

  • HeaderMenu, ColumnMoving e BestFitOnDblClick sono attivi per impostazione predefinita, e un PopupMenu assegnato ha comunque la precedenza
  • ShowColumnChooser apre il selettore da un pulsante o da una voce di menu tua
  • Una colonna spostata resta dallo stesso lato delle colonne bloccate e dentro la sua banda, e OnColumnMoved segnala lo spostamento
  • BestFitColumn e BestFitColumns misurano l'intestazione e fino a 1.000 righe campione, così un milione di righe costa circa come mille
  • Il layout conserva ordine delle colonne, larghezze, visibilità, ordinamento, raggruppamento, filtri di colonna, bande e opzioni dei pannelli; SaveLayoutToFile e LoadLayoutFromFile usano un file

Nelle griglie VCL, FireMonkey, WinForms, WPF e Avalonia, compresa la build .NET Community gratuita.

Leggi l'argomento della guida
Demo BandsAndCells: bande Instrument, Live data, Price e Position, sparkline ad area, barre di avanzamento, icone di stato e tre righe selezionate

Dai forma ai dati

Intestazioni a bande, celle ricche e selezione di più righe

Una schermata di trading si legge meglio quando Last, Change e Trend stanno sotto un'unica didascalia Price. Bands aggiunge didascalie sopra gruppi di colonne, su quanti livelli servono, e ogni colonna indica la sua banda in Band. CellKind disegna una cella come immagine, barra di avanzamento o sparkline, mentre la cella conserva il suo valore semplice, così ordinamento, raggruppamento ed esportazione vedono ancora il numero.

  • Bands.Add accetta una didascalia e una banda genitore, e le righe delle bande si impilano sopra l'intestazione di colonna
  • gcdProgress usa ProgressMin e ProgressMax; gcdSparkline disegna un grafico a linee, ad area o a barre da un elenco di numeri
  • gcdImage disegna un'immagine di CellImages, che la griglia riempie da qualsiasi elenco di immagini assegnato a Images
  • SelectionMode gsmMultiRow seleziona qualsiasi insieme di righe con Ctrl e Maiusc, gsmCellRange un intervallo di celle, e Ctrl+A seleziona tutto
  • La selezione è conservata per chiave di riga, così sopravvive a ordinamento, filtri e aggiornamenti live, e Ctrl+C la copia come testo separato da tabulazioni

Nelle griglie VCL, FireMonkey, WinForms, WPF e Avalonia, compresa la build .NET Community gratuita.

Leggi l'argomento della guida

Modifica ed esporta

Cambia i dati, sincronizzali con il tuo database, passali ad altri.

Modifica ed esporta Solo Registered

Modifica direttamente con la convalida

Gli utenti del back office si aspettano di correggere una quantità o uno stato direttamente nella griglia. Imposta ReadOnly su False e F2, Invio, un carattere digitato o un doppio clic aprono un editor sopra la cella, oppure una combo box quando la colonna ha una PickList. Il testo digitato viene convertito nel tipo di dati della colonna, OnValidate può cambiare o rifiutare il valore, e il risultato viene scritto con UpdateCell, quindi ordinamento e lampeggio continuano ad applicarsi.

  • Editable per colonna, e OnBeforeEdit può rifiutare una modifica
  • Invio conferma, Tab passa alla cella modificabile successiva, Esc annulla; StartEdit, CommitEdit e CancelEdit fanno lo stesso da codice
  • OnEditError mantiene aperto l'editor in caso di input errato, OnEdited segnala il valore vecchio e quello nuovo

Non è nella build .NET Community.

Leggi l'argomento della guida
Collega qualsiasi TDataSet in poche righe

Modifica ed esporta

Collega qualsiasi TDataSet in poche righe

Il codice database esistente continua a funzionare: un TsgcGridSource_DataSet riempie la griglia da una query FireDAC, un TClientDataSet o qualsiasi altro TDataSet. Imposta Grid e DataSet, rendilo Active e le righe compaiono. Con un KeyField la griglia viene sincronizzata invece di essere ricaricata, quindi le righe modificate si aggiornano sul posto e lampeggiano. Con LiveUpdates attivo, ogni Append, Edit e Delete registrato arriva alla griglia senza codice aggiuntivo.

  • AutoColumns crea le colonne dai campi del dataset
  • Con un KeyField, le nuove chiavi vengono aggiunte e quelle mancanti eliminate
  • Il dataset viene percorso con DisableControls e il suo record corrente viene ripristinato
  • Anche JSON e CSV: GridLoadFromJSONFile, GridSaveToCSVFile e il resto di sgcGrid_IO
  • In .NET la stessa classe legge un DataTable
Leggi l'argomento della guida

Modifica ed esporta Solo Registered

Consegna agli utenti un vero file Excel

L'ufficio contabile vuole i numeri in Excel, non uno screenshot. SaveToXLSX scrive la griglia come cartella di lavoro Office Open XML su un file o uno stream, senza librerie esterne. Il foglio mantiene ciò che l'utente vede: le colonne visibili nell'ordine di visualizzazione con le loro larghezze e i formati numerici, l'intestazione bloccata, i gruppi e i livelli dell'albero come struttura comprimibile, e i totali di gruppo come formule SUBTOTAL.

  • SaveToXLSX accetta un nome di file o uno stream e un nome di foglio facoltativo
  • I numeri restano numeri, le date diventano date di Excel e un DisplayFormat diventa il formato numerico della cella
  • I gruppi compressi si aprono compressi in Excel, come li mostrava la griglia
  • Chiamalo nel thread dell'interfaccia; le bande di dettaglio non vengono esportate
  • Ogni riga di gruppo e ogni riga della vista viene scritta, qualunque cosa sia compressa

Non è nella build .NET Community, che mantiene l'esportazione JSON e CSV.

Leggi l'argomento della guida
Demo DataSetEditing: un TDBNavigator e due TDBEdit sugli stessi record della griglia, con una colonna di lookup delle categorie

Modifica ed esporta Solo Registered

Modifica il DataSet attraverso la griglia

Con WriteBack attivo, un TsgcGridSource_DataSet scrive ogni modifica della griglia nel record della sua riga. Individua il record tramite KeyField e registra il valore. Quando la registrazione fallisce, per esempio in un controllo BeforePost, il record viene annullato e la cella mantiene il vecchio valore. SyncCursor tiene insieme il record corrente e la riga attiva, così un TDBNavigator e i controlli TDBEdit sullo stesso dataset seguono la griglia, e la griglia segue loro.

  • AllowInsert: Ins aggiunge e registra un record, e OnNewRecord del dataset compila i valori predefiniti
  • AllowDelete: Ctrl+Canc elimina le righe selezionate e i loro record una volta che OnBeforeDelete acconsente
  • I campi lookup si modificano come elenco di scelta dei risultati del lookup, e viene scritta la chiave corrispondente
  • OnEditError mostra il messaggio del dataset; i valori incollati e l'annulla usano lo stesso percorso di scrittura

Nelle griglie VCL, FireMonkey, WinForms, WPF e Avalonia; non è nella build .NET Community. In .NET l'origine dati scrive su un DataTable, AddLookup aggiunge le colonne di lookup e SyncCursor è solo per Delphi.

Leggi l'argomento della guida
Demo Editing nel tema scuro con un selettore di data aperto nella colonna Date

Modifica ed esporta Solo Registered

Selettori di data, incolla da Excel, annulla e ripristina

Ogni colonna sceglie il controllo che la modifica. EditorKind sceglie un selettore di data, ora o data e ora, un campo numerico con frecce, un selettore di colore o un editor di token di sgcEditors, e il valore predefinito si sceglie dal tipo di dati della colonna. Ctrl+V incolla un blocco copiato da Excel: ogni valore viene convertito e validato prima che venga scritto qualsiasi cosa, e l'intero incolla è un unico passo di annullamento. Ctrl+Z e Ctrl+Y annullano e ripristinano modifiche e incolla.

  • OnCreateEditor mette in una cella qualsiasi controllo tuo, per esempio un TTrackBar
  • PasteText e PasteFromClipboard funzionano dal codice, e OnBeforePaste può modificare o rifiutare il testo
  • Un solo valore che non si converte, o che OnValidate rifiuta, ferma l'incolla prima che venga scritto qualsiasi cosa
  • L'annulla lavora per chiave di riga e campo, così ritrova le sue righe dopo ordinamento e filtri, e mantiene un valore che nel frattempo un aggiornamento live ha cambiato
  • UndoLimit conserva gli ultimi 100 passi; Undo, Redo e CanUndo funzionano dal codice

Nelle griglie VCL, FireMonkey, WinForms, WPF e Avalonia; non è nella build .NET Community.

Leggi l'argomento della guida

Scala e collega

Milioni di righe, feed live e linguaggio naturale.

Sfoglia milioni di righe senza caricarle

Scala e collega

Sfoglia milioni di righe senza caricarle

Archivi di log, storici di sensori e risultati di query che esistono già altrove non hanno bisogno di essere copiati in memoria. In modalità virtuale la griglia non memorizza righe: VirtualRowCount dice quante sono e OnGetValue restituisce un valore quando la sua riga scorre in vista. Vengono disegnate solo le righe visibili, quindi una griglia di un milione di righe costa quanto una di cinquanta. Cambia il conteggio man mano che l'origine cresce.

  • Virtual e VirtualRowCount sui dati della griglia, OnGetValue fornisce le celle
  • Anche i riepiloghi del piè di pagina leggono i loro valori tramite OnGetValue
  • Le righe virtuali non hanno chiavi, quindi mantengono l'ordine dell'origine, senza ordinamento, filtri né lampeggio
  • Per i feed che crescono senza fine, MaxRows con TailMode è l'alternativa con chiave
Leggi l'argomento della guida

Scala e collega

Lascia che gli utenti interroghino la griglia in linguaggio naturale

Non tutti gli utenti vogliono costruire filtri. TsgcGridAI trasforma una domanda come price greater than 100 sort by volume descending highlight change less than 0 in filtri, ordinamenti ed evidenziazioni di righe sulla griglia, e la barra di query AI offre agli utenti un posto dove scriverla. Senza un provider assegnato, un parser basato su regole risponde in locale, senza rete e senza chiave API. Assegna un provider e risponde invece qualsiasi LLM: TsgcUIAIEventProvider passa ogni richiesta al tuo codice, e TsgcUIAIChatProvider usa il componente TsgcAIChat di sgcWebSockets. Viene inviato solo il catalogo dei campi, cioè nomi, didascalie, tipi e alcuni valori di esempio delle colonne, mai le righe.

  • La barra di query: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar e TsgcAvaloniaAIQueryBar, con domande recenti, suggerimenti, Cancel e Undo
  • I filtri passano da OnFilterRow, le evidenziazioni diventano regole di formato ApplyToRow
  • Ogni risposta sostituisce la precedente, e Undo torna indietro di un passo
  • LastExplanation indica cosa è stato applicato, e quando il provider fallisce risponde il parser basato su regole
  • Il ponte sgcGridWS mantiene TsgcGridAIQuery con TsgcHTMLAIAssistant e porta TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT e TsgcGridFeedSource_SSE, che scrivono messaggi JSON nella griglia per chiave

In ogni edizione, Community compresa, su VCL, FireMonkey, WinForms, WPF e Avalonia. Il provider sgcWebSockets e il ponte sgcGridWS richiedono sgcWebSockets e un'edizione Registered.

Leggi l'argomento della guida

Accessibilità

UI Automation per screen reader, tastiera e alto contrasto, senza alcuna configurazione.

Accessibilità

Una griglia esposta come una vera tabella

sgcGrid espone il suo contenuto a Microsoft UI Automation come una tabella con intestazioni di colonna, righe e celle, l'API usata dagli screen reader come Narrator e NVDA. Vengono create solo le righe visibili e il numero di righe e di colonne è sempre quello completo, quindi una griglia con un milione di righe non costa nulla in più.

  • La cella con il focus, la selezione, l'ordinamento, il filtro, il raggruppamento e le righe ad albero sono esposti tramite i pattern Grid, Table e Selection
  • Le frecce, Home, End, PagÙp e PagÙgiù spostano la cella con il focus, Shift estende la selezione, Ctrl+Space attiva o disattiva la riga o la cella e F2 o Invio avviano la modifica
  • Alt+Giù apre il popup del filtro, Alt+Maiusc+Sinistra e Alt+Maiusc+Destra spostano la colonna, Ctrl+Maiusc+G raggruppa per la colonna con il focus e Ctrl+Maiusc+U rimuove quel raggruppamento
  • Un anello di focus visibile e, con un tema Windows ad alto contrasto, la griglia si disegna con i colori di sistema

L'accessibilità è attiva per impostazione predefinita in tutte le edizioni, compresa l'edizione Community gratuita, su VCL in ogni versione di Delphi e C++Builder da Delphi 7 a Delphi 13, su FireMonkey su Windows e su WinForms, WPF e Avalonia. In Delphi e C++Builder, AccessibleName e AccessibleDescription impostano il nome e la descrizione esposti a UI Automation, e in .NET il nome accessibile e il testo della guida standard di ciascun framework fanno lo stesso. Vedi i report di conformità sull'accessibilità. Su Avalonia, che non ha pattern di tabella, ogni cella riporta la propria colonna e posizione nel nome e nel testo della guida. Le larghezze delle colonne si ridimensionano solo con il mouse.

Leggi l'argomento della guida

Guarda sgcGrid all'opera

sgcGrid nelle demo della suite sgcUI: applicazioni complete che funzionano offline con dati simulati integrati.

Un frame 1080p in pochi millisecondi

Ultime medie misurate del gate di prestazioni QA di sgcGrid: un frame 1920 x 1080 con 12 colonne, 100.000 righe e 45 righe visibili, renderizzato 60 volte sul canvas raster. Il gate fallisce sopra i 16 ms per frame su Win64 e 25 ms su Win32.

MisurazioneRisultatoCondizioni
Frame semplice3,0 msWin32
Frame semplice4,6 msWin64
Frame semplice3,7 msLinux64
Lampeggio e 3 regole di formato3,2 msWin32
Lampeggio e 3 regole di formato6,8 msWin64
Demo LiveTicker, scritture da thread di lavoroCirca 1.000 aggiornamenti al secondoGriglia ordinata con lampeggio a 60 fps

Fonte: l'argomento della guida che documenta questi numeri.

Chi sviluppa con sgcGrid

Desk di trading e dati di mercato

Una lavagna delle quotazioni deve restare leggibile mentre centinaia di prezzi cambiano ogni secondo. I thread dei feed scrivono con UpdateRow e non aspettano mai l'interfaccia, il lampeggio mostra la direzione di ogni movimento e la modalità tail mantiene il registro delle operazioni sull'esecuzione più recente. Il ponte sgcGridWS può leggere le quotazioni da WebSocket, MQTT o SSE.

  • Aggiornamenti live
  • Lampeggio al cambiamento
  • Modalità tail
  • Feed live
Esegui la demo LiveTicker

Back office e applicazioni gestionali

Le schermate di inserimento ordini, elenchi di magazzino e fatturazione vivono su un database. Collega il TDataSet esistente, lascia che gli utenti raggruppino per cliente o per mese con i totali in ogni riga di gruppo, correggano i valori direttamente con la convalida, ed esportino una cartella di lavoro che l'ufficio contabile apre con i suoi gruppi e le formule SUBTOTAL intatti.

  • Collegamento a DataSet
  • Raggruppamento e riepiloghi
  • Modifica diretta
  • Esportazione in Excel
Esegui la demo DataSetGrid

Monitoraggio, log e allarmi

Le schermate operative mostrano flussi di eventi senza fine. MaxRows limita il log, le regole di formato colorano di rosso gli errori e la modalità virtuale sfoglia su richiesta un archivio di milioni di righe. Su un server Linux64 il renderer scrive la stessa griglia in un file PNG o SVG per un'e-mail di allarme.

  • Regole di formato
  • MaxRows e modalità tail
  • Modalità virtuale
  • PNG e SVG headless
Esegui la demo LiveFeed

A Live Grid in a Few Lines

The same API in Delphi, C++ Builder and C#: add columns, append rows by key, and update them later from any thread.

A VCL grid in code: typed columns, rows appended by key, and an update by field name from any thread.

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;

Leggi l'argomento della guida →

The same grid in C++ Builder with the generated sgcGrid headers.

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

Leggi l'argomento della guida →

A WinForms grid with flashing cells, a negative change rule and the dark theme.

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

Leggi l'argomento della guida →

Esegui le demo di sgcGrid

15 demo per Delphi, tre delle quali FireMonkey, 11 per C++ Builder e 18 per .NET su WinForms, WPF e Avalonia.

LiveTicker

LiveTicker

Circa 1.000 aggiornamenti di prezzo al secondo da un thread di lavoro con UpdateRow, una vista ordinata, celle che lampeggiano e una regola di formato per le variazioni negative. VCL, FireMonkey, C++ Builder, WinForms, WPF e Avalonia.

DataSetGrid

DataSetGrid

Un TsgcGridSource_DataSet collegato a un TClientDataSet di 200 record con KeyField, AutoColumns e LiveUpdates, più esportazione e importazione JSON e CSV.

GroupAndSummary

GroupAndSummary

100.000 ordini raggruppati per Regione e Categoria con il pannello dei gruppi, i riepiloghi Count, Sum e Average, un piè di pagina e due colonne bloccate. In .NET si chiama Grouping.

FilterAndFind

FilterAndFind

100.000 righe di vendite con i popup a imbuto, la riga filtro e il pannello di ricerca, più il selettore colonne, l'adattamento automatico e un layout salvato in un file e ricaricato. VCL, FireMonkey, C++ Builder, WinForms, WPF e Avalonia.

BandsAndCells

BandsAndCells

2.000 strumenti sotto le bande Instrument, Live data, Price e Position, con celle sparkline, di avanzamento e immagine, selezione di più righe e un pulsante Copy. VCL, C++ Builder e WinForms.

Solo Registered Editing

Una colonna con elenco, una colonna booleana attivata con la barra spaziatrice, OnValidate che rifiuta le quantità negative, OnEditError e un log di OnEdited, più editor di data, ora, numero, colore e token di sgcEditors, un TTrackBar tramite OnCreateEditor, incolla, annulla e ripristina.

DataSetEditing

Solo Registered DataSetEditing

Prodotti e categorie in due TClientDataSet, con un TDBNavigator e due TDBEdit sugli stessi record: WriteBack, SyncCursor, una colonna di lookup, inserimento, eliminazione e annulla. VCL, C++ Builder e WinForms (un DataTable con AddLookup).

TreeAndDetail

Solo Registered TreeAndDetail

Un albero organigramma e clienti con una banda di dettaglio degli ordini riempita tramite un TsgcGridDataStore.

Solo Registered ExcelExport

Una griglia raggruppata e una griglia ad albero salvate con SaveToXLSX e aperte nell'applicazione di fogli di calcolo, con struttura e riepiloghi mantenuti.

GridAndChart

Un riquadro griglia e un riquadro grafico in una dashboard: un TsgcChartDataSource_Table rappresenta le righe della griglia. Richiede sgcCharts e sgcDashboard.

Solo Registered AskYourGrid

TsgcGridAI e la barra di query AI filtrano, ordinano ed evidenziano 200 titoli a partire da domande in linguaggio naturale, senza rete e senza chiave API, accanto al ponte TsgcGridAIQuery. Richiede sgcWebSockets.

Solo Registered LiveFeed

Un server WebSocket in-process trasmette batch JSON di 50 simboli, e un TsgcGridFeedSource_WebSocket li scrive nella griglia per chiave. Delphi e .NET.

Demo compilate

Eseguibili pronti all'uso di ogni prodotto sgcUI, senza nulla da installare.

Scarica sgcUI_bin.zip →

Dove è incluso sgcGrid

sgcGrid è venduto singolarmente, fa parte di ogni edizione sgcUI da Standard in su ed è nel bundle All-Access.

sgcGrid come pacchetto singolo

€199 / sviluppatore, codice sorgente completo, 1 anno di aggiornamenti.

Acquista sgcGrid → Vedi i prezzi →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar e sgcEditors, da €380.

Vedi Standard →

sgcUI Professional

Standard più sgcCharts, sgcDashboard e sgcGauges, da €529.

Vedi Professional →

sgcUI Enterprise

Tutti i 14 prodotti sgcUI, da €699.

Vedi Enterprise →

L'edizione Community gratuita è esegece.sgcGrid.Community su NuGet. Un progetto fa riferimento ai pacchetti Community oppure a quelli Registered, mai a entrambi.

FunzionalitàCommunity (gratuita)Registered
Aggiornamenti live da qualsiasi thread, lampeggio alla modifica, modalità tail✓✓
Regole di formato e temi✓✓
Ordinamento, filtri e selezione✓✓
Raggruppamento, pannello dei gruppi e riepiloghi✓✓
Colonne bloccate e ridimensionamento delle colonne✓✓
Modalità virtuale✓✓
Collegamento a DataTable, JSON e CSV✓✓
PNG e SVG senza interfaccia✓✓
Filtri di colonna, riga di filtro e pannello di ricerca✓✓
Selettore di colonne, riordino delle colonne, adattamento automatico e layout✓✓
Bande, celle immagine, di avanzamento e sparkline, selezione multipla✓✓
Chiedi alla tua griglia: TsgcGridAI, la barra di query AI e qualsiasi provider LLM✓✓
Modifica diretta nella cella−✓
Modifica bidirezionale di DataTable, incolla, annulla e ripeti, editor di cella sgcEditors−✓
Righe ad albero e master detail−✓
Esportazione in Excel−✓
Flussi live, TsgcGridAIQuery e il provider AI sgcWebSockets (ponti sgcGridWS e sgcUICoreWS)−✓

Framework e piattaforme supportati

Componenti di sgcGrid

ComponenteTarget
TsgcVCLGridDelphi e C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey da XE6, su Windows, macOS, iOS e Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererArchivio di righe, colonne, regole di formato e renderer indipendenti dal framework, anche su Linux64
TsgcGridAIMotore di query in linguaggio naturale indipendente dal framework, in ogni edizione e anche su Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderBarra di query AI e provider AI di sgcUICore, in ogni edizione
TsgcUIAIChatProviderPonte sgcUICoreWS: il TsgcAIChat di sgcWebSockets come provider AI (edizione Registered)
TsgcGridSource_DataSet, TsgcGridDataStoreCollegamento a TDataSet e archivio di righe delle bande master detail
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryPonte sgcGridWS con sgcWebSockets (edizione Registered)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF e Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, query in linguaggio naturale e barra di query AI per WinForms, WPF e Avalonia
TargetComponentePiattaforme
Da Delphi 7 a 13, VCLTsgcVCLGridWin32 e Win64 da XE2
Da Delphi XE6 a 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS e Android
Da C++ Builder 2007 a 13TsgcVCLGrid, TsgcFMXGridHeader .hpp generati e librerie statiche
Da Delphi 10.2 a 13, indipendente dal frameworkModello, formattazione, renderer, JSON e CSVLinux64, ad esempio per generare immagini della griglia su un server
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsGrid, griglie WPF e AvaloniaWinForms, WPF, Avalonia, PNG e SVG headless

Domande frequenti

Sì. AppendRow, UpdateRow, UpdateCell e DeleteRow dei dati della griglia sono thread safe, quindi un thread di lavoro scrive le righe per chiave direttamente. La griglia si ridisegna nel thread principale al massimo MaxFPS volte al secondo. Vedi Aggiornamenti live.

Vengono disegnate solo le righe visibili, quindi il costo di un frame dipende dalla finestra, non dal numero di righe. Il gate QA misura un frame 1080p di una griglia da 100.000 righe in 3,0 ms su Win32 e 4,6 ms su Win64. Per i dati che vivono altrove, la modalità virtuale non memorizza righe e chiede i valori man mano che scorrono in vista. Vedi Prestazioni.

Sì. TsgcGridSource_DataSet riempie una griglia da qualsiasi TDataSet, crea le colonne con AutoColumns e, con LiveUpdates, segue ogni Append, Edit e Delete del dataset. Con un KeyField le righe modificate vengono aggiornate sul posto invece di essere ricaricate. In .NET la stessa origine legge un DataTable. Vedi Collegamento a DataSet.

Sì. TsgcVCLGrid è un normale controllo VCL, quindi può stare su un form accanto a un TStringGrid o a un TDBGrid esistente. Una schermata con TDBGrid mantiene il suo dataset e aggiunge un TsgcGridSource_DataSet; una schermata con TStringGrid scrive le sue righe con AppendRow e UpdateRow per chiave. Non esiste una conversione automatica dei form esistenti.

La modifica diretta, la modifica bidirezionale di un DataTable, incolla, annulla e ripristina, gli editor di cella di sgcEditors, le righe ad albero, le righe master detail, l'esportazione in Excel e il ponte sgcGridWS. Ordinamento, filtri, riga filtro e pannello di ricerca, raggruppamento, riepiloghi, colonne bloccate, selettore colonne, layout, bande, celle immagine, di avanzamento e sparkline, selezione multipla, regole di formato, modalità virtuale, JSON e CSV, l'output headless e Chiedi alla tua griglia con TsgcGridAI sono in ogni edizione. Vedi Edizioni.

Sì. Dimensioni come GroupIndent e GroupPanelHeight sono pixel indipendenti dal dispositivo, e la griglia VCL le scala al DPI del suo monitor, per monitor da Delphi 10.3. Theme passa da utLight a utDark, AccentColor imposta l'accento della selezione e del lampeggio.

Guida di sgcGrid

3,000+Sviluppatori
20+Anni
761+Componenti
30+Integrazioni API
5Piattaforme
Garanzia soddisfatti o rimborsati di 30 giorniNon sei soddisfatto? Richiedi un rimborso completo entro 30 giorni dall'acquisto. Vedi la politica di rimborso

Prova sgcGrid oggi stesso

Il trial di sgcUI include sgcGrid con tutte le funzionalità sbloccate, gli altri 13 prodotti sgcUI e tutti i progetti demo.