Delphi, C++ Builder & .NET Onderdeel van sgcUI

sgcGrid, het live datagrid voor Delphi, C++ Builder & .NET

Een grid gebouwd voor gegevens die nooit stilstaan. Schrijf rijen op sleutel vanuit elke thread, zie gewijzigde cellen groen of rood oplichten en groepeer, filter, bewerk en exporteer daarna dezelfde rijen. Een 1080p-frame van een grid met 100.000 rijen kost 3,0 ms op Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms per 1080p-frame (Win32)Gratis .NET Community-buildInbegrepen in sgcUI Standard
sgcGrid met 100.000 orders gegroepeerd op regio en daarna categorie, groepspaneelchips en voettotalen

Alles wat een live grid nodig heeft

Achttien functies in vijf groepen, elk gekoppeld aan het bijbehorende helponderwerp.

Live gegevens

Feeds die nooit stoppen: koersen, telemetrie, wachtrijen en logs.

Live gegevens

Werk duizenden rijen per seconde bij vanuit elke thread

Een marktfeed, een sensorbus of een jobwachtrij kan rechtstreeks in het grid schrijven. Elke rij heeft een sleutel en een workerthread werkt de rij van een sleutel bij op veldnaam, zonder Synchronize-aanroep en zonder eigen lockingcode. Het grid markeert zichzelf alleen als gewijzigd op de schrijvende thread en hertekent op de hoofdthread hooguit MaxFPS keer per seconde.

  • UpdateRow stelt de genoemde velden van een sleutel in en voegt de rij toe wanneer de sleutel nieuw is; UpdateCell wijzigt één veld
  • AppendRow en DeleteRow voegen rijen toe en verwijderen ze op sleutel, vanuit elke thread
  • BeginUpdate en EndUpdate maken van een batch één enkele melding
  • De geselecteerde rij wordt na elke nieuwe sortering op sleutel teruggevonden, dus hij springt nooit weg
Het helponderwerp lezen
Zie elke wijziging in één oogopslag

Live gegevens

Zie elke wijziging in één oogopslag

Handelaren en operators moeten zien wat er bewogen heeft zonder elk getal te lezen. Met FlashChanges aan, wat de standaard is, wordt een gewijzigde cel groen getint wanneer de waarde steeg en rood wanneer die daalde, en vervaagt daarna in FlashDuration milliseconden, standaard 800. Voor logs en groeiende feeds houdt de tailmodus de nieuwste rij in beeld en stopt met volgen zodra de gebruiker omhoog scrolt om te lezen.

  • FlashUpColor, FlashDownColor en FlashChangedColor; kleur 0 gebruikt de themastandaard
  • FlashMode tint de achtergrond (fmBackground) of de tekst (fmText)
  • TailMode volgt de nieuwste rij, MaxRows laat de oudste rijen van een eindeloos log vallen
  • De selectie wordt boven de flash getekend, en de flash boven de opmaakregels
Het helponderwerp lezen
Kleur de rijen die aandacht nodig hebben

Live gegevens

Kleur de rijen die aandacht nodig hebben

Een achterstallige factuur, een negatief saldo of een mislukte job moet opvallen voordat iemand ernaar vraagt. Opmaakregels vergelijken een kolom met een waarde volgens het gegevenstype van die kolom: getallen numeriek, datums als datums, tekst hoofdletterongevoelig. Een passende regel stelt de achtergrondkleur, de tekstkleur of vet in op de cel of op de hele rij, en blijft werken terwijl live updates de onderliggende waarden wijzigen.

  • TsgcGridFormatRules evalueert zijn regels in verzamelingsvolgorde, waarbij een latere overeenkomst een eerdere overschrijft
  • Operators zoals gfoLess, gfoBetween, gfoContains en gfoIsEmpty
  • ApplyToRow past de stijl toe op elke cel van de rij, StopOnMatch beëindigt de evaluatie voor een cel
  • Doorzichtige kleuren tinten de cel over zijn achtergrond en OnGetCellStyle heeft het laatste woord
Het helponderwerp lezen

Vorm de gegevens

Sorteer, filter, groepeer en nest grote rijsets.

Groepeer en tel 100.000 rijen op in één aanroep

Vorm de gegevens

Groepeer en tel 100.000 rijen op in één aanroep

Verkoop per regio, orders per maand, tickets per status: gebruikers willen totalen, geen ruwe rijen. GroupBy groepeert het grid op een of meer kolommen en elke grouprij toont zijn lid, zijn aantal rijen en de samenvattingen van zijn rijen. Gebruikers hergroeperen zelf door een kop naar het groepspaneel te slepen. Groeperen is alleen weergavestatus, dus een grafiek die aan het grid is gekoppeld ziet nog steeds de platte, gesorteerde rijen.

  • GroupBy en ClearGrouping vanuit code, of GroupIndex per kolom
  • ShowGroupPanel voegt chips toe om te slepen en neer te zetten; een klik op een chip keert de groepsvolgorde om
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin of gsuMax, opgemaakt met SummaryFormat
  • GroupSummaries in elke grouprij en ShowFooter voor de eindtotalen
  • Een DisplayFormat van yyyy-mm groepeert datums per maand
Het helponderwerp lezen
Sorteer, filter en zoek in grote hoeveelheden gegevens

Vorm de gegevens

Sorteer, filter en zoek in grote hoeveelheden gegevens

Eén klant vinden tussen duizenden zou een paar toetsaanslagen moeten kosten. FilterText behoudt de rijen waarvan de opgemaakte tekst de getypte woorden bevat in een zichtbare kolom, en een OnFilterRow-handler voegt je eigen regels toe. Een klik op een kop sorteert, Ctrl en klikken voegt een kolom toe aan een sortering op meerdere kolommen, en de sortering is stabiel. Een tikkende kolom die niet gesorteerd of gefilterd is, kost helemaal geen hersortering.

  • SortOrder en SortIndex per kolom, OnSortChange na elke wijziging
  • FilterText is hoofdletterongevoelig en leest de tekst zoals de gebruiker die ziet
  • OnFilterRow voor eigen logica, InvalidateView wanneer die logica verandert
  • SelectionMode selecteert rijen of cellen en Ctrl+C kopieert ze als door tabs gescheiden tekst
  • Null-, lege en niet-converteerbare waarden sorteren altijd eerst
Het helponderwerp lezen
Toon hiërarchieën met boomrijen en detailbanden

Vorm de gegevens Alleen geregistreerd

Toon hiërarchieën met boomrijen en detailbanden

Een organigram of een stuklijst leest het best als een boom, en de orders van een klant het best direct onder de klant. Boomrijen leggen rijen diepte-eerst uit vanuit een sleutelkolom en een oudkolom. Detailbanden openen een klein grid met gerelateerde rijen onder elke hoofdrij, met eigen kop, scrollen en sorteren, gevuld vanuit een TsgcGridDataStore, een ander grid of een gebeurtenis.

  • Tree.KeyField en Tree.ParentField schakelen de boom in; ExpandNode en CollapseNode werken vanuit code
  • De uitgeklapte status wordt per sleutel bewaard, dus blijft behouden bij sorteren, filteren en live updates
  • Detail.MasterKeyField en Detail.DetailKeyField koppelen een band aan zijn bron, OnGetDetailData vult hem op aanvraag
  • Banden werken in platte, gegroepeerde en boommodus, en gewijzigde detailcellen lichten op zoals in het hoofdgrid

Niet in de .NET Community-build, die groeperen wel bevat.

Het helponderwerp lezen
Houd sleutelkolommen in beeld terwijl de rest scrollt

Vorm de gegevens

Houd sleutelkolommen in beeld terwijl de rest scrollt

Brede grids verliezen hun context wanneer het symbool of de klantnaam wegscrolt. FrozenColumns houdt de eerste zichtbare kolommen op hun plaats terwijl de andere horizontaal scrollen, en de kop, de voet en de groepssamenvattingen volgen dezelfde splitsing. Gebruikers wijzigen de kolombreedte door de kopranden te slepen, en de headless renderer gebruikt dezelfde instelling, dus geëxporteerde afbeeldingen komen overeen met het scherm. De groepschevrons links scrollen ook nooit mee.

  • FrozenColumns telt zichtbare kolommen en een lijn van één pixel markeert de vastgezette rand
  • Toetsenbordbewegingen brengen een weggescrolde kolom in beeld rechts van de vastgezette rand
  • FrozenWidth van de renderer geeft de breedte terug die niet scrolt
  • MinWidth begrenst het wijzigen van de grootte, OnColumnResized meldt de nieuwe breedte
  • Onderdeel van elke editie, ook van de gratis .NET Community-build
  • Rechts naar links voor Arabisch en Hebreeuws: de eerste kolom staat rechts, bevroren kolommen blijven aan de rechterrand en de XLSX-export van een grid van rechts naar links schrijft een blad van rechts naar links
Het helponderwerp lezen
Demo FilterAndFind: trechterknoppen, een filterrij met (2 waarden) en > 500 en het zoekpaneel dat Nakatomi markeert

Vorm de gegevens

Filter als in een spreadsheet en vind elke waarde

Gebruikers verwachten de trechter die ze uit Excel kennen. ShowFilterButtons zet er een in elke kolomkop: die opent een popup met de unieke waarden van de kolom en hun aantallen rijen, een zoekvak en maximaal twee getypeerde voorwaarden, verbonden met En of Of. ShowFilterRow voegt onder de kop een rij toe die een kolom filtert terwijl de gebruiker typt, en Ctrl+F opent het zoekpaneel, dat de tekst in elke cel markeert en van treffer naar treffer springt.

  • Elke kolom heeft één filter, bewerkt via de popup, via de filterrij en via Column.Filter in code, zodat de drie altijd overeenkomen
  • De waardelijsten van twee gefilterde kolommen beperken elkaar, en een gevulde trechter laat zien welke kolommen filteren
  • FilterRowOperator per kolom: is gelijk aan, groter dan, bevat, begint met, is leeg en meer
  • FindText, FindNext en FindPrevious werken vanuit code, en FindOnlyMatches verbergt de rijen zonder treffer
  • Kolomfilters werken samen met FilterText en OnFilterRow, en OnFilterChange meldt elke wijziging

In de VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-grids, inclusief de gratis .NET Community-build.

Het helponderwerp lezen

Vorm de gegevens

Laat gebruikers de kolommen schikken en houd dat vast

Een rechtsklik op een kolomkop opent een menu dat sorteert, groepeert, breedtes aanpast, filtert en de kolomkiezer opent, een popup met één selectievakje per kolom. Gebruikers slepen een kop om de kolom te verplaatsen, en een dubbelklik op de rand van de kop past de breedte aan op de kop en de cellen. SaveLayoutToString en LoadLayoutFromString bewaren dit alles als een korte JSON-tekst, zodat het grid opent zoals de gebruiker het heeft achtergelaten.

  • HeaderMenu, ColumnMoving en BestFitOnDblClick staan standaard aan, en een toegewezen PopupMenu wint nog steeds
  • ShowColumnChooser opent de kiezer vanaf een knop of een eigen menu-item
  • Een verplaatste kolom blijft aan haar kant van de vastgezette kolommen en binnen haar band, en OnColumnMoved meldt de verplaatsing
  • BestFitColumn en BestFitColumns meten de kop en maximaal 1.000 gesamplede rijen, zodat een miljoen rijen ongeveer evenveel kosten als duizend
  • De indeling bewaart kolomvolgorde, breedtes, zichtbaarheid, sortering, groepering, kolomfilters, banden en de paneelopties; SaveLayoutToFile en LoadLayoutFromFile gebruiken een bestand

In de VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-grids, inclusief de gratis .NET Community-build.

Het helponderwerp lezen
Demo BandsAndCells: de banden Instrument, Live data, Price en Position, area-sparklines, voortgangsbalken, statuspictogrammen en drie geselecteerde rijen

Vorm de gegevens

Bandkoppen, rijke cellen en selectie van meerdere rijen

Een handelsscherm leest beter als Last, Change en Trend onder één kop Price staan. Bands voegt koppen toe boven groepen kolommen, op zoveel niveaus als je nodig hebt, en elke kolom noemt haar band in Band. CellKind tekent een cel als afbeelding, voortgangsbalk of sparkline, terwijl de cel zijn gewone waarde behoudt, zodat sorteren, groeperen en exporteren nog steeds het getal zien.

  • Bands.Add neemt een kop en een bovenliggende band, en de bandrijen stapelen zich boven de kolomkop
  • gcdProgress gebruikt ProgressMin en ProgressMax; gcdSparkline tekent een lijn-, area- of staafdiagram uit een lijst getallen
  • gcdImage tekent een afbeelding uit CellImages, dat het grid vult uit elke afbeeldingenlijst die aan Images is toegewezen
  • SelectionMode gsmMultiRow selecteert met Ctrl en Shift elke verzameling rijen, gsmCellRange één bereik van cellen, en Ctrl+A selecteert alles
  • De selectie wordt bijgehouden op rijsleutel, zodat ze sorteren, filteren en live updates overleeft, en Ctrl+C kopieert haar als door tabs gescheiden tekst

In de VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-grids, inclusief de gratis .NET Community-build.

Het helponderwerp lezen

Bewerken en exporteren

Wijzig de gegevens, synchroniseer ze met je database, geef ze door.

Bewerken en exporteren Alleen geregistreerd

Bewerk ter plekke met validatie

Back-officegebruikers verwachten een hoeveelheid of een status direct in het grid te kunnen corrigeren. Zet ReadOnly op False en F2, Enter, een getypt teken of een dubbelklik opent een editor over de cel, of een keuzelijst wanneer de kolom een PickList heeft. Getypte tekst wordt omgezet naar het gegevenstype van de kolom, OnValidate kan de waarde wijzigen of weigeren en het resultaat wordt met UpdateCell weggeschreven, dus sorteren en oplichten blijven gelden.

  • Editable per kolom, en OnBeforeEdit kan een bewerking weigeren
  • Enter bevestigt, Tab gaat naar de volgende bewerkbare cel, Escape annuleert; StartEdit, CommitEdit en CancelEdit doen hetzelfde vanuit code
  • OnEditError houdt de editor open bij ongeldige invoer, OnEdited meldt de oude en de nieuwe waarde

Niet in de .NET Community-build.

Het helponderwerp lezen
Koppel elke TDataSet in een paar regels

Bewerken en exporteren

Koppel elke TDataSet in een paar regels

Bestaande databasecode blijft werken: een TsgcGridSource_DataSet vult het grid vanuit een FireDAC-query, een TClientDataSet of een andere TDataSet. Stel zijn Grid en DataSet in, maak hem Active en de rijen verschijnen. Met een KeyField wordt het grid gesynchroniseerd in plaats van opnieuw geladen, dus gewijzigde rijen worden ter plekke bijgewerkt en lichten op. Met LiveUpdates aan bereikt elke geposte Append, Edit en Delete het grid zonder extra code.

  • AutoColumns maakt de kolommen aan op basis van de datasetvelden
  • Met een KeyField worden nieuwe sleutels toegevoegd en ontbrekende sleutels verwijderd
  • De dataset wordt doorlopen met DisableControls en het huidige record wordt hersteld
  • Ook JSON en CSV: GridLoadFromJSONFile, GridSaveToCSVFile en de rest van sgcGrid_IO
  • In .NET leest dezelfde klasse een DataTable
Het helponderwerp lezen

Bewerken en exporteren Alleen geregistreerd

Geef gebruikers een echt Excel-bestand

De boekhouding wil de cijfers in Excel, geen screenshot. SaveToXLSX schrijft het grid als Office Open XML-werkmap naar een bestand of een stream, zonder externe bibliotheek. Het blad behoudt wat de gebruiker ziet: de zichtbare kolommen in weergavevolgorde met hun breedtes en getalnotaties, de vastgezette kop, groepen en boomniveaus als inklapbaar overzicht, en groepstotalen als SUBTOTAL-formules.

  • SaveToXLSX neemt een bestandsnaam of een stream en een optionele bladnaam
  • Getallen blijven getallen, datums worden Excel-datums en een DisplayFormat wordt de celgetalnotatie
  • Ingeklapte groepen openen ingeklapt in Excel, zoals het grid ze toonde
  • Roep het aan op de UI-thread; detailbanden worden niet geëxporteerd
  • Elke grouprij en weergaverij wordt geschreven, ongeacht wat is ingeklapt

Niet in de .NET Community-build, die JSON- en CSV-export bevat.

Het helponderwerp lezen
Demo DataSetEditing: een TDBNavigator en twee TDBEdits op dezelfde records als het grid, met een lookupkolom voor de categorie

Bewerken en exporteren Alleen geregistreerd

De DataSet bewerken via het grid

Met WriteBack aan schrijft een TsgcGridSource_DataSet elke wijziging in het grid naar het record van haar rij. Hij zoekt het record op via KeyField en post de waarde. Mislukt het posten, bijvoorbeeld in een BeforePost-controle, dan wordt het record geannuleerd en houdt de cel zijn oude waarde. SyncCursor houdt het huidige record en de rij met focus bij elkaar, zodat een TDBNavigator en TDBEdit-besturingselementen op dezelfde dataset het grid volgen, en het grid hen.

  • AllowInsert: Ins voegt een record toe en post het, en OnNewRecord van de dataset vult de standaardwaarden
  • AllowDelete: Ctrl+Del verwijdert de geselecteerde rijen en hun records zodra OnBeforeDelete akkoord gaat
  • Lookupvelden worden bewerkt als een keuzelijst met de lookupresultaten, en de bijbehorende sleutel wordt geschreven
  • OnEditError toont de melding van de dataset; geplakte waarden en ongedaan maken gebruiken dezelfde schrijfweg

In de VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-grids; niet in de .NET Community-build. In .NET schrijft de bron terug naar een DataTable, voegt AddLookup de lookupkolommen toe en is SyncCursor alleen voor Delphi.

Het helponderwerp lezen
Demo Editing in het donkere thema met een geopende datumkiezer in de kolom Date

Bewerken en exporteren Alleen geregistreerd

Datumkiezers, plakken uit Excel, ongedaan maken en opnieuw uitvoeren

Elke kolom kiest het besturingselement dat haar bewerkt. EditorKind kiest een datum-, tijd- of datum-en-tijdkiezer, een spin-edit, een kleurkiezer of een token-edit uit sgcEditors, en de standaard kiest op basis van het gegevenstype van de kolom. Ctrl+V plakt een blok dat uit Excel is gekopieerd: elke waarde wordt omgezet en gevalideerd voordat er iets wordt geschreven, en het hele plakken is één stap ongedaan maken. Ctrl+Z en Ctrl+Y maken bewerkingen en plakacties ongedaan en voeren ze opnieuw uit.

  • OnCreateEditor zet elk eigen besturingselement in een cel, bijvoorbeeld een TTrackBar
  • PasteText en PasteFromClipboard werken vanuit code, en OnBeforePaste kan de tekst wijzigen of weigeren
  • Eén waarde die niet kan worden omgezet, of die OnValidate afwijst, stopt het plakken voordat er iets wordt geschreven
  • Ongedaan maken werkt op rijsleutel en veld, zodat het zijn rijen vindt na sorteren en filteren, en het behoudt een waarde die een live update inmiddels heeft gewijzigd
  • UndoLimit bewaart de laatste 100 stappen; Undo, Redo en CanUndo werken vanuit code

In de VCL-, FireMonkey-, WinForms-, WPF- en Avalonia-grids; niet in de .NET Community-build.

Het helponderwerp lezen

Schalen en verbinden

Miljoenen rijen, live feeds en gewone taal.

Blader door miljoenen rijen zonder ze te laden

Schalen en verbinden

Blader door miljoenen rijen zonder ze te laden

Logarchieven, sensorhistorie en queryresultaten die al elders staan hoeven niet naar het geheugen te worden gekopieerd. In virtuele modus bewaart het grid geen rijen: VirtualRowCount zegt hoeveel er zijn en OnGetValue geeft een waarde terug wanneer de rij in beeld scrolt. Alleen zichtbare rijen worden getekend, dus een grid van een miljoen rijen kost evenveel als een van vijftig. Pas het aantal aan naarmate de bron groeit.

  • Virtual en VirtualRowCount op de griddata, OnGetValue levert de cellen
  • Voetsamenvattingen lezen hun waarden ook via OnGetValue
  • Virtuele rijen hebben geen sleutels, dus ze behouden de bronvolgorde, zonder sorteren, filteren of oplichten
  • Voor feeds die eindeloos groeien is MaxRows met TailMode het alternatief op sleutel
Het helponderwerp lezen

Schalen en verbinden

Laat gebruikers het grid in gewone taal bevragen

Niet elke gebruiker wil filters bouwen. TsgcGridAI zet een vraag zoals price greater than 100 sort by volume descending highlight change less than 0 om in filters, sorteringen en rijmarkeringen op het grid, en de AI-querybalk geeft gebruikers een plek om die te typen. Zonder toegewezen provider beantwoordt een regelgebaseerde parser de vraag lokaal, zonder netwerk en zonder API-sleutel. Wijs een provider toe en dan antwoordt een willekeurige LLM: TsgcUIAIEventProvider geeft elk verzoek door aan je eigen code en TsgcUIAIChatProvider gebruikt de component TsgcAIChat van sgcWebSockets. Alleen de veldencatalogus wordt verzonden, de namen, koppen, typen en een paar voorbeeldwaarden van de kolommen, nooit de rijen.

  • De querybalk: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar en TsgcAvaloniaAIQueryBar, met recente vragen, suggesties, Annuleren en Ongedaan maken
  • Filters lopen via OnFilterRow, markeringen worden ApplyToRow-opmaakregels
  • Elk antwoord vervangt het vorige en Undo gaat één stap terug
  • LastExplanation vertelt wat is toegepast, en als de provider faalt antwoordt de regelgebaseerde parser
  • De sgcGridWS-bridge behoudt TsgcGridAIQuery met TsgcHTMLAIAssistant en levert TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT en TsgcGridFeedSource_SSE, die JSON-berichten op sleutel in het grid schrijven

Elke editie, Community inbegrepen, op VCL, FireMonkey, WinForms, WPF en Avalonia. De sgcWebSockets-provider en de sgcGridWS-bridge vereisen sgcWebSockets en een Geregistreerde editie.

Het helponderwerp lezen

Toegankelijkheid

UI Automation voor schermlezers, het toetsenbord en hoog contrast, zonder configuratie.

Toegankelijkheid

Een grid dat als echte tabel wordt aangeboden

sgcGrid biedt zijn inhoud aan Microsoft UI Automation aan als een tabel met kolomkoppen, rijen en cellen, de API die schermlezers zoals Narrator en NVDA gebruiken. Alleen de zichtbare rijen worden opgebouwd en het aantal rijen en kolommen is altijd het volledige aantal, dus een grid met een miljoen rijen kost niets extra.

  • De cel met focus, de selectie, sorteren, filteren, groeperen en boomrijen worden aangeboden via de Grid-, Table- en Selection-patterns
  • Pijltoetsen, Home, End, Page Up en Page Down verplaatsen de cel met focus, Shift breidt de selectie uit, Ctrl+Spatie schakelt de rij of cel om en F2 of Enter bewerkt
  • Alt+Omlaag opent het filterpopup, Alt+Shift+Links en Alt+Shift+Rechts verplaatsen de kolom, Ctrl+Shift+G groepeert op de kolom met focus en Ctrl+Shift+U heft die groepering op
  • Een zichtbare focusring, en onder een Windows-thema met hoog contrast tekent het grid met de systeemkleuren

Toegankelijkheid staat standaard aan in elke editie, ook in de gratis Community-editie, op VCL in elke Delphi- en C++Builder-versie van Delphi 7 tot en met Delphi 13, op FireMonkey op Windows, en op WinForms, WPF en Avalonia. In Delphi en C++Builder stellen AccessibleName en AccessibleDescription de naam en de beschrijving in die aan UI Automation worden aangeboden, en in .NET doen de standaard toegankelijke naam en helptekst van elk framework hetzelfde. Zie de toegankelijkheidsrapporten. Op Avalonia, dat geen tabelpatterns heeft, draagt elke cel zijn kolom en positie in zijn naam en helptekst. Kolombreedtes worden alleen met de muis gewijzigd.

Het helponderwerp lezen

Zie sgcGrid in actie

sgcGrid in de sgcUI suite-demo's: complete applicaties die offline draaien met ingebouwde gesimuleerde gegevens.

Een 1080p-frame in enkele milliseconden

Laatst gemeten gemiddelden van de sgcGrid QA-prestatiepoort: een frame van 1920 x 1080 met 12 kolommen, 100.000 rijen en 45 zichtbare rijen, 60 keer gerenderd op het rastercanvas. De poort faalt boven 16 ms per frame op Win64 en 25 ms op Win32.

MetingResultaatOmstandigheden
Gewoon frame3,0 msWin32
Gewoon frame4,6 msWin64
Gewoon frame3,7 msLinux64
Flash en 3 opmaakregels3,2 msWin32
Flash en 3 opmaakregels6,8 msWin64
LiveTicker-demo, workerthread schrijftOngeveer 1.000 updates per secondeGesorteerd, oplichtend grid met 60 fps

Bron: het helponderwerp dat deze cijfers documenteert.

Wie bouwt er met sgcGrid

Handelsdesks en marktgegevens

Een koersbord moet leesbaar blijven terwijl honderden koersen per seconde veranderen. Feedthreads schrijven met UpdateRow en wachten nooit op de UI, oplichten bij wijziging toont de richting van elke beweging en de tailmodus houdt het handelslogboek op de nieuwste fill. De sgcGridWS-bridge kan de koersen lezen via WebSocket, MQTT of SSE.

  • Live updates
  • Oplichten bij wijziging
  • Tailmodus
  • Live feeds
Start de LiveTicker-demo

Back office en bedrijfsapplicaties

Orderinvoer, voorraadlijsten en factureerschermen leven op een database. Koppel de bestaande TDataSet, laat gebruikers groeperen op klant of maand met totalen in elke grouprij, corrigeer waarden ter plekke met validatie en exporteer een werkmap die de boekhouding opent met intacte groepen en SUBTOTAL-formules.

  • Datasetbinding
  • Groeperen en samenvattingen
  • Bewerken ter plekke
  • Excel-export
Start de DataSetGrid-demo

Monitoring, logs en alerts

Operationele schermen tonen eventstreams die nooit eindigen. MaxRows begrenst het log, opmaakregels kleuren fouten rood en de virtuele modus bladert op aanvraag door een archief van miljoenen regels. Op een Linux64-server schrijft de renderer hetzelfde grid naar een PNG- of SVG-bestand voor een alert-e-mail.

  • Opmaakregels
  • MaxRows en tailmodus
  • Virtuele modus
  • Headless PNG en SVG
Start de LiveFeed-demo

Een live grid in een paar regels

Dezelfde API in Delphi, C++ Builder en C#: voeg kolommen toe, voeg rijen toe op sleutel en werk ze later bij vanuit elke thread.

Een VCL-grid in code: getypeerde kolommen, rijen toegevoegd op sleutel en een update op veldnaam vanuit elke 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;

Het helponderwerp lezen →

Hetzelfde grid in C++ Builder met de gegenereerde 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))));
}

Het helponderwerp lezen →

Een WinForms-grid met oplichtende cellen, een regel voor negatieve wijzigingen en het donkere thema.

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

Het helponderwerp lezen →

Probeer de sgcGrid-demo's uit

15 demo's voor Delphi, waarvan drie FireMonkey, 11 voor C++ Builder en 18 voor .NET op WinForms, WPF en Avalonia.

LiveTicker

LiveTicker

Ongeveer 1.000 koersupdates per seconde vanuit een workerthread met UpdateRow, een gesorteerde weergave, oplichtende cellen en een opmaakregel voor negatieve wijzigingen. VCL, FireMonkey, C++ Builder, WinForms, WPF en Avalonia.

DataSetGrid

DataSetGrid

Een TsgcGridSource_DataSet gekoppeld aan een TClientDataSet van 200 records met KeyField, AutoColumns en LiveUpdates, plus JSON- en CSV-export en -import.

GroupAndSummary

GroupAndSummary

100.000 orders gegroepeerd op Region en Category met het groepspaneel, samenvattingen Count, Sum en Average, een voet en twee vastgezette kolommen. In .NET heet deze Grouping.

FilterAndFind

FilterAndFind

100.000 verkooprijen met de trechterpopups, de filterrij en het zoekpaneel, plus de kolomkiezer, best passende breedte en een indeling die naar een bestand wordt bewaard en weer wordt geladen. VCL, FireMonkey, C++ Builder, WinForms, WPF en Avalonia.

BandsAndCells

BandsAndCells

2.000 instrumenten onder de banden Instrument, Live data, Price en Position, met sparkline-, voortgangs- en afbeeldingscellen, selectie van meerdere rijen en een knop Copy. VCL, C++ Builder en WinForms.

Alleen geregistreerd Editing

Een keuzelijstkolom, een booleaanse kolom die met de spatiebalk wordt omgeschakeld, OnValidate dat negatieve hoeveelheden weigert, OnEditError en een OnEdited-log, plus datum-, tijd-, spin-, kleur- en tokeneditors uit sgcEditors, een TTrackBar via OnCreateEditor, plakken, ongedaan maken en opnieuw uitvoeren.

DataSetEditing

Alleen geregistreerd DataSetEditing

Products en Categories in twee TClientDataSets, met een TDBNavigator en twee TDBEdits op dezelfde records: WriteBack, SyncCursor, een lookupkolom, invoegen, verwijderen en ongedaan maken. VCL, C++ Builder en WinForms (een DataTable met AddLookup).

TreeAndDetail

Alleen geregistreerd TreeAndDetail

Een organigramboom, en klanten met een orderdetailband gevuld via een TsgcGridDataStore.

Alleen geregistreerd ExcelExport

Een gegroepeerd grid en een boomgrid opgeslagen met SaveToXLSX en geopend in de spreadsheettoepassing, met behoud van overzicht en samenvattingen.

GridAndChart

Een gridtegel en een grafiektegel op een dashboard: een TsgcChartDataSource_Table zet de gridrijen uit. Vereist sgcCharts en sgcDashboard.

Alleen geregistreerd AskYourGrid

TsgcGridAI en de AI-querybalk filteren, sorteren en markeren 200 aandelen op basis van vragen in gewone taal, zonder netwerk en zonder API-sleutel, naast de bridge TsgcGridAIQuery. Vereist sgcWebSockets.

Alleen geregistreerd LiveFeed

Een WebSocket-server in hetzelfde proces zendt JSON-batches van 50 symbolen uit en een TsgcGridFeedSource_WebSocket schrijft ze op sleutel in het grid. Delphi en .NET.

Gecompileerde demo's

Direct uitvoerbare programma's van elk sgcUI-product, zonder installatie.

sgcUI_bin.zip downloaden →

Waar sgcGrid in zit

sgcGrid wordt los verkocht, maakt deel uit van elke sgcUI-editie vanaf Standard en zit in de All-Access-bundel.

sgcGrid los pakket

€199 / ontwikkelaar, volledige broncode, 1 jaar updates.

sgcGrid kopen → Prijzen bekijken →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar en sgcEditors, vanaf €380.

Standard bekijken →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard en sgcGauges, vanaf €529.

Professional bekijken →

sgcUI Enterprise

Alle 14 sgcUI-producten, vanaf €699.

Enterprise bekijken →

De gratis Community-editie is esegece.sgcGrid.Community op NuGet. Een project verwijst naar de Community- of de Registered-pakketten, nooit naar beide.

FunctieCommunity (gratis)Geregistreerd
Live updates vanuit elke thread, oplichten bij wijziging, tailmodus✓✓
Opmaakregels en thema's✓✓
Sorteren, filteren en selecteren✓✓
Groeperen, groepspaneel en samenvattingen✓✓
Vastgezette kolommen en kolombreedte aanpassen✓✓
Virtuele modus✓✓
DataTable-binding, JSON en CSV✓✓
Headless PNG en SVG✓✓
Kolomfilters, filterrij en zoekpaneel✓✓
Kolomkiezer, kolommen herschikken, best passende breedte en indelingen✓✓
Banden, afbeeldings-, voortgangs- en sparklinecellen, selectie van meerdere rijen✓✓
Vraag het je grid: TsgcGridAI, de AI-querybalk en een willekeurige LLM-provider✓✓
Bewerken ter plekke−✓
Tweerichtings-DataTable-bewerking, plakken, ongedaan maken en opnieuw, celeditors uit sgcEditors−✓
Boomrijen en master-detail−✓
Excel-export−✓
Live feeds, TsgcGridAIQuery en de AI-provider van sgcWebSockets (sgcGridWS- en sgcUICoreWS-bridges)−✓

Ondersteunde frameworks en platformen

Componenten in sgcGrid

ComponentDoel
TsgcVCLGridDelphi en C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey vanaf XE6, op Windows, macOS, iOS en Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererFrameworkneutrale rijopslag, kolommen, opmaakregels en renderer, ook op Linux64
TsgcGridAIFrameworkneutrale engine voor vragen in natuurlijke taal, in elke editie en ook op Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderAI-querybalk en AI-provider van sgcUICore, in elke editie
TsgcUIAIChatProvidersgcUICoreWS-bridge: de TsgcAIChat van sgcWebSockets als AI-provider (Geregistreerde editie)
TsgcGridSource_DataSet, TsgcGridDataStoreTDataSet-binding en de rijopslag van master-detailbanden
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQuerysgcGridWS-bridge met sgcWebSockets (geregistreerde editie)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF en Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, vragen in natuurlijke taal en de AI-querybalk voor WinForms, WPF en Avalonia
DoelComponentPlatformen
Delphi 7 tot 13, VCLTsgcVCLGridWin32, en Win64 vanaf XE2
Delphi XE6 tot 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS en Android
C++ Builder 2007 tot 13TsgcVCLGrid, TsgcFMXGridGegenereerde .hpp-headers en statische bibliotheken
Delphi 10.2 tot 13, frameworkneutraalModel, opmaak, renderer, JSON en CSVLinux64, bijvoorbeeld om gridafbeeldingen op een server te renderen
.NET Framework 4.7.2, .NET 8, 9 en 10TsgcWinFormsGrid, WPF- en Avalonia-gridsWinForms, WPF, Avalonia, headless PNG en SVG

Veelgestelde vragen

Ja. AppendRow, UpdateRow, UpdateCell en DeleteRow van de griddata zijn threadveilig, dus een workerthread schrijft rijen rechtstreeks op sleutel. Het grid hertekent op de hoofdthread hooguit MaxFPS keer per seconde. Zie Live updates.

Alleen de zichtbare rijen worden getekend, dus de kosten van een frame hangen af van het venster, niet van het aantal rijen. De QA-poort meet een 1080p-frame van een grid met 100.000 rijen op 3,0 ms op Win32 en 4,6 ms op Win64. Voor gegevens die elders staan bewaart de virtuele modus geen rijen en vraagt om waarden zodra ze in beeld scrollen. Zie Prestaties.

Ja. TsgcGridSource_DataSet vult een grid vanuit elke TDataSet, maakt de kolommen met AutoColumns en volgt met LiveUpdates elke Append, Edit en Delete van de dataset. Met een KeyField worden gewijzigde rijen ter plekke bijgewerkt in plaats van opnieuw geladen. In .NET leest dezelfde bron een DataTable. Zie DataSet-binding.

Ja. TsgcVCLGrid is een gewoon VCL-besturingselement, dus het kan naast een bestaande TStringGrid of TDBGrid op een formulier staan. Een TDBGrid-scherm behoudt zijn dataset en krijgt een TsgcGridSource_DataSet; een TStringGrid-scherm schrijft zijn rijen met AppendRow en UpdateRow op sleutel. Er is geen automatische conversie van bestaande formulieren.

Bewerken ter plekke, tweerichtings-DataTable-bewerking, plakken, ongedaan maken en opnieuw, de celeditors uit sgcEditors, boomrijen, master-detailrijen, Excel-export en de sgcGridWS-bridge. Sorteren, filteren, de filterrij en het zoekpaneel, groeperen, samenvattingen, vastgezette kolommen, de kolomkiezer, indelingen, banden, afbeeldings-, voortgangs- en sparklinecellen, selectie van meerdere rijen, opmaakregels, virtuele modus, JSON en CSV, de headless uitvoer en Vraag het je grid met TsgcGridAI zitten in elke editie. Zie Edities.

Ja. Afmetingen zoals GroupIndent en GroupPanelHeight zijn apparaatonafhankelijke pixels en het VCL-grid schaalt ze naar de DPI van zijn monitor, per monitor vanaf Delphi 10.3. Theme schakelt tussen utLight en utDark, AccentColor stelt het accent van selectie en flash in.

sgcGrid help

3,000+Ontwikkelaars
20+Jaar
761+Componenten
30+API-integraties
5Platformen
Niet-goed-geld-terug-garantie van 30 dagenNiet tevreden? Vraag binnen 30 dagen na aankoop een volledige terugbetaling aan. Bekijk het terugbetalingsbeleid

Probeer sgcGrid vandaag nog

De sgcUI-proefversie bevat sgcGrid met alle functies ontgrendeld, de andere 13 sgcUI-producten en alle demoprojecten.