Delphi, C++ Builder & .NET Fait partie de sgcUI

sgcGrid, la grille de données en direct pour Delphi, C++ Builder & .NET

Une grille conçue pour des données qui ne s'arrêtent jamais. Écris des lignes par clé depuis n'importe quel thread, regarde les cellules modifiées clignoter en vert ou en rouge, puis regroupe, filtre, modifie et exporte les mêmes lignes. Une image 1080p d'une grille de 100 000 lignes prend 3,0 ms sur Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms par image 1080p (Win32)Version .NET Community gratuiteInclus dans sgcUI Standard
sgcGrid avec 100 000 commandes regroupées par Région puis Catégorie, puces du panneau de groupes et totaux en pied de grille

Tout ce dont une grille en direct a besoin

Dix-huit fonctionnalités en cinq groupes, chacune liée à sa rubrique d'aide.

Données en direct

Des flux qui ne s'arrêtent jamais : cours, télémétrie, files d'attente et journaux.

Données en direct

Mets à jour des milliers de lignes par seconde depuis n'importe quel thread

Un flux de marché, un bus de capteurs ou une file de tâches peut écrire directement dans la grille. Chaque ligne a une clé, et un thread de travail met à jour la ligne d'une clé par nom de champ, sans appel à Synchronize et sans code de verrouillage de ta part. La grille se marque seulement comme modifiée dans le thread qui écrit et se redessine dans le thread principal au plus MaxFPS fois par seconde.

  • UpdateRow définit les champs nommés d'une clé et insère la ligne si la clé est nouvelle ; UpdateCell modifie un seul champ
  • AppendRow et DeleteRow ajoutent et suppriment des lignes par clé, depuis n'importe quel thread
  • BeginUpdate et EndUpdate transforment un lot en une seule notification
  • La ligne sélectionnée est retrouvée par sa clé après chaque nouveau tri, elle ne saute donc jamais
Lire la rubrique d'aide
Vois chaque changement d'un coup d'œil

Données en direct

Vois chaque changement d'un coup d'œil

Les traders et les opérateurs doivent voir ce qui a bougé sans lire chaque chiffre. Avec FlashChanges activé, ce qui est le cas par défaut, une cellule modifiée est teintée en vert quand sa valeur a monté et en rouge quand elle a baissé, puis s'estompe pendant FlashDuration millisecondes, 800 par défaut. Pour les journaux et les flux qui grandissent, le mode tail garde la ligne la plus récente visible et cesse de suivre dès que l'utilisateur remonte pour lire.

  • FlashUpColor, FlashDownColor et FlashChangedColor ; une couleur 0 utilise celle du thème
  • FlashMode teinte l'arrière-plan (fmBackground) ou le texte (fmText)
  • TailMode suit la ligne la plus récente, MaxRows supprime les lignes les plus anciennes d'un journal sans fin
  • La sélection se peint par-dessus le clignotement, et le clignotement par-dessus les règles de format
Lire la rubrique d'aide
Colore les lignes qui demandent de l'attention

Données en direct

Colore les lignes qui demandent de l'attention

Une facture en retard, un solde négatif ou une tâche en échec doivent ressortir avant que quiconque ne le demande. Les règles de format comparent une colonne à une valeur selon le type de données de cette colonne : les nombres numériquement, les dates comme des dates, le texte sans tenir compte de la casse. Une règle qui correspond définit la couleur de fond, la couleur du texte ou le gras sur la cellule ou sur toute la ligne, et elle continue de fonctionner pendant que les mises à jour en direct changent les valeurs.

  • TsgcGridFormatRules évalue ses règles dans l'ordre de la collection, une correspondance plus tardive remplaçant une plus ancienne
  • Des opérateurs comme gfoLess, gfoBetween, gfoContains et gfoIsEmpty
  • ApplyToRow stylise toutes les cellules de la ligne, StopOnMatch arrête l'évaluation pour une cellule
  • Les couleurs translucides teintent la cellule sur son arrière-plan, et OnGetCellStyle a le dernier mot
Lire la rubrique d'aide

Façonne les données

Trie, filtre, regroupe et imbrique de grands ensembles de lignes.

Regroupe et totalise 100 000 lignes en un seul appel

Façonne les données

Regroupe et totalise 100 000 lignes en un seul appel

Ventes par région, commandes par mois, tickets par statut : les utilisateurs veulent des totaux, pas des lignes brutes. GroupBy regroupe la grille selon une ou plusieurs colonnes, et chaque ligne de groupe affiche son membre, son nombre de lignes et les synthèses de ses lignes. Les utilisateurs regroupent seuls en faisant glisser un en-tête sur le panneau de groupes. Le regroupement ne concerne que l'état de la vue, donc un graphique lié à la grille voit toujours les lignes à plat et triées.

  • GroupBy et ClearGrouping depuis le code, ou GroupIndex par colonne
  • ShowGroupPanel ajoute des puces en glisser-déposer ; un clic sur une puce inverse l'ordre des groupes
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin ou gsuMax, formaté avec SummaryFormat
  • GroupSummaries dans chaque ligne de groupe et ShowFooter pour les totaux généraux
  • Un DisplayFormat de yyyy-mm regroupe les dates par mois
Lire la rubrique d'aide
Trie, filtre et recherche dans de grandes données

Façonne les données

Trie, filtre et recherche dans de grandes données

Trouver un client parmi des milliers doit prendre quelques frappes. FilterText garde les lignes dont le texte formaté contient les mots saisis dans n'importe quelle colonne visible, et un gestionnaire OnFilterRow ajoute tes propres règles par-dessus. Un clic sur un en-tête trie, Ctrl et clic ajoute une colonne à un tri multicolonne, et le tri est stable. Une colonne qui change en continu sans être triée ni filtrée ne coûte aucun nouveau tri.

  • SortOrder et SortIndex par colonne, OnSortChange après chaque changement
  • FilterText ignore la casse et lit le texte tel que l'utilisateur le voit
  • OnFilterRow pour une logique personnalisée, InvalidateView quand cette logique change
  • SelectionMode sélectionne des lignes ou des cellules, et Ctrl+C les copie en texte séparé par des tabulations
  • Les valeurs nulles, vides et non convertibles se trient toujours en premier
Lire la rubrique d'aide
Affiche des hiérarchies avec des lignes en arbre et des bandes de détail

Façonne les données Enregistrée uniquement

Affiche des hiérarchies avec des lignes en arbre et des bandes de détail

Un organigramme ou une nomenclature se lisent mieux en arbre, et les commandes d'un client juste sous le client. Les lignes en arbre disposent les lignes en profondeur d'abord à partir d'une colonne de clé et d'une colonne parent. Les bandes de détail ouvrent une petite grille de lignes liées sous n'importe quelle ligne maître, avec son propre en-tête, son défilement et son tri, remplie depuis un TsgcGridDataStore, une autre grille ou un événement.

  • Tree.KeyField et Tree.ParentField activent l'arbre ; ExpandNode et CollapseNode fonctionnent depuis le code
  • L'état déployé est conservé par clé, il survit donc au tri, au filtrage et aux mises à jour en direct
  • Detail.MasterKeyField et Detail.DetailKeyField relient une bande à sa source, OnGetDetailData la remplit à la demande
  • Les bandes fonctionnent en mode à plat, regroupé et en arbre, et les cellules de détail modifiées clignotent comme dans la grille maître

Absent de la version .NET Community, qui conserve le regroupement.

Lire la rubrique d'aide
Garde les colonnes clés visibles pendant que le reste défile

Façonne les données

Garde les colonnes clés visibles pendant que le reste défile

Les grilles larges perdent leur contexte quand le symbole ou le nom du client défile hors de la vue. FrozenColumns garde les premières colonnes visibles en place pendant que les autres défilent horizontalement, et l'en-tête, le pied et les synthèses de groupe suivent la même séparation. Les utilisateurs redimensionnent les colonnes en faisant glisser le bord de l'en-tête, et le moteur de rendu headless utilise le même réglage, donc les images exportées correspondent à l'écran. Les chevrons de groupe à gauche ne défilent jamais non plus.

  • FrozenColumns compte les colonnes visibles, et une ligne d'un pixel marque le bord figé
  • Les déplacements au clavier ramènent une colonne défilée dans la vue, à droite du bord figé
  • FrozenWidth du moteur de rendu renvoie la largeur qui ne défile pas
  • MinWidth limite un redimensionnement, OnColumnResized signale la nouvelle largeur
  • Présent dans chaque édition, version .NET Community gratuite comprise
  • De droite à gauche pour l'arabe et l'hébreu : la première colonne est à droite, les colonnes figées restent au bord droit, et l'export XLSX d'une grille de droite à gauche écrit une feuille de droite à gauche
Lire la rubrique d'aide
Démo FilterAndFind : boutons en entonnoir, une ligne de filtre avec (2 values) et > 500, et le panneau de recherche qui met Nakatomi en évidence

Façonne les données

Filtre comme dans un tableur et retrouve n'importe quelle valeur

Les utilisateurs attendent l'entonnoir qu'ils connaissent d'Excel. ShowFilterButtons en place un dans chaque en-tête de colonne : il ouvre un popup avec les valeurs distinctes de la colonne et leur nombre de lignes, une zone de recherche et jusqu'à deux conditions typées reliées par And ou Or. ShowFilterRow ajoute sous l'en-tête une ligne qui filtre une colonne pendant la saisie, et Ctrl+F ouvre le panneau de recherche, qui met le texte en évidence dans chaque cellule et saute d'une occurrence à l'autre.

  • Chaque colonne a un seul filtre, modifié par le popup, par la ligne de filtre et par Column.Filter dans le code, si bien que les trois restent toujours d'accord
  • Les listes de valeurs de deux colonnes filtrées se restreignent mutuellement, et un entonnoir plein montre quelles colonnes filtrent
  • FilterRowOperator par colonne : égal, supérieur à, contient, commence par, est vide et plus encore
  • FindText, FindNext et FindPrevious fonctionnent depuis le code, et FindOnlyMatches masque les lignes sans occurrence
  • Les filtres de colonne s'appliquent avec FilterText et OnFilterRow, et OnFilterChange signale chaque changement

Dans les grilles VCL, FireMonkey, WinForms, WPF et Avalonia, la version .NET Community gratuite comprise.

Lire la rubrique d'aide

Façonne les données

Laisse les utilisateurs organiser les colonnes et garde leur choix

Un clic droit sur un en-tête de colonne ouvre un menu qui trie, regroupe, ajuste les largeurs, filtre et ouvre le sélecteur de colonnes, un popup avec une case à cocher par colonne. Les utilisateurs font glisser un en-tête pour déplacer sa colonne, et un double clic sur le bord de l'en-tête ajuste la largeur à la légende et aux cellules. SaveLayoutToString et LoadLayoutFromString conservent tout cela sous forme d'un court texte JSON, si bien que la grille s'ouvre comme l'utilisateur l'a laissée.

  • HeaderMenu, ColumnMoving et BestFitOnDblClick sont activés par défaut, et un PopupMenu assigné reste prioritaire
  • ShowColumnChooser ouvre le sélecteur depuis un bouton ou un élément de menu de ton choix
  • Une colonne déplacée reste du même côté des colonnes figées et dans sa bande, et OnColumnMoved signale le déplacement
  • BestFitColumn et BestFitColumns mesurent l'en-tête et jusqu'à 1 000 lignes échantillonnées, si bien qu'un million de lignes coûte à peu près autant que mille
  • La disposition conserve l'ordre des colonnes, les largeurs, la visibilité, le tri, le regroupement, les filtres de colonne, les bandes et les options des panneaux ; SaveLayoutToFile et LoadLayoutFromFile utilisent un fichier

Dans les grilles VCL, FireMonkey, WinForms, WPF et Avalonia, la version .NET Community gratuite comprise.

Lire la rubrique d'aide
Démo BandsAndCells : bandes Instrument, Live data, Price et Position, sparklines en aire, barres de progression, icônes d'état et trois lignes sélectionnées

Façonne les données

En-têtes de bande, cellules riches et sélection de plusieurs lignes

Un écran de trading se lit mieux quand Last, Change et Trend se trouvent sous une même légende Price. Bands ajoute des légendes au-dessus de groupes de colonnes, sur autant de niveaux que nécessaire, et chaque colonne nomme sa bande dans Band. CellKind dessine une cellule comme une image, une barre de progression ou un sparkline, alors que la cellule garde sa valeur brute, si bien que le tri, le regroupement et l'export voient toujours le nombre.

  • Bands.Add prend une légende et une bande parente, et les lignes de bandes s'empilent au-dessus de l'en-tête de colonne
  • gcdProgress utilise ProgressMin et ProgressMax ; gcdSparkline trace un graphique en ligne, en aire ou en barres à partir d'une liste de nombres
  • gcdImage dessine une image de CellImages, que la grille remplit depuis n'importe quelle liste d'images assignée à Images
  • SelectionMode gsmMultiRow sélectionne n'importe quel ensemble de lignes avec Ctrl et Maj, gsmCellRange une plage de cellules, et Ctrl+A sélectionne tout
  • La sélection est conservée par clé de ligne, si bien qu'elle survit au tri, au filtrage et aux mises à jour en direct, et Ctrl+C la copie sous forme de texte séparé par des tabulations

Dans les grilles VCL, FireMonkey, WinForms, WPF et Avalonia, la version .NET Community gratuite comprise.

Lire la rubrique d'aide

Modifie et exporte

Change les données, synchronise-les avec ta base, transmets-les.

Modifie et exporte Enregistrée uniquement

Modifie sur place avec validation

Les utilisateurs de back office s'attendent à corriger une quantité ou un statut directement dans la grille. Mets ReadOnly à False et F2, Entrée, un caractère saisi ou un double-clic ouvre un éditeur sur la cellule, ou une liste déroulante quand la colonne a une PickList. Le texte saisi est converti selon le type de données de la colonne, OnValidate peut modifier ou refuser la valeur, et le résultat est écrit avec UpdateCell, donc le tri et le clignotement s'appliquent toujours.

  • Editable par colonne, et OnBeforeEdit peut refuser une modification
  • Entrée valide, Tab passe à la cellule modifiable suivante, Échap annule ; StartEdit, CommitEdit et CancelEdit font la même chose depuis le code
  • OnEditError garde l'éditeur ouvert en cas de saisie erronée, OnEdited signale l'ancienne et la nouvelle valeur

Absent de la version .NET Community.

Lire la rubrique d'aide
Lie n'importe quel TDataSet en quelques lignes

Modifie et exporte

Lie n'importe quel TDataSet en quelques lignes

Le code de base de données existant continue de fonctionner : un TsgcGridSource_DataSet remplit la grille depuis une requête FireDAC, un TClientDataSet ou tout autre TDataSet. Renseigne ses propriétés Grid et DataSet, passe-le à Active, et les lignes apparaissent. Avec un KeyField, la grille est synchronisée plutôt que rechargée, donc les lignes modifiées se mettent à jour sur place et clignotent. Avec LiveUpdates activé, chaque Append, Edit et Delete validé atteint la grille sans code supplémentaire.

  • AutoColumns crée les colonnes à partir des champs du jeu de données
  • Avec un KeyField, les nouvelles clés sont ajoutées et les clés manquantes supprimées
  • Le jeu de données est parcouru avec DisableControls et son enregistrement courant est restauré
  • JSON et CSV aussi : GridLoadFromJSONFile, GridSaveToCSVFile et le reste de sgcGrid_IO
  • En .NET, la même classe lit un DataTable
Lire la rubrique d'aide

Modifie et exporte Enregistrée uniquement

Remets aux utilisateurs un vrai fichier Excel

La comptabilité veut les chiffres dans Excel, pas une capture d'écran. SaveToXLSX écrit la grille sous forme de classeur Office Open XML dans un fichier ou un flux, sans bibliothèque externe. La feuille conserve ce que voit l'utilisateur : les colonnes visibles dans l'ordre d'affichage avec leurs largeurs et leurs formats de nombre, l'en-tête figé, les groupes et les niveaux d'arbre sous forme de plan repliable, et les totaux de groupe sous forme de formules SUBTOTAL.

  • SaveToXLSX accepte un nom de fichier ou un flux et un nom de feuille facultatif
  • Les nombres restent des nombres, les dates deviennent des dates Excel, et un DisplayFormat devient le format de nombre de la cellule
  • Les groupes repliés s'ouvrent repliés dans Excel, comme la grille les affichait
  • Appelle-le dans le thread de l'interface ; les bandes de détail ne sont pas exportées
  • Chaque ligne de groupe et chaque ligne de vue est écrite, même si elle est repliée

Absent de la version .NET Community, qui conserve l'export JSON et CSV.

Lire la rubrique d'aide
Démo DataSetEditing : un TDBNavigator et deux TDBEdits sur les mêmes enregistrements que la grille, avec une colonne de recherche de catégorie

Modifie et exporte Enregistrée uniquement

Modifie le DataSet à travers la grille

Avec WriteBack activé, un TsgcGridSource_DataSet écrit chaque modification de la grille dans l'enregistrement de sa ligne. Il localise l'enregistrement par KeyField et valide la valeur. Quand la validation échoue, par exemple dans un contrôle BeforePost, l'enregistrement est annulé et la cellule garde son ancienne valeur. SyncCursor garde ensemble l'enregistrement courant et la ligne active, si bien qu'un TDBNavigator et des contrôles TDBEdit sur le même dataset suivent la grille, et que la grille les suit.

  • AllowInsert : Ins ajoute et valide un enregistrement, et OnNewRecord du dataset renseigne les valeurs par défaut
  • AllowDelete : Ctrl+Suppr supprime les lignes sélectionnées et leurs enregistrements une fois que OnBeforeDelete est d'accord
  • Les champs de recherche sont modifiés comme une liste de choix des résultats de la recherche, et la clé correspondante est écrite
  • OnEditError affiche le message du dataset ; les valeurs collées et l'annulation utilisent le même chemin d'écriture

Dans les grilles VCL, FireMonkey, WinForms, WPF et Avalonia ; absent de la version .NET Community. En .NET, la source écrit dans un DataTable, AddLookup ajoute les colonnes de recherche, et SyncCursor n'existe que sous Delphi.

Lire la rubrique d'aide
Démo Editing en thème sombre avec un sélecteur de date ouvert dans la colonne Date

Modifie et exporte Enregistrée uniquement

Sélecteurs de date, collage depuis Excel, annuler et rétablir

Chaque colonne choisit le contrôle qui la modifie. EditorKind choisit un sélecteur de date, d'heure ou de date et heure, un champ numérique à flèches, un sélecteur de couleur ou un éditeur de jetons de sgcEditors, et la valeur par défaut se détermine d'après le type de données de la colonne. Ctrl+V colle un bloc copié depuis Excel : chaque valeur est convertie et validée avant que quoi que ce soit soit écrit, et tout le collage forme une seule étape d'annulation. Ctrl+Z et Ctrl+Y annulent et rétablissent les modifications et les collages.

  • OnCreateEditor place n'importe quel contrôle de ton choix dans une cellule, par exemple un TTrackBar
  • PasteText et PasteFromClipboard fonctionnent depuis le code, et OnBeforePaste peut modifier ou refuser le texte
  • Une seule valeur qui ne se convertit pas, ou que OnValidate rejette, arrête le collage avant que quoi que ce soit soit écrit
  • L'annulation travaille par clé de ligne et par champ, si bien qu'elle retrouve ses lignes après un tri ou un filtrage, et elle conserve une valeur qu'une mise à jour en direct a changée entre-temps
  • UndoLimit conserve les 100 dernières étapes ; Undo, Redo et CanUndo fonctionnent depuis le code

Dans les grilles VCL, FireMonkey, WinForms, WPF et Avalonia ; absent de la version .NET Community.

Lire la rubrique d'aide

Passe à l'échelle et connecte

Des millions de lignes, des flux en direct et le langage naturel.

Parcours des millions de lignes sans les charger

Passe à l'échelle et connecte

Parcours des millions de lignes sans les charger

Les archives de journaux, les historiques de capteurs et les résultats de requêtes qui vivent déjà ailleurs n'ont pas besoin d'être copiés en mémoire. En mode virtuel, la grille ne stocke aucune ligne : VirtualRowCount indique combien il y en a, et OnGetValue renvoie une valeur quand sa ligne arrive dans la vue. Seules les lignes visibles sont dessinées, donc une grille d'un million de lignes coûte autant qu'une de cinquante. Modifie le nombre à mesure que la source grandit.

  • Virtual et VirtualRowCount sur les données de la grille, OnGetValue fournit les cellules
  • Les synthèses du pied lisent aussi leurs valeurs via OnGetValue
  • Les lignes virtuelles n'ont pas de clé, elles gardent donc l'ordre de la source, sans tri, filtrage ni clignotement
  • Pour les flux qui grandissent sans fin, MaxRows avec TailMode est l'alternative par clé
Lire la rubrique d'aide

Passe à l'échelle et connecte

Laisse les utilisateurs interroger la grille en langage naturel

Tout le monde ne veut pas construire des filtres. TsgcGridAI transforme une question comme price greater than 100 sort by volume descending highlight change less than 0 en filtres, tris et mises en évidence de lignes sur la grille, et la barre de requête IA offre aux utilisateurs un endroit où la saisir. Sans fournisseur assigné, un analyseur à base de règles répond en local, sans réseau ni clé d'API. Assigne un fournisseur et n'importe quel LLM répond à la place : TsgcUIAIEventProvider transmet chaque requête à ton propre code, et TsgcUIAIChatProvider utilise le composant TsgcAIChat de sgcWebSockets. Seul le catalogue de champs est envoyé, les noms, libellés, types et quelques valeurs d'exemple des colonnes, jamais les lignes.

  • La barre de requête : TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar et TsgcAvaloniaAIQueryBar, avec questions récentes, suggestions, interruption et annulation
  • Les filtres passent par OnFilterRow, les mises en évidence deviennent des règles de format ApplyToRow
  • Chaque réponse remplace la précédente, et Undo revient d'une étape en arrière
  • LastExplanation indique ce qui a été appliqué, et quand le fournisseur échoue, l'analyseur à base de règles répond
  • Le pont sgcGridWS conserve TsgcGridAIQuery avec TsgcHTMLAIAssistant, et apporte TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT et TsgcGridFeedSource_SSE, qui écrivent des messages JSON dans la grille par clé

Dans chaque édition, Community comprise, sur VCL, FireMonkey, WinForms, WPF et Avalonia. Le fournisseur sgcWebSockets et le pont sgcGridWS nécessitent sgcWebSockets et une édition Enregistrée.

Lire la rubrique d'aide

Accessibilité

UI Automation pour les lecteurs d'écran, le clavier et le contraste élevé, sans configuration.

Accessibilité

Une grille exposée comme un vrai tableau

sgcGrid expose son contenu à Microsoft UI Automation sous forme de tableau avec des en-têtes de colonne, des lignes et des cellules, l'API qu'utilisent les lecteurs d'écran tels que Narrator et NVDA. Seules les lignes visibles sont construites, et les nombres de lignes et de colonnes sont toujours les nombres complets, si bien qu'une grille d'un million de lignes ne coûte rien de plus.

  • La cellule qui a le focus, la sélection, le tri, le filtre, le regroupement et les lignes arborescentes sont exposés par les modèles Grid, Table et Selection
  • Flèches, Début, Fin, Page précédente et Page suivante déplacent la cellule qui a le focus, Shift étend la sélection, Ctrl+Space bascule la ligne ou la cellule et F2 ou Entrée lance l'édition
  • Alt+Bas ouvre la fenêtre du filtre, Alt+Shift+Gauche et Alt+Shift+Droite déplacent la colonne, Ctrl+Shift+G regroupe selon la colonne qui a le focus et Ctrl+Shift+U supprime ce regroupement
  • Un anneau de focus visible, et sous un thème à contraste élevé de Windows la grille se dessine avec les couleurs du système

L'accessibilité est activée par défaut dans toutes les éditions, l'édition Community gratuite comprise, sur VCL dans toutes les versions de Delphi et C++Builder de Delphi 7 à Delphi 13, sur FireMonkey sous Windows, et sur WinForms, WPF et Avalonia. Dans Delphi et C++Builder, AccessibleName et AccessibleDescription définissent le nom et la description exposés à UI Automation, et en .NET le nom accessible et le texte d'aide standard de chaque framework font de même. Voir les rapports de conformité d'accessibilité. Sur Avalonia, qui n'a pas de modèles de tableau, chaque cellule porte sa colonne et sa position dans son nom et son texte d'aide. Les largeurs de colonne ne se redimensionnent qu'à la souris.

Lire la rubrique d'aide

Découvre sgcGrid en action

sgcGrid dans les démos de la suite sgcUI : des applications complètes qui fonctionnent hors ligne avec des données simulées intégrées.

Une image 1080p en quelques millisecondes

Dernières moyennes mesurées par le contrôle de performance QA de sgcGrid : une image de 1920 x 1080 avec 12 colonnes, 100 000 lignes et 45 lignes visibles, rendue 60 fois sur le canevas raster. Le contrôle échoue au-delà de 16 ms par image sur Win64 et de 25 ms sur Win32.

MesureRésultatConditions
Image simple3,0 msWin32
Image simple4,6 msWin64
Image simple3,7 msLinux64
Clignotement et 3 règles de format3,2 msWin32
Clignotement et 3 règles de format6,8 msWin64
Démo LiveTicker, écritures depuis un thread de travailEnviron 1 000 mises à jour par secondeGrille triée et clignotante à 60 ips

Source : la rubrique d'aide qui documente ces chiffres.

Qui construit avec sgcGrid

Salles de marché et données de marché

Un tableau de cotations doit rester lisible alors que des centaines de prix changent chaque seconde. Les threads de flux écrivent avec UpdateRow sans jamais attendre l'interface, le clignotement au changement montre la direction de chaque mouvement, et le mode tail garde le journal des transactions sur la dernière exécution. Le pont sgcGridWS peut lire les cotations depuis WebSocket, MQTT ou SSE.

  • Mises à jour en direct
  • Clignotement au changement
  • Mode tail
  • Flux en direct
Lance la démo LiveTicker

Back office et applications métier

Les écrans de saisie de commandes, de listes de stock et de facturation vivent sur une base de données. Lie le TDataSet existant, laisse les utilisateurs regrouper par client ou par mois avec des totaux dans chaque ligne de groupe, corriger des valeurs sur place avec validation, et exporter un classeur que la comptabilité ouvre avec ses groupes et ses formules SUBTOTAL intacts.

  • Liaison de jeu de données
  • Regroupement et synthèses
  • Édition sur place
  • Export Excel
Lance la démo DataSetGrid

Supervision, journaux et alertes

Les écrans d'exploitation affichent des flux d'événements sans fin. MaxRows plafonne le journal, les règles de format peignent les erreurs en rouge, et le mode virtuel parcourt à la demande une archive de millions de lignes. Sur un serveur Linux64, le moteur de rendu écrit la même grille dans un fichier PNG ou SVG pour un e-mail d'alerte.

  • Règles de format
  • MaxRows et mode tail
  • Mode virtuel
  • PNG et SVG headless
Lance la démo 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;

Lire la rubrique d'aide →

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

Lire la rubrique d'aide →

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

Lire la rubrique d'aide →

Lance les démos de sgcGrid

15 démos pour Delphi, dont trois FireMonkey, 11 pour C++ Builder et 18 pour .NET sur WinForms, WPF et Avalonia.

LiveTicker

LiveTicker

Environ 1 000 mises à jour de prix par seconde depuis un thread de travail avec UpdateRow, une vue triée, des cellules qui clignotent et une règle de format pour les variations négatives. VCL, FireMonkey, C++ Builder, WinForms, WPF et Avalonia.

DataSetGrid

DataSetGrid

Un TsgcGridSource_DataSet lié à un TClientDataSet de 200 enregistrements avec KeyField, AutoColumns et LiveUpdates, plus l'export et l'import JSON et CSV.

GroupAndSummary

GroupAndSummary

100 000 commandes regroupées par Région et Catégorie avec le panneau de groupes, les synthèses Count, Sum et Average, un pied et deux colonnes figées. .NET l'appelle Grouping.

FilterAndFind

FilterAndFind

100 000 lignes de ventes avec les popups en entonnoir, la ligne de filtre et le panneau de recherche, plus le sélecteur de colonnes, l'ajustement automatique, et une disposition enregistrée dans un fichier puis rechargée. VCL, FireMonkey, C++ Builder, WinForms, WPF et Avalonia.

BandsAndCells

BandsAndCells

2 000 instruments sous les bandes Instrument, Live data, Price et Position, avec des cellules sparkline, progression et image, la sélection de plusieurs lignes et un bouton Copy. VCL, C++ Builder et WinForms.

Enregistrée uniquement Editing

Une colonne à liste de choix, une colonne booléenne basculée avec Espace, OnValidate qui refuse les quantités négatives, OnEditError et un journal OnEdited, plus des éditeurs de date, d'heure, de nombre, de couleur et de jetons de sgcEditors, un TTrackBar via OnCreateEditor, le collage, l'annulation et le rétablissement.

DataSetEditing

Enregistrée uniquement DataSetEditing

Produits et catégories dans deux TClientDataSets, avec un TDBNavigator et deux TDBEdits sur les mêmes enregistrements : WriteBack, SyncCursor, une colonne de recherche, l'insertion, la suppression et l'annulation. VCL, C++ Builder et WinForms (un DataTable avec AddLookup).

TreeAndDetail

Enregistrée uniquement TreeAndDetail

Un arbre d'organigramme, et des clients avec une bande de détail de commandes remplie via un TsgcGridDataStore.

Enregistrée uniquement ExcelExport

Une grille regroupée et une grille en arbre enregistrées avec SaveToXLSX et ouvertes dans le tableur, plan et synthèses conservés.

GridAndChart

Une tuile de grille et une tuile de graphique dans un tableau de bord : un TsgcChartDataSource_Table trace les lignes de la grille. Nécessite sgcCharts et sgcDashboard.

Enregistrée uniquement AskYourGrid

TsgcGridAI et la barre de requête IA filtrent, trient et mettent en évidence 200 actions à partir de questions en langage naturel, sans réseau ni clé d'API, à côté du pont TsgcGridAIQuery. Nécessite sgcWebSockets.

Enregistrée uniquement LiveFeed

Un serveur WebSocket dans le même processus diffuse des lots JSON de 50 symboles, et un TsgcGridFeedSource_WebSocket les écrit dans la grille par clé. Delphi et .NET.

Démos compilées

Des exécutables prêts à lancer pour chaque produit sgcUI, rien à installer.

Télécharger sgcUI_bin.zip →

Où sgcGrid est inclus

sgcGrid est vendu seul, fait partie de chaque édition sgcUI à partir de Standard, et se trouve dans le pack All-Access.

sgcGrid, package seul

€199 / développeur, code source complet, 1 an de mises à jour.

Acheter sgcGrid → Voir les tarifs →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar et sgcEditors, à partir de €380.

Voir Standard →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard et sgcGauges, à partir de €529.

Voir Professional →

sgcUI Enterprise

Les 14 produits sgcUI, à partir de €699.

Voir Enterprise →

L'édition Community gratuite est esegece.sgcGrid.Community sur NuGet. Un projet référence soit les paquets Community, soit les paquets enregistrés, jamais les deux.

FonctionnalitéCommunity (gratuite)Enregistrée
Mises à jour en direct depuis n'importe quel thread, clignotement au changement, mode tail✓✓
Règles de format et thèmes✓✓
Tri, filtrage et sélection✓✓
Regroupement, panneau de groupes et synthèses✓✓
Colonnes figées et redimensionnement des colonnes✓✓
Mode virtuel✓✓
Liaison DataTable, JSON et CSV✓✓
PNG et SVG headless✓✓
Filtres de colonne, ligne de filtre et panneau de recherche✓✓
Sélecteur de colonnes, déplacement des colonnes, ajustement automatique et dispositions✓✓
Bandes, cellules image, progression et sparkline, sélection multiple✓✓
Interroge ta grille : TsgcGridAI, la barre de requête IA et tout fournisseur de LLM✓✓
Édition sur place−✓
Édition bidirectionnelle d'un DataTable, collage, annulation et rétablissement, éditeurs de cellule sgcEditors−✓
Lignes en arbre et maître détail−✓
Export Excel−✓
Flux en direct, TsgcGridAIQuery et le fournisseur d'IA sgcWebSockets (ponts sgcGridWS et sgcUICoreWS)−✓

Frameworks et plateformes pris en charge

Composants de sgcGrid

ComposantCible
TsgcVCLGridDelphi et C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey à partir de XE6, sur Windows, macOS, iOS et Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererStockage de lignes, colonnes, règles de format et moteur de rendu indépendants du framework, aussi sur Linux64
TsgcGridAIMoteur de requêtes en langage naturel indépendant du framework, dans chaque édition et aussi sur Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderBarre de requête IA et fournisseur d'IA de sgcUICore, dans chaque édition
TsgcUIAIChatProviderPont sgcUICoreWS : le TsgcAIChat de sgcWebSockets comme fournisseur d'IA (édition enregistrée)
TsgcGridSource_DataSet, TsgcGridDataStoreLiaison TDataSet et stockage de lignes des bandes maître détail
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryPont sgcGridWS avec sgcWebSockets (édition enregistrée)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF et Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, requêtes en langage naturel et barre de requête IA pour WinForms, WPF et Avalonia
CibleComposantPlateformes
Delphi 7 à 13, VCLTsgcVCLGridWin32, et Win64 à partir de XE2
Delphi XE6 à 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS et Android
C++ Builder 2007 à 13TsgcVCLGrid, TsgcFMXGridEn-têtes .hpp générés et bibliothèques statiques
Delphi 10.2 à 13, indépendant du frameworkModèle, mise en forme, moteur de rendu, JSON et CSVLinux64, par exemple pour produire des images de grille sur un serveur
.NET Framework 4.7.2, .NET 8, 9 et 10TsgcWinFormsGrid, grilles WPF et AvaloniaWinForms, WPF, Avalonia, PNG et SVG headless

Foire aux questions

Oui. AppendRow, UpdateRow, UpdateCell et DeleteRow des données de la grille sont thread safe, donc un thread de travail écrit directement des lignes par clé. La grille se redessine dans le thread principal au plus MaxFPS fois par seconde. Voir Mises à jour en direct.

Seules les lignes visibles sont dessinées, donc le coût d'une image dépend de la fenêtre, pas du nombre de lignes. Le contrôle QA mesure une image 1080p d'une grille de 100 000 lignes à 3,0 ms sur Win32 et 4,6 ms sur Win64. Pour les données qui vivent ailleurs, le mode virtuel ne stocke aucune ligne et demande les valeurs au fur et à mesure qu'elles arrivent dans la vue. Voir Performance.

Oui. TsgcGridSource_DataSet remplit une grille depuis n'importe quel TDataSet, crée les colonnes avec AutoColumns et, avec LiveUpdates, suit chaque Append, Edit et Delete du jeu de données. Avec un KeyField, les lignes modifiées sont mises à jour sur place au lieu d'être rechargées. En .NET, la même source lit un DataTable. Voir Liaison de jeu de données.

Oui. TsgcVCLGrid est un contrôle VCL ordinaire, il peut donc se placer sur une fiche à côté d'un TStringGrid ou d'un TDBGrid existant. Un écran TDBGrid garde son jeu de données et ajoute un TsgcGridSource_DataSet ; un écran TStringGrid écrit ses lignes avec AppendRow et UpdateRow par clé. Il n'y a pas de conversion automatique des fiches existantes.

L'édition sur place, l'édition bidirectionnelle d'un DataTable, le collage, l'annulation et le rétablissement, les éditeurs de cellule sgcEditors, les lignes en arbre, les lignes maître détail, l'export Excel et le pont sgcGridWS. Le tri, le filtrage, la ligne de filtre et le panneau de recherche, le regroupement, les synthèses, les colonnes figées, le sélecteur de colonnes, les dispositions, les bandes, les cellules image, progression et sparkline, la sélection multiple, les règles de format, le mode virtuel, JSON et CSV, la sortie headless et Interroge ta grille avec TsgcGridAI sont dans chaque édition. Voir Éditions.

Oui. Les tailles comme GroupIndent et GroupPanelHeight sont en pixels indépendants de l'appareil, et la grille VCL les adapte au DPI de son moniteur, par moniteur à partir de Delphi 10.3. Theme bascule entre utLight et utDark, AccentColor définit l'accent de la sélection et du clignotement.

Aide de sgcGrid

3,000+Développeurs
20+Ans
761+Composants
30+Intégrations d'API
5Plateformes
Garantie satisfait ou remboursé de 30 joursPas satisfait ? Demandez un remboursement intégral dans les 30 jours suivant l'achat. Voir la politique de remboursement

Essaie sgcGrid dès aujourd'hui

L'essai sgcUI inclut sgcGrid avec toutes les fonctionnalités débloquées, les 13 autres produits sgcUI et tous les projets de démonstration.