Delphi, C++ Builder & .NET Teil von sgcUI

sgcGrid, das Live-Datengrid für Delphi, C++ Builder & .NET

Ein Grid für Daten, die nie stillstehen. Schreibe Zeilen per Schlüssel aus jedem Thread, sieh geänderte Zellen grün oder rot aufblinken und gruppiere, filtere, bearbeite und exportiere dann dieselben Zeilen. Ein 1080p-Frame eines Grids mit 100.000 Zeilen dauert unter Win32 3,0 ms.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms pro 1080p-Frame (Win32)Kostenloser .NET-Community-BuildEnthalten in sgcUI Standard
sgcGrid mit 100.000 Aufträgen, gruppiert nach Region und dann Kategorie, mit Chips im Gruppenpanel und Summen in der Fußzeile

Alles, was ein Live-Grid braucht

Achtzehn Features in fünf Gruppen, jedes mit seinem Hilfethema verknüpft.

Live-Daten

Feeds, die nie aufhören: Kurse, Telemetrie, Warteschlangen und Logs.

Live-Daten

Aktualisiere Tausende Zeilen pro Sekunde aus jedem Thread

Ein Börsenfeed, ein Sensorbus oder eine Job-Warteschlange kann direkt ins Grid schreiben. Jede Zeile hat einen Schlüssel, und ein Worker-Thread aktualisiert die Zeile eines Schlüssels per Feldname ohne Synchronize-Aufruf und ohne eigenen Sperrcode. Das Grid markiert sich nur im Schreiber-Thread als geändert und zeichnet im Hauptthread höchstens MaxFPS Mal pro Sekunde neu.

  • UpdateRow setzt die benannten Felder eines Schlüssels und fügt die Zeile ein, wenn der Schlüssel neu ist; UpdateCell ändert ein Feld
  • AppendRow und DeleteRow fügen Zeilen per Schlüssel hinzu und entfernen sie, aus jedem Thread
  • BeginUpdate und EndUpdate fassen einen Stapel zu einer einzigen Benachrichtigung zusammen
  • Die ausgewählte Zeile wird nach jeder Neusortierung über ihren Schlüssel wiedergefunden, sodass sie nie wegspringt
Hilfethema lesen
Jede Änderung auf einen Blick sehen

Live-Daten

Jede Änderung auf einen Blick sehen

Händler und Bediener müssen sehen, was sich bewegt hat, ohne jede Zahl zu lesen. Mit FlashChanges aktiviert, was die Vorgabe ist, wird eine geänderte Zelle grün eingefärbt, wenn ihr Wert gestiegen ist, und rot, wenn er gesunken ist, und blendet dann über FlashDuration Millisekunden aus, standardmäßig 800. Bei Logs und wachsenden Feeds hält der Tail-Modus die neueste Zeile im Blick und folgt nicht mehr, sobald der Benutzer zum Lesen nach oben scrollt.

  • FlashUpColor, FlashDownColor und FlashChangedColor; eine Farbe 0 verwendet die Theme-Vorgabe
  • FlashMode färbt den Hintergrund (fmBackground) oder den Text (fmText)
  • TailMode folgt der neuesten Zeile, MaxRows verwirft die ältesten Zeilen eines endlosen Logs
  • Die Auswahl wird über das Aufblinken gezeichnet und das Aufblinken über die Formatregeln
Hilfethema lesen
Färbe die Zeilen ein, die Aufmerksamkeit brauchen

Live-Daten

Färbe die Zeilen ein, die Aufmerksamkeit brauchen

Eine überfällige Rechnung, ein negativer Saldo oder ein fehlgeschlagener Job sollte auffallen, bevor jemand fragt. Formatregeln vergleichen eine Spalte mit einem Wert anhand des Datentyps dieser Spalte: Zahlen numerisch, Datumswerte als Datum, Text ohne Beachtung der Groß- und Kleinschreibung. Eine passende Regel setzt Hintergrundfarbe, Textfarbe oder Fettdruck für die Zelle oder die ganze Zeile und arbeitet weiter, während Live-Updates die Werte darunter ändern.

  • TsgcGridFormatRules wertet seine Regeln in der Reihenfolge der Auflistung aus, wobei ein späterer Treffer einen früheren überschreibt
  • Operatoren wie gfoLess, gfoBetween, gfoContains und gfoIsEmpty
  • ApplyToRow formatiert jede Zelle der Zeile, StopOnMatch beendet die Auswertung für eine Zelle
  • Transparente Farben tönen die Zelle über ihrem Hintergrund, und OnGetCellStyle hat das letzte Wort
Hilfethema lesen

Daten formen

Sortiere, filtere, gruppiere und verschachtele große Zeilenmengen.

100.000 Zeilen mit einem Aufruf gruppieren und summieren

Daten formen

100.000 Zeilen mit einem Aufruf gruppieren und summieren

Umsatz nach Region, Aufträge nach Monat, Tickets nach Status: Benutzer wollen Summen, keine Rohzeilen. GroupBy gruppiert das Grid nach einer oder mehreren Spalten, und jede Gruppenzeile zeigt ihr Mitglied, ihre Zeilenanzahl und die Summen ihrer Zeilen. Benutzer gruppieren selbst um, indem sie eine Kopfzeile auf das Gruppenpanel ziehen. Die Gruppierung ist nur Ansichtszustand, daher sieht ein an das Grid gebundenes Diagramm weiterhin die flachen, sortierten Zeilen.

  • GroupBy und ClearGrouping aus dem Code oder GroupIndex pro Spalte
  • ShowGroupPanel fügt Drag-and-drop-Chips hinzu; ein Klick auf einen Chip kehrt die Gruppenreihenfolge um
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin oder gsuMax, formatiert mit SummaryFormat
  • GroupSummaries in jeder Gruppenzeile und ShowFooter für die Gesamtsummen
  • A DisplayFormat von yyyy-mm gruppiert Datumswerte nach Monat
Hilfethema lesen
Sortieren, filtern und suchen in großen Datenmengen

Daten formen

Sortieren, filtern und suchen in großen Datenmengen

Einen Kunden unter Tausenden zu finden sollte nur ein paar Tastenanschläge dauern. FilterText behält die Zeilen, deren formatierter Text die eingegebenen Wörter in einer beliebigen sichtbaren Spalte enthält, und ein OnFilterRow -Handler fügt eigene Regeln hinzu. Ein Klick auf eine Kopfzeile sortiert, Strg und Klick fügt eine Spalte zu einer Mehrspaltensortierung hinzu, und die Sortierung ist stabil. Eine tickende Spalte, die weder sortiert noch gefiltert ist, kostet gar keine Neusortierung.

  • SortOrder und SortIndex pro Spalte, OnSortChange nach jeder Änderung
  • FilterText beachtet die Groß- und Kleinschreibung nicht und liest den Text so, wie der Benutzer ihn sieht
  • OnFilterRow für eigene Logik, InvalidateView wenn sich diese Logik ändert
  • SelectionMode wählt Zeilen oder Zellen aus, und Strg+C kopiert sie als tabulatorgetrennten Text
  • Null-, leere und nicht konvertierbare Werte werden immer zuerst sortiert
Hilfethema lesen
Hierarchien mit Baumzeilen und Detailbändern zeigen

Daten formen Nur Registered

Hierarchien mit Baumzeilen und Detailbändern zeigen

Ein Organigramm oder eine Stückliste liest sich am besten als Baum, und die Aufträge eines Kunden am besten direkt unter dem Kunden. Baumzeilen ordnen Zeilen tiefenorientiert aus einer Schlüsselspalte und einer Elternspalte an. Detailbänder öffnen unter jeder Master-Zeile ein kleines Grid mit zugehörigen Zeilen, mit eigener Kopfzeile, eigenem Scrollen und eigener Sortierung, befüllt aus einem TsgcGridDataStore, einem anderen Grid oder einem Ereignis.

  • Tree.KeyField und Tree.ParentField schalten den Baum ein; ExpandNode und CollapseNode funktionieren aus dem Code
  • Der Aufklappstatus wird pro Schlüssel gehalten und übersteht daher Sortieren, Filtern und Live-Updates
  • Detail.MasterKeyField und Detail.DetailKeyField verknüpfen ein Band mit seiner Quelle, OnGetDetailData befüllt es bei Bedarf
  • Bänder funktionieren im flachen, gruppierten und im Baummodus, und geänderte Detailzellen blinken wie im Master-Grid auf

Nicht im .NET-Community-Build, der die Gruppierung behält.

Hilfethema lesen
Schlüsselspalten im Blick behalten, während der Rest scrollt

Daten formen

Schlüsselspalten im Blick behalten, während der Rest scrollt

Breite Grids verlieren ihren Kontext, wenn das Symbol oder der Kundenname wegscrollt. FrozenColumns hält die ersten sichtbaren Spalten an Ort und Stelle, während die anderen horizontal scrollen, und die Kopfzeile, die Fußzeile und die Gruppensummen folgen derselben Teilung. Benutzer ändern die Spaltenbreite, indem sie den Rand der Kopfzeile ziehen, und der Headless-Renderer verwendet dieselbe Einstellung, sodass exportierte Bilder dem Bildschirm entsprechen. Auch die Gruppenpfeile links scrollen nie mit.

  • FrozenColumns zählt sichtbare Spalten, und eine ein Pixel breite Linie markiert den fixierten Rand
  • Tastaturbewegungen holen eine gescrollte Spalte rechts vom fixierten Rand in den sichtbaren Bereich
  • FrozenWidth des Renderers liefert die Breite, die nicht scrollt
  • MinWidth begrenzt eine Größenänderung, OnColumnResized meldet die neue Breite
  • Teil jeder Edition, auch des kostenlosen .NET-Community-Builds
  • Rechts nach links für Arabisch und Hebräisch: Die erste Spalte steht rechts, fixierte Spalten bleiben am rechten Rand, und der XLSX-Export eines Grids von rechts nach links schreibt ein Blatt von rechts nach links
Hilfethema lesen
Demo FilterAndFind: Trichter-Schaltflächen, eine Filterzeile mit (2 Werte) und > 500 und das Suchfeld, das Nakatomi hervorhebt

Daten formen

Filtern wie in einer Tabellenkalkulation und jeden Wert finden

Benutzer erwarten den Trichter, den sie aus Excel kennen. ShowFilterButtons setzt einen in jede Spaltenüberschrift: Er öffnet ein Popup mit den eindeutigen Werten der Spalte und ihren Zeilenanzahlen, einem Suchfeld und bis zu zwei typisierten Bedingungen, verknüpft mit Und oder Oder. ShowFilterRow fügt unter der Kopfzeile eine Zeile hinzu, die eine Spalte schon während der Eingabe filtert, und Strg+F öffnet das Suchfeld, das den Text in jeder Zelle hervorhebt und von Treffer zu Treffer springt.

  • Jede Spalte hat einen Filter, bearbeitet über das Popup, die Filterzeile und Column.Filter im Code, sodass alle drei immer übereinstimmen
  • Die Wertelisten zweier gefilterter Spalten schränken sich gegenseitig ein, und ein gefüllter Trichter zeigt, welche Spalten filtern
  • FilterRowOperator pro Spalte: gleich, größer als, enthält, beginnt mit, ist leer und mehr
  • FindText, FindNext und FindPrevious funktionieren aus dem Code, und FindOnlyMatches blendet die Zeilen ohne Treffer aus
  • Spaltenfilter gelten zusammen mit FilterText und OnFilterRow, und OnFilterChange meldet jede Änderung

In den VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Grids, einschließlich des kostenlosen .NET-Community-Builds.

Hilfethema lesen

Daten formen

Benutzer ordnen die Spalten an, und es bleibt so

Ein Rechtsklick auf eine Spaltenüberschrift öffnet ein Menü, das sortiert, gruppiert, Breiten anpasst, filtert und die Spaltenauswahl öffnet, ein Popup mit einem Kontrollkästchen pro Spalte. Benutzer ziehen eine Überschrift, um ihre Spalte zu verschieben, und ein Doppelklick auf den Rand der Überschrift passt die Breite an Überschrift und Zellen an. SaveLayoutToString und LoadLayoutFromString halten all das als kurzen JSON-Text fest, sodass das Grid so öffnet, wie der Benutzer es verlassen hat.

  • HeaderMenu, ColumnMoving und BestFitOnDblClick sind standardmäßig aktiv, und ein zugewiesenes PopupMenu hat weiterhin Vorrang
  • ShowColumnChooser öffnet die Auswahl über eine Schaltfläche oder einen eigenen Menüeintrag
  • Eine verschobene Spalte bleibt auf ihrer Seite der fixierten Spalten und innerhalb ihres Bands, und OnColumnMoved meldet die Verschiebung
  • BestFitColumn und BestFitColumns messen die Überschrift und bis zu 1.000 Stichprobenzeilen, sodass eine Million Zeilen etwa so viel kosten wie tausend
  • Das Layout hält Spaltenreihenfolge, Breiten, Sichtbarkeit, Sortierung, Gruppierung, Spaltenfilter, Bänder und die Panel-Optionen fest; SaveLayoutToFile und LoadLayoutFromFile verwenden eine Datei

In den VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Grids, einschließlich des kostenlosen .NET-Community-Builds.

Hilfethema lesen
Demo BandsAndCells: Bänder Instrument, Live data, Price und Position, Flächen-Sparklines, Fortschrittsbalken, Statussymbole und drei ausgewählte Zeilen

Daten formen

Bandüberschriften, reiche Zellen und Mehrzeilenauswahl

Ein Handelsbildschirm liest sich besser, wenn Last, Change und Trend unter einer Überschrift Price stehen. Bands fügt Überschriften über Spaltengruppen hinzu, auf beliebig vielen Ebenen, und jede Spalte nennt ihr Band in Band. CellKind zeichnet eine Zelle als Bild, Fortschrittsbalken oder Sparkline, während die Zelle ihren einfachen Wert behält, sodass Sortierung, Gruppierung und Export weiterhin die Zahl sehen.

  • Bands.Add nimmt eine Überschrift und ein übergeordnetes Band, und die Bandzeilen stapeln sich über der Spaltenüberschrift
  • gcdProgress verwendet ProgressMin und ProgressMax; gcdSparkline zeichnet aus einer Zahlenliste ein Linien-, Flächen- oder Balkendiagramm
  • gcdImage zeichnet ein Bild aus CellImages, das das Grid aus jeder Images zugewiesenen Bildliste füllt
  • SelectionMode gsmMultiRow wählt mit Strg und Umschalt beliebige Zeilen, gsmCellRange einen Zellbereich, und Strg+A wählt alles
  • Die Auswahl wird über den Zeilenschlüssel gehalten, überlebt also Sortierung, Filterung und Live-Updates, und Strg+C kopiert sie als tabulatorgetrennten Text

In den VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Grids, einschließlich des kostenlosen .NET-Community-Builds.

Hilfethema lesen

Bearbeiten und Exportieren

Ändere die Daten, synchronisiere sie mit deiner Datenbank, gib sie weiter.

Bearbeiten und Exportieren Nur Registered

Direkt bearbeiten mit Validierung

Back-Office-Benutzer erwarten, eine Menge oder einen Status direkt im Grid korrigieren zu können. Setze ReadOnly auf False, und F2, Enter, ein getipptes Zeichen oder ein Doppelklick öffnet einen Editor über der Zelle oder eine Combobox, wenn die Spalte eine PickListhat. Getippter Text wird in den Datentyp der Spalte umgewandelt, OnValidate kann den Wert ändern oder ablehnen, und das Ergebnis wird mit UpdateCellgeschrieben, sodass Sortieren und Aufblinken weiterhin gelten.

  • Editable pro Spalte, und OnBeforeEdit kann eine Bearbeitung ablehnen
  • Enter übernimmt, Tab springt zur nächsten bearbeitbaren Zelle, Escape bricht ab; StartEdit, CommitEdit und CancelEdit erledigen dasselbe aus dem Code
  • OnEditError hält den Editor bei falscher Eingabe offen, OnEdited meldet den alten und den neuen Wert

Nicht im .NET-Community-Build.

Hilfethema lesen
Jedes TDataSet in wenigen Zeilen binden

Bearbeiten und Exportieren

Jedes TDataSet in wenigen Zeilen binden

Vorhandener Datenbankcode funktioniert weiter: Eine TsgcGridSource_DataSet füllt das Grid aus einer FireDAC-Abfrage, einem TClientDataSet oder jedem anderen TDataSet. Setze dessen Grid und DataSet, setze es auf Active, und die Zeilen erscheinen. Mit einem KeyField wird das Grid synchronisiert statt neu geladen, sodass geänderte Zeilen an Ort und Stelle aktualisiert werden und aufblinken. Mit LiveUpdates an erreicht jedes gebuchte Append, Edit und Delete das Grid ohne zusätzlichen Code.

  • AutoColumns erstellt die Spalten aus den Dataset-Feldern
  • Mit einem KeyFieldwerden neue Schlüssel angehängt und fehlende Schlüssel gelöscht
  • Das Dataset wird mit DisableControls durchlaufen und sein aktueller Datensatz wird wiederhergestellt
  • Auch JSON und CSV: GridLoadFromJSONFile, GridSaveToCSVFile und der Rest von sgcGrid_IO
  • In .NET liest dieselbe Klasse eine DataTable
Hilfethema lesen

Bearbeiten und Exportieren Nur Registered

Gib Benutzern eine echte Excel-Datei

Die Buchhaltung will die Zahlen in Excel, keinen Screenshot. SaveToXLSX schreibt das Grid als Office-Open-XML-Arbeitsmappe in eine Datei oder einen Stream, ohne externe Bibliothek. Das Blatt behält, was der Benutzer sieht: die sichtbaren Spalten in Anzeigereihenfolge mit ihren Breiten und Zahlenformaten, die fixierte Kopfzeile, Gruppen und Baumebenen als einklappbare Gliederung und Gruppensummen als SUBTOTAL-Formeln.

  • SaveToXLSX nimmt einen Dateinamen oder einen Stream und einen optionalen Blattnamen
  • Zahlen bleiben Zahlen, Datumswerte werden zu Excel-Datumswerten, und ein DisplayFormat wird zum Zahlenformat der Zelle
  • Eingeklappte Gruppen öffnen sich in Excel eingeklappt, so wie das Grid sie gezeigt hat
  • Rufe es im UI-Thread auf; Detailbänder werden nicht exportiert
  • Jede Gruppenzeile und jede Ansichtszeile wird geschrieben, egal was eingeklappt ist

Nicht im .NET-Community-Build, der den Export nach JSON und CSV behält.

Hilfethema lesen
Demo DataSetEditing: ein TDBNavigator und zwei TDBEdits auf denselben Datensätzen wie das Grid, mit einer Lookup-Spalte für die Kategorie

Bearbeiten und Exportieren Nur Registered

Das DataSet über das Grid bearbeiten

Mit eingeschaltetem WriteBack schreibt ein TsgcGridSource_DataSet jede Grid-Änderung in den Datensatz ihrer Zeile. Er sucht den Datensatz über KeyField und bucht den Wert. Schlägt das Buchen fehl, zum Beispiel in einer BeforePost-Prüfung, wird der Datensatz abgebrochen und die Zelle behält ihren alten Wert. SyncCursor hält den aktuellen Datensatz und die fokussierte Zeile zusammen, sodass ein TDBNavigator und TDBEdit-Steuerelemente auf demselben Dataset dem Grid folgen und das Grid ihnen.

  • AllowInsert: Einfg hängt einen Datensatz an und bucht ihn, und OnNewRecord des Datasets füllt die Vorgaben
  • AllowDelete: Strg+Entf löscht die ausgewählten Zeilen und ihre Datensätze, sobald OnBeforeDelete zustimmt
  • Lookup-Felder werden als Auswahlliste der Lookup-Ergebnisse bearbeitet, und der passende Schlüssel wird geschrieben
  • OnEditError zeigt die Meldung des Datasets; eingefügte Werte und Rückgängig verwenden denselben Schreibweg

In den VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Grids; nicht im .NET-Community-Build. In .NET schreibt die Quelle in eine DataTable zurück, AddLookup fügt die Lookup-Spalten hinzu, und SyncCursor gibt es nur in Delphi.

Hilfethema lesen
Demo Editing im dunklen Theme mit geöffneter Datumsauswahl in der Spalte Date

Bearbeiten und Exportieren Nur Registered

Datumsauswahl, Einfügen aus Excel, Rückgängig und Wiederholen

Jede Spalte wählt das Steuerelement, das sie bearbeitet. EditorKind wählt eine Datums-, Zeit- oder Datum-und-Zeit-Auswahl, ein Spin-Edit, eine Farbauswahl oder ein Token-Edit aus sgcEditors, und der Standard richtet sich nach dem Datentyp der Spalte. Strg+V fügt einen aus Excel kopierten Block ein: Jeder Wert wird umgewandelt und geprüft, bevor etwas geschrieben wird, und das ganze Einfügen ist ein Rückgängig-Schritt. Strg+Z und Strg+Y machen Änderungen und Einfügevorgänge rückgängig und stellen sie wieder her.

  • OnCreateEditor setzt ein beliebiges eigenes Steuerelement in eine Zelle, zum Beispiel eine TTrackBar
  • PasteText und PasteFromClipboard funktionieren aus dem Code, und OnBeforePaste kann den Text ändern oder ablehnen
  • Ein Wert, der sich nicht umwandeln lässt oder den OnValidate ablehnt, stoppt das Einfügen, bevor etwas geschrieben wird
  • Rückgängig arbeitet über Zeilenschlüssel und Feld, findet seine Zeilen also nach Sortierung und Filterung, und behält einen Wert, den ein Live-Update inzwischen geändert hat
  • UndoLimit behält die letzten 100 Schritte; Undo, Redo und CanUndo funktionieren aus dem Code

In den VCL-, FireMonkey-, WinForms-, WPF- und Avalonia-Grids; nicht im .NET-Community-Build.

Hilfethema lesen

Skalieren und verbinden

Millionen Zeilen, Live-Feeds und natürliche Sprache.

Millionen Zeilen durchsuchen, ohne sie zu laden

Skalieren und verbinden

Millionen Zeilen durchsuchen, ohne sie zu laden

Logarchive, Sensorhistorien und Abfrageergebnisse, die bereits anderswo liegen, müssen nicht in den Speicher kopiert werden. Im virtuellen Modus speichert das Grid keine Zeilen: VirtualRowCount sagt, wie viele es gibt, und OnGetValue liefert einen Wert, wenn seine Zeile in den sichtbaren Bereich scrollt. Nur sichtbare Zeilen werden gezeichnet, daher kostet ein Grid mit einer Million Zeilen so viel wie eines mit fünfzig. Ändere die Anzahl, wenn die Quelle wächst.

  • Virtual und VirtualRowCount auf den Grid-Daten, OnGetValue liefert die Zellen
  • Footer summaries read their values through OnGetValue ebenfalls
  • Virtuelle Zeilen haben keine Schlüssel, daher behalten sie die Reihenfolge der Quelle, ohne Sortieren, Filtern oder Aufblinken
  • Für Feeds, die endlos wachsen, ist MaxRows mit TailMode die Alternative mit Schlüsseln
Hilfethema lesen

Skalieren und verbinden

Benutzer das Grid in natürlicher Sprache fragen lassen

Nicht jeder Benutzer möchte Filter bauen. TsgcGridAI wandelt eine Frage wie price greater than 100 sort by volume descending highlight change less than 0 in Filter, Sortierungen und Zeilenhervorhebungen im Grid um, und die KI-Abfrageleiste gibt Benutzern einen Ort, sie einzutippen. Ohne zugewiesenen Anbieter antwortet ein regelbasierter Parser lokal, ohne Netzwerk und ohne API-Schlüssel. Weise einen Anbieter zu, und stattdessen antwortet ein beliebiges LLM: TsgcUIAIEventProvider reicht jede Anfrage an deinen eigenen Code weiter, und TsgcUIAIChatProvider nutzt die Komponente TsgcAIChat von sgcWebSockets. Gesendet wird nur der Feldkatalog, die Namen, Beschriftungen, Typen und einige Beispielwerte der Spalten, niemals die Zeilen.

  • Die Abfrageleiste: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar und TsgcAvaloniaAIQueryBar, mit zuletzt gestellten Fragen, Vorschlägen, Cancel und Undo
  • Filter laufen über OnFilterRow, Hervorhebungen werden zu ApplyToRow Formatregeln
  • Jede Antwort ersetzt die vorherige, und Undo geht einen Schritt zurück
  • LastExplanation teilt mit, was angewendet wurde, und wenn der Anbieter ausfällt, antwortet der regelbasierte Parser
  • Die Brücke sgcGridWS behält TsgcGridAIQuery mit TsgcHTMLAIAssistant und bringt TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT und TsgcGridFeedSource_SSE, die JSON-Nachrichten per Schlüssel ins Grid schreiben

Jede Edition, auch Community, unter VCL, FireMonkey, WinForms, WPF und Avalonia. Der Anbieter für sgcWebSockets und die Brücke sgcGridWS erfordern sgcWebSockets und eine Edition Registered.

Hilfethema lesen

Barrierefreiheit

UI Automation für Screenreader, Tastatur und hohen Kontrast, ohne Einrichtung.

Barrierefreiheit

Ein Grid, das als echte Tabelle bereitgestellt wird

sgcGrid stellt seinen Inhalt über Microsoft UI Automation als Tabelle mit Spaltenköpfen, Zeilen und Zellen bereit, die Schnittstelle, die Screenreader wie Narrator und NVDA verwenden. Es werden nur die sichtbaren Zeilen aufgebaut, und die Zeilen- und Spaltenanzahl ist immer die vollständige, sodass ein Grid mit einer Million Zeilen nichts zusätzlich kostet.

  • Die fokussierte Zelle, die Auswahl, Sortierung, Filterung, Gruppierung und Baumzeilen werden über die Muster Grid, Table und Selection bereitgestellt
  • Pfeiltasten, Pos1, Ende, Bild auf und Bild ab bewegen die fokussierte Zelle, Umschalt erweitert die Auswahl, Strg+Leertaste schaltet die Zeile oder Zelle um, und F2 oder Enter bearbeitet
  • Alt+Ab öffnet das Filter-Popup, Alt+Umschalt+Links und Alt+Umschalt+Rechts verschieben die Spalte, Strg+Umschalt+G gruppiert nach der fokussierten Spalte und Strg+Umschalt+U hebt diese Gruppierung auf
  • Ein sichtbarer Fokusrahmen, und unter einem Windows-Kontrastdesign zeichnet das Grid mit den Systemfarben

Barrierefreiheit ist in jeder Edition standardmäßig aktiv, auch in der kostenlosen Community-Edition, unter VCL in jeder Delphi- und C++Builder-Version von Delphi 7 bis Delphi 13, in FireMonkey unter Windows sowie unter WinForms, WPF und Avalonia. In Delphi und C++Builder legen AccessibleName und AccessibleDescription den Namen und die Beschreibung fest, die über UI Automation bereitgestellt werden, und unter .NET leisten der Standardname und der Standard-Hilfetext des jeweiligen Frameworks dasselbe. Siehe die Konformitätsberichte zur Barrierefreiheit. Unter Avalonia, das keine Tabellenmuster kennt, trägt jede Zelle ihre Spalte und Position in Name und Hilfetext. Spaltenbreiten werden nur mit der Maus geändert.

Hilfethema lesen

sgcGrid in Aktion erleben

sgcGrid in den sgcUI-Suite-Demos: vollständige Anwendungen, die offline mit integrierten Simulationsdaten laufen.

Ein 1080p-Frame in wenigen Millisekunden

Zuletzt gemessene Durchschnittswerte des QA-Performance-Gates von sgcGrid: ein Frame mit 1920 x 1080, 12 Spalten, 100.000 Zeilen und 45 sichtbaren Zeilen, 60 Mal auf der Raster-Zeichenfläche gerendert. Das Gate schlägt bei mehr als 16 ms pro Frame unter Win64 und 25 ms unter Win32 fehl.

MessungErgebnisBedingungen
Einfacher Frame3,0 msWin32
Einfacher Frame4,6 msWin64
Einfacher Frame3,7 msLinux64
Aufblinken und 3 Formatregeln3,2 msWin32
Aufblinken und 3 Formatregeln6,8 msWin64
LiveTicker-Demo, Worker-Thread schreibtEtwa 1.000 Updates pro SekundeSortiertes, aufblinkendes Grid bei 60 fps

Quelle: das Hilfethema, das diese Zahlen dokumentiert.

Wer mit sgcGrid baut

Handelsplätze und Marktdaten

Eine Kurstafel muss lesbar bleiben, während sich Hunderte Kurse pro Sekunde ändern. Feed-Threads schreiben mit UpdateRow und warten nie auf die UI, das Aufblinken bei Änderung zeigt die Richtung jeder Bewegung, und der Tail-Modus hält das Handelsprotokoll bei der neuesten Ausführung. Die Brücke sgcGridWS kann die Kurse aus WebSocket, MQTT oder SSE lesen.

  • Live-Updates
  • Aufblinken bei Änderung
  • Tail-Modus
  • Live-Feeds
Demo LiveTicker ausführen

Back Office und Fachanwendungen

Auftragserfassung, Bestandslisten und Rechnungsbildschirme leben von einer Datenbank. Binde das vorhandene TDataSet, lass Benutzer nach Kunde oder Monat gruppieren, mit Summen in jeder Gruppenzeile, Werte direkt mit Validierung korrigieren und exportiere eine Arbeitsmappe, die die Buchhaltung mit intakten Gruppen und SUBTOTAL-Formeln öffnet.

  • DataSet-Bindung
  • Gruppierung und Summen
  • Direktes Bearbeiten
  • Excel-Export
Demo DataSetGrid ausführen

Überwachung, Logs und Alarme

Betriebsbildschirme zeigen Ereignisströme, die nie enden. MaxRows begrenzt das Log, Formatregeln färben Fehler rot, und der virtuelle Modus durchsucht ein Archiv mit Millionen Zeilen bei Bedarf. Auf einem Linux64-Server schreibt der Renderer dasselbe Grid für eine Alarm-E-Mail in eine PNG- oder SVG-Datei.

  • Formatregeln
  • MaxRows und Tail-Modus
  • Virtueller Modus
  • Headless PNG und SVG
Demo LiveFeed ausführen

Ein Live-Grid in wenigen Zeilen

Dieselbe API in Delphi, C++ Builder und C#: Spalten hinzufügen, Zeilen per Schlüssel anhängen und später aus jedem Thread aktualisieren.

Ein VCL-Grid im Code: typisierte Spalten, per Schlüssel angehängte Zeilen und eine Aktualisierung per Feldname aus jedem 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;

Hilfethema lesen →

Dasselbe Grid in C++ Builder mit den generierten sgcGrid-Headern.

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

Hilfethema lesen →

Ein WinForms-Grid mit aufblinkenden Zellen, einer Regel für negative Änderungen und dem dunklen 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

Hilfethema lesen →

Die sgcGrid-Demos ausführen

15 Demos für Delphi, drei davon FireMonkey, 11 für C++ Builder und 18 für .NET auf WinForms, WPF und Avalonia.

LiveTicker

LiveTicker

Etwa 1.000 Kursaktualisierungen pro Sekunde aus einem Worker-Thread mit UpdateRow, einer sortierten Ansicht, aufblinkenden Zellen und einer Formatregel für negative Änderungen. VCL, FireMonkey, C++ Builder, WinForms, WPF und Avalonia.

DataSetGrid

DataSetGrid

A TsgcGridSource_DataSet gebunden an ein TClientDataSet mit 200 Datensätzen mit KeyField, AutoColumns und LiveUpdates, dazu JSON- und CSV-Export und -Import.

GroupAndSummary

GroupAndSummary

100.000 Aufträge gruppiert nach Region und Kategorie mit Gruppenpanel, Summen für Count, Sum und Average, einer Fußzeile und zwei fixierten Spalten. In .NET heißt es Grouping.

FilterAndFind

FilterAndFind

100.000 Verkaufszeilen mit den Trichter-Popups, der Filterzeile und dem Suchfeld, dazu Spaltenauswahl, optimale Breite und ein in eine Datei gespeichertes und wieder geladenes Layout. VCL, FireMonkey, C++ Builder, WinForms, WPF und Avalonia.

BandsAndCells

BandsAndCells

2.000 Instrumente unter den Bändern Instrument, Live data, Price und Position, mit Sparkline-, Fortschritts- und Bildzellen, Mehrzeilenauswahl und einer Schaltfläche Copy. VCL, C++ Builder und WinForms.

Nur Registered Editing

Eine Auswahllisten-Spalte, eine mit der Leertaste umgeschaltete boolesche Spalte, OnValidate Ablehnung negativer Mengen, OnEditError und ein OnEdited Log, dazu Datums-, Zeit-, Spin-, Farb- und Token-Editoren aus sgcEditors, eine TTrackBar über OnCreateEditor, Einfügen, Rückgängig und Wiederholen.

DataSetEditing

Nur Registered DataSetEditing

Products und Categories in zwei TClientDataSets, mit einem TDBNavigator und zwei TDBEdits auf denselben Datensätzen: WriteBack, SyncCursor, eine Lookup-Spalte, Einfügen, Löschen und Rückgängig. VCL, C++ Builder und WinForms (eine DataTable mit AddLookup).

TreeAndDetail

Nur Registered TreeAndDetail

Ein Organigramm als Baum und Kunden mit einem Auftrags-Detailband, befüllt über ein TsgcGridDataStore.

Nur Registered ExcelExport

Ein gruppiertes Grid und ein Baum-Grid, gespeichert mit SaveToXLSX und in der Tabellenkalkulation geöffnet, mit erhaltener Gliederung und Summen.

GridAndChart

Eine Grid-Kachel und eine Diagramm-Kachel in einem Dashboard: ein TsgcChartDataSource_Table zeichnet die Grid-Zeilen. Benötigt sgcCharts und sgcDashboard.

Nur Registered AskYourGrid

TsgcGridAI und die KI-Abfrageleiste filtern, sortieren und heben 200 Aktien anhand von Fragen in natürlicher Sprache hervor, ohne Netzwerk und ohne API-Schlüssel, neben der Brücke TsgcGridAIQuery. Benötigt sgcWebSockets.

Nur Registered LiveFeed

Ein In-Process-WebSocket-Server sendet JSON-Batches mit 50 Symbolen, und ein TsgcGridFeedSource_WebSocket schreibt sie per Schlüssel ins Grid. Delphi und .NET.

Kompilierte Demos

Sofort lauffähige Programme jedes sgcUI-Produkts, nichts zu installieren.

sgcUI_bin.zip herunterladen →

Wo sgcGrid enthalten ist

sgcGrid wird einzeln verkauft, ist Teil jeder sgcUI-Edition ab Standard und ist im All-Access-Bundle.

sgcGrid Einzelpaket

€199 / Entwickler, voller Quellcode, 1 Jahr Updates.

sgcGrid kaufen → Preise ansehen →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar und sgcEditors, ab €380.

Standard ansehen →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard und sgcGauges, ab €529.

Professional ansehen →

sgcUI Enterprise

Alle 14 sgcUI-Produkte, ab €699.

Enterprise ansehen →

Die kostenlose Community Edition ist esegece.sgcGrid.Community auf NuGet. Ein Projekt referenziert entweder die Community- oder die Registered-Pakete, niemals beide.

FunktionCommunity (kostenlos)Registered
Live-Updates aus jedem Thread, Aufblinken bei Änderung, Tail-Modus✓✓
Formatregeln und Themes✓✓
Sortieren, Filtern und Auswahl✓✓
Gruppierung, Gruppenpanel und Summen✓✓
Fixierte Spalten und Spaltengrößenänderung✓✓
Virtueller Modus✓✓
DataTable-Bindung, JSON und CSV✓✓
Headless PNG und SVG✓✓
Spaltenfilter, Filterzeile und Suchfeld✓✓
Spaltenauswahl, Spalten umordnen, optimale Breite und Layouts✓✓
Bänder, Bild-, Fortschritts- und Sparkline-Zellen, Mehrfachauswahl✓✓
Ask your grid: TsgcGridAI, die KI-Abfrageleiste und jeder LLM-Anbieter✓✓
Direktes Bearbeiten−✓
Bidirektionale DataTable-Bearbeitung, Einfügen, Rückgängig und Wiederholen, Zell-Editoren aus sgcEditors−✓
Baumzeilen und Master-Detail−✓
Excel-Export−✓
Live-Feeds, TsgcGridAIQuery und der KI-Anbieter sgcWebSockets (Brücken sgcGridWS und sgcUICoreWS)−✓

Unterstützte Frameworks und Plattformen

Komponenten in sgcGrid

KomponenteZiel
TsgcVCLGridDelphi und C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey ab XE6, unter Windows, macOS, iOS und Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererFrameworkneutraler Zeilenspeicher, Spalten, Formatregeln und Renderer, auch unter Linux64
TsgcGridAIFrameworkneutrale Engine für Abfragen in natürlicher Sprache, in jeder Edition und auch unter Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderKI-Abfrageleiste und KI-Anbieter von sgcUICore, in jeder Edition
TsgcUIAIChatProviderBrücke sgcUICoreWS: das TsgcAIChat von sgcWebSockets als KI-Anbieter (Edition Registered)
TsgcGridSource_DataSet, TsgcGridDataStoreTDataSet-Bindung und der Zeilenspeicher der Master-Detail-Bänder
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryBrücke sgcGridWS mit sgcWebSockets (Edition Registered)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF und Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, Abfragen in natürlicher Sprache und die KI-Abfrageleiste für WinForms, WPF und Avalonia
ZielKomponentePlatforms
Delphi 7 bis 13, VCLTsgcVCLGridWin32, und Win64 ab XE2
Delphi XE6 bis 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS und Android
C++ Builder 2007 bis 13TsgcVCLGrid, TsgcFMXGridGenerierte .hpp-Header und statische Bibliotheken
Delphi 10.2 bis 13, frameworkneutralModell, Formatierung, Renderer, JSON und CSVLinux64, zum Beispiel um Grid-Bilder auf einem Server zu rendern
.NET Framework 4.7.2, .NET 8, 9 und 10TsgcWinFormsGrid, WPF- und Avalonia-GridsWinForms, WPF, Avalonia, Headless PNG und SVG

Häufig gestellte Fragen

Ja. AppendRow, UpdateRow, UpdateCell und DeleteRow der Grid-Daten sind threadsicher, daher schreibt ein Worker-Thread Zeilen per Schlüssel direkt. Das Grid zeichnet im Hauptthread höchstens MaxFPS Mal pro Sekunde neu. Siehe Live-Updates.

Nur die sichtbaren Zeilen werden gezeichnet, daher hängen die Kosten eines Frames vom Fenster ab, nicht von der Zeilenanzahl. Das QA-Gate misst einen 1080p-Frame eines Grids mit 100.000 Zeilen mit 3,0 ms unter Win32 und 4,6 ms unter Win64. Für Daten, die anderswo liegen, speichert der virtuelle Modus keine Zeilen und fragt Werte ab, sobald sie in den sichtbaren Bereich scrollen. Siehe Leistung.

Ja. TsgcGridSource_DataSet füllt ein Grid aus jedem TDataSet, erstellt die Spalten mit AutoColumns und folgt mit LiveUpdatesjedem Append, Edit und Delete des Datasets. Mit einem KeyField werden geänderte Zeilen an Ort und Stelle aktualisiert statt neu geladen. In .NET liest dieselbe Quelle eine DataTable. Siehe DataSet binding.

Ja. TsgcVCLGrid ist ein gewöhnliches VCL-Steuerelement und kann daher neben einem vorhandenen TStringGrid oder TDBGrid auf einem Formular sitzen. Ein TDBGrid-Bildschirm behält sein Dataset und ergänzt ein TsgcGridSource_DataSet; ein TStringGrid-Bildschirm schreibt seine Zeilen mit AppendRow und UpdateRow per Schlüssel. Eine automatische Umwandlung vorhandener Formulare gibt es nicht.

Direktes Bearbeiten, bidirektionale DataTable-Bearbeitung, Einfügen, Rückgängig und Wiederholen, die Zell-Editoren aus sgcEditors, Baumzeilen, Master-Detail-Zeilen, Excel-Export und die Brücke sgcGridWS. Sortieren, Filtern, Filterzeile und Suchfeld, Gruppieren, Summen, fixierte Spalten, Spaltenauswahl, Layouts, Bänder, Bild-, Fortschritts- und Sparkline-Zellen, Mehrfachauswahl, Formatregeln, virtueller Modus, JSON und CSV, die Headless-Ausgabe sowie Ask your grid mit TsgcGridAI sind in jeder Edition enthalten. Siehe Editionen.

Ja. Größen wie GroupIndent und GroupPanelHeight sind geräteunabhängige Pixel, und das VCL-Grid skaliert sie auf die DPI seines Monitors, pro Monitor ab Delphi 10.3. Theme schaltet um zwischen utLight und utDark, AccentColor legt den Akzent für Auswahl und Aufblinken fest.

sgcGrid Hilfe

3,000+Entwickler
20+Jahre
761+Komponenten
30+API-Integrationen
5Plattformen
30 Tage Geld-zurück-GarantieNicht zufrieden? Fordere innerhalb von 30 Tagen nach dem Kauf eine vollständige Rückerstattung an. Rückerstattungsrichtlinie ansehen

Teste sgcGrid noch heute

Die sgcUI-Testversion enthält sgcGrid mit allen freigeschalteten Features, die anderen 13 sgcUI-Produkte und alle Demoprojekte.