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

Dreiundzwanzig Features in sechs 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
  • Regeln setzen neben Fett auch Kursiv, Unterstrichen und Durchgestrichen, und OnGetCellFont legt Schriftstil und Schriftgröße jeder Zelle fest
  • AddIconSet setzt aus zwei Schwellenwerten Pfeile, Kreise, Flaggen oder Häkchen in eine Spalte, und eine Regel kann ein Symbol oder ein eigenes Bild anzeigen
Hilfethema lesen

Live-Daten

Eine ISA-18.2-Alarmliste für HMI-Bilder

Ein Bedienbild braucht einen Ort, der jeden Alarm auflistet, zeigt, welche noch auf eine Quittierung warten, und dem Bediener erlaubt, darauf zu reagieren. Das Alarmmodell verwaltet die Alarme mit den ISA-18.2-Zuständen und den Prioritäten 1 bis 4, und der Alarmlink schreibt sie in ein Grid, eine Zeile pro Tag, mit der Farbe der Priorität und blinkenden Zeilen für die noch nicht quittierten Alarme. Die Anwendung löst die Alarme aus ihren eigenen Grenzwerten aus und hebt sie wieder auf, der Bediener quittiert, shelvt und unshelvt sie über das Kontextmenü.

  • TsgcGridAlarmModel: RaiseAlarm, ClearAlarm, Acknowledge, AcknowledgeAll, Shelve, Unshelve
  • Sechs Zustände: aktiv unquittiert, aktiv quittiert, Rückkehr zum Normalzustand unquittiert, normal, geshelvt und unterdrückt
  • FilterPriorities, FilterStates und FilterText sowie Export als JSON oder CSV
  • TsgcGridAlarmLink und TsgcVCLGridAlarmMenu, auch für FireMonkey und in .NET für WinForms, WPF und Avalonia

Das Modell, der Link und die Menüs sind in jeder Edition enthalten, auch in Community. Das Quittierungsprotokoll mit Log und OnLog ist Registered. Die Alarmliste gehört zum sgcUI HMI-Paket.

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
Dieselben Zeilen als Karten zeigen

Daten formen Nur Registered

Dieselben Zeilen als Karten zeigen

Eine Kontaktliste, ein Produktkatalog oder eine Ticket-Warteschlange liest sich oft besser als Karten denn als Tabelle. Mit ViewStyle auf gvsCard zeichnet das Grid jede Zeile als Karte: eine optionale Titelleiste, ein optionales Bild und eine Zeile je sichtbarer Spalte mit Überschrift und Wert. Die Karten zeigen dieselben Zeilen wie die Tabelle, sodass Sortieren, Filter, Suchfeld, Auswahl, Bearbeiten und Servermodus in beiden Ansichten funktionieren, und eine Eigenschaft schaltet zur Laufzeit zwischen ihnen um.

  • CardOptions legt CaptionField, das ImageField über oder neben den Feldern, die CardWidth und die Anzahl der Karten pro Band fest
  • Jede Karte hat dieselbe Größe, daher liest die Kartenansicht ein Servermodus-Grid mit Millionen Zeilen seitenweise wie die Tabelle, mit Platzhalterkarten für die Zeilen, die noch unterwegs sind
  • Werte werden wie Zellen gezeichnet: Formatregeln, Fortschritts-, Tag-, Link- und Sparkline-Zellen, Suchtreffer und das Aufblinken bei Änderung
  • Pfeiltasten wechseln zwischen Karten, Tab zwischen Feldern, F2 bearbeitet ein Feld, und ein Rechtsklick auf eine Feldüberschrift öffnet das Spaltenmenü zum Sortieren und Filtern ohne Kopfzeile
  • Rechts-nach-links, Drucken und Screenreader funktionieren in der Kartenansicht, und das gespeicherte Layout behält die Ansicht

Die Kartenansicht gruppiert nicht und zeichnet keine Spaltenkopfzeile, Filterzeile oder Fußzeile. Unter VCL, FireMonkey, WinForms, WPF und Avalonia, nicht im .NET-Community-Build.

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
  • Datumsspalten filtern nach Zeitraum: heute, gestern, diese oder letzte Woche, dieser oder letzter Monat bzw. dieses oder letztes Jahr und die letzten N Tage, mit dem Wochenbeginn in FirstDayOfWeek

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
  • AutoSaveLayout speichert das Layout beim Schließen des Grids und stellt es beim nächsten Start wieder her, und Layout zurücksetzen im Menü der Kopfzeile bringt die Spalten der Entwurfszeit zurück
  • AutoFitColumns lässt die Spalten die Breite des Grids ausfüllen, und MaxWidth begrenzt eine Spalte beim Ändern der Größe oder beim Anpassen

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
  • gcdTags zeigt mehrere farbige Chips in einer Zelle aus Text wie "Urgent, Pending review", mit TagColors und OnGetTagStyle für eigene Farben
  • gcdImage zeichnet ein Bild aus CellImages, das das Grid aus jeder Images zugewiesenen Bildliste füllt
  • TrueValue und FalseValue machen aus einer Spalte, die Werte wie "S" und "N" speichert, Kontrollkästchen, und gcdLink zeigt einen Link, der OnLinkClick auslöst
  • HeaderLines, RowLines und WordWrap zeigen Überschriften und Zelltext mehrzeilig an, und HeaderImageIndex und HeaderButton setzen ein Bild und eine Schaltfläche in die Kopfzeile einer Spalte
  • ShowTruncatedHints zeigt den vollständigen Text einer abgeschnittenen Zelle oder Überschrift als Hint an, und OnGetCellHint legt einen eigenen Hint pro Zelle fest
  • 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
  • RowHeader fügt einen Streifen mit Datensatzindikator, Zeilennummern und einem Kontrollkästchen pro Zeile hinzu, und SelectionColor und SelectionTextColor legen die Auswahlfarben fest
  • RowDragMode zieht die ausgewählten Zeilen auf ein anderes Steuerelement, unter VCL auch in andere Anwendungen wie Excel

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 BLOB-Feldern gespeicherte Bilder erscheinen in gcdImage-Spalten, und ImagePreview zeigt eine größere Kopie, wenn die Maus auf der Zelle ruht
  • ApplyFilter sorgt dafür, dass das DataSet nur die Zeilen behält, die das Grid zeigt, und OnApplySort übergibt die Sortierung des Grids als Feldnamen für Ihre Abfrage
  • Unter VCL kopiert der Befehl Import columns from DB grid im Kontextmenü des Grids zur Entwurfszeit die Spalten, die DataSet-Verknüpfung und die Ereignisse eines TDBGrid
  • 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

Bearbeiten und Exportieren Nur Registered

Arbeite im Grid wie in einer leichten Tabellenkalkulation

Der Vertrieb schickt eine Arbeitsmappe und will schnell ein Was-wäre-wenn durchspielen, ohne noch einmal den Umweg über Excel zu gehen. Mit ExcelMode auf True verhält sich das Grid wie eine leichte Tabellenkalkulation: Benutzer wählen einen Bereich aus, ziehen das Ausfüllkästchen, um eine Reihe fortzusetzen, tippen Formeln, die mit = beginnen, formatieren Zellen und arbeiten mit mehreren Blättern. LoadFromXLSX öffnet die Arbeitsmappe selbst, aus einer Datei oder einem Stream, ohne externe Bibliothek und ohne installiertes Excel.

  • Bereichsauswahl: ein Rechteck aufziehen, mit Umschalt+Pfeiltasten erweitern, und Strg+C kopiert es
  • Das Ausfüllkästchen setzt Zahlen- und Datumsreihen fort, kopiert Text und verschiebt die relativen Bezüge von Formeln; jedes Ausfüllen ist ein Rückgängig-Schritt, und OnBeforeFill kann es ablehnen
  • Formeln mit + - * / ^ &, Vergleichen, Bezügen wie A1, $A$1 und A1:B5 sowie SUM, AVERAGE, MIN, MAX, COUNT, IF, ROUND und ABS
  • Fehler erscheinen als #DIV/0!, #REF!, #NAME?, #VALUE! und #CIRC! bei einem Zirkelbezug; Werte werden beim Bearbeiten neu berechnet, und Sortieren, Filter und Summen nutzen die berechneten Werte
  • Formatierung einzelner Zellen: fett, kursiv, unterstrichen, durchgestrichen, Schriftgröße und -farbe, Füllfarbe, horizontale und vertikale Ausrichtung, Zeilenumbruch, Zahlenformat und Rahmen, gesetzt mit FormatSelection oder Strg+B, Strg+I, Strg+U und Strg+5; jede Formatänderung ist ein Rückgängig-Schritt
  • Mehrere Blätter in einem Grid: mit ShowSheetTabs kann eine Registerleiste Blätter hinzufügen, umbenennen, löschen und neu ordnen, Formeln lesen andere Blätter mit Bezügen wie Orders!E1:E20 oder 'Q4 Notes'!B1, und beim Umbenennen werden diese Bezüge umgeschrieben
  • Im Excel-Modus schreibt SaveToXLSX jedes Blatt mit seinem Namen, seinen Zellformaten und seinen Formeln als Excel-Formeln mit zwischengespeicherten berechneten Werten; die Zeilen werden in der Reihenfolge des Speichers ausgegeben, damit die Bezüge exakt bleiben
  • LoadFromXLSX liest im Excel-Modus jedes Blatt der Arbeitsmappe oder ein Blatt nach Name oder Index, baut die Spalten aus der Kopfzeile mit erkannten Typen auf und liest Zeichenfolgen, Zahlen, Wahrheitswerte und Datumswerte, auch im 1904-Datumssystem
  • Formeln und Zellformate aus der Arbeitsmappe kommen im Excel-Modus live an; sonst kommen die Formeln als ihre zwischengespeicherten Werte an
  • Eine Spaltenformel Formula wie =C1*D1 wird für Zeile 1 geschrieben und berechnet jede Zeile einer schreibgeschützten Spalte, bei Daten im Speicher, im virtuellen Modus und über eine DataSet-Quelle; im virtuellen Modus werden auch die Formeltexte ausgewertet, die OnGetValue liefert

Keine vollständige Tabellenkalkulation: keine Diagramme, keine verbundenen Zellen und keine Zellformeln über eine DataSet-Quelle, wo Spaltenformeln an ihre Stelle treten. In VCL, FireMonkey, WinForms, WPF und Avalonia, nicht im .NET-Community-Build.

Hilfethema lesen Hilfethema zur Zellformatierung lesen Hilfethema zu Blättern lesen Hilfethema zu Spaltenformeln 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
  • gedMemo bearbeitet langen Text über mehrere Zeilen, und gedLookup wählt einen Wert aus einer Liste mit mehreren Spalten, die aus LookupItems oder einem Nachschlagefeld gefüllt wird
  • Kontrollkästchen-Spalten werden direkt umgeschaltet und schreiben ihren TrueValue oder FalseValue zurück
  • 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; um in der Datenquelle zu sortieren, zu filtern und zu gruppieren, nutze den Servermodus unten
  • Für Feeds, die endlos wachsen, ist MaxRows mit TailMode die Alternative mit Schlüsseln
Hilfethema lesen
Eine Datenbanktabelle mit Millionen Zeilen seitenweise lesen

Skalieren und verbinden Nur Registered

Eine Datenbanktabelle mit Millionen Zeilen seitenweise lesen

Eine Auftragshistorie oder eine Audit-Tabelle ist viel zu groß zum Laden, und doch möchten Benutzer sie sortieren, filtern und gruppieren. Im Servermodus liest eine Provider-Komponente jeweils eine Seite Zeilen, und die Datenquelle wertet Sortierung, Spaltenfilter, Filterzeile, Suchtext, Fußzeilen-Zusammenfassungen, Gruppierung und Zeilenanzahl aus. Eine Tabelle mit Millionen Zeilen öffnet sich so schnell wie eine mit fünfzig, und nur die Seiten auf dem Bildschirm werden gelesen.

  • TsgcGridServerProvider_DataSet macht aus jeder Anfrage eine SQL-Anweisung für SQLite, SQL Server, PostgreSQL, MySQL, Oracle, Firebird, InterBase oder einen generischen Dialect, ausgeführt von einer beliebigen Abfragekomponente: FireDAC, dbExpress, ADO, IBX, UniDAC, Zeos und andere
  • Unter .NET liest TsgcGridServerProvider_Queryable jedes IQueryable, zum Beispiel ein Entity Framework Core Set, und TsgcGridServerProvider_AdoNet führt dasselbe SQL auf jeder ADO.NET-Verbindung aus
  • TsgcGridServerProvider_Callback bedient jede andere Quelle, zum Beispiel einen REST-Dienst, über Ereignisse, die sofort oder später aus einem beliebigen Thread beantwortet werden
  • Zeilen werden in Blöcken zu PageSize über einen Cache geladen; das Zeichnen wartet nie, noch nicht geladene Zeilen zeigen Platzhalterbalken, bis ihre Seite eintrifft
  • Die Gruppierung läuft auf dem Server: ein GROUP BY je Ebene liefert die Gruppen mit ihren Zeilenanzahlen und Zusammenfassungen, und die Kinder einer Gruppe werden beim Aufklappen geladen
  • Änderungen werden über den Provider zurückgeschrieben, und Export, Drucken und Kopieren lesen alle Zeilen seitenweise

Baumzeilen und Detailbänder sind im Servermodus nicht verfügbar, und das Filter-Popup zeigt keine Zeilenanzahlen. Unter VCL, FireMonkey, WinForms, WPF und Avalonia, nicht im .NET-Community-Build.

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

19 Demos für Delphi, fünf davon FireMonkey, 13 für C++ Builder und 24 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.

Nur Registered Spreadsheet

Excel-Modus mit drei Blättern in einer Registerleiste: Orders, dessen Spalte Total die Spaltenformel =C1*D1 hat, Summary mit =SUM(Orders!E1:E20) und weiteren Formeln über die Blätter hinweg, und Notes. Eine Symbolleiste formatiert die Auswahl, führt die Blattbefehle aus und speichert und öffnet XLSX-Dateien mit den Formeln, den Formaten und den Blattnamen. VCL, FireMonkey (SpreadsheetFMX), C++ Builder, WinForms, WPF und Avalonia.

ServerModeAndCards

Nur Registered ServerModeAndCards

200.000 erzeugte Aufträge in einer In-Memory-FireDAC-SQLite-Datenbank, seitenweise gelesen von TsgcGridServerProvider_DataSet. Wechsle zwischen Tabelle und Karten, sortiere, filtere, suche, summiere die Fußzeile, gruppiere nach Land und Kunde mit den von SQL berechneten Anzahlen und Summen und schreibe Änderungen in die Datenbank zurück. VCL und C++ Builder; ServerModeAndCardsFMX liest 100.000 erzeugte Zeilen über TsgcGridServerProvider_Callback, und die Demos für WinForms, WPF und Avalonia haben Seiten für ADO.NET, IQueryable und Callback.

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 →

Getting-Started-Leitfaden

Fünf QuickStart-Demos für Delphi (VCL) liegen in Demos\Grid\Delphi\00.QuickStart. Der PDF-Leitfaden (auf Englisch) führt Schritt für Schritt durch sie: ein erstes Grid, typisierte Spalten, Bearbeitung direkt in der Zelle, eine Dataset-Verbindung und eine Auftragsanwendung mit Filtern, Gruppierung und Summen.

Leitfaden herunterladen (PDF, Englisch) →

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 17 sgcUI-Produkte, ab €699.

Enterprise ansehen →

Die kostenlose .NET Community Edition ist esegece.sgcGrid.Community auf NuGet. Ein Projekt referenziert entweder die Community- oder die Registered-Pakete, niemals beide. Die kostenlose Delphi Community Edition findest du auf der Download-Seite.

FunktionCommunity (kostenlos)Registered
Live-Updates aus jedem Thread, Aufblinken bei Änderung, Tail-Modus✓✓
Formatregeln mit Schriftstilen und Symbolsätzen, Themes✓✓
Sortieren, Filtern und Auswahl✓✓
Gruppierung, Gruppenpanel und Summen✓✓
Fixierte Spalten und Spaltengrößenänderung✓✓
Virtueller Modus✓✓
DataTable-Bindung, der auf die DataTable angewendete Grid-Filter, JSON und CSV✓✓
Headless PNG und SVG✓✓
Spaltenfilter mit Datumszeiträumen, Filterzeile und Suchfeld✓✓
Spaltenauswahl, Spalten umordnen, optimale Breite, automatische Layouts und Spalten, die die Breite ausfüllen✓✓
Bänder, Bild-, Fortschritts-, Sparkline- und Tag-Zellen, Mehrfachauswahl✓✓
Kontrollkästchen- und Link-Zellen, Bilder aus BLOB-Feldern, mehrzeilige Kopfzeilen und Zeilen, Hints✓✓
Zeilenkopf mit Kontrollkästchen, Bilder und Schaltflächen in der Kopfzeile, Auswahlfarben, Drag and Drop von Zeilen✓✓
Ask your grid: TsgcGridAI, die KI-Abfrageleiste und jeder LLM-Anbieter✓✓
Direktes Bearbeiten, Umschalten von Kontrollkästchen, Memo- und Nachschlage-Editoren−✓
Bidirektionale DataTable-Bearbeitung, Einfügen, Rückgängig und Wiederholen, Zell-Editoren aus sgcEditors−✓
Baumzeilen und Master-Detail−✓
Excel-Export−✓
Excel-Modus, Zellformatierung, Blätter und Spaltenformeln−✓
Servermodus: seitenweises Lesen, Sortieren, Filtern, Zusammenfassungen und Gruppieren auf dem Server−✓
Kartenansicht−✓
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, im Servermodus. Ein Provider liest jeweils eine Seite Zeilen, und die Datenbank wertet Sortierung, Spaltenfilter, Filterzeile, Suchtext, Fußzeilen-Zusammenfassungen, Gruppierung und Zeilenanzahl aus. Unter Delphi und C++ Builder baut TsgcGridServerProvider_DataSet das SQL für SQLite, SQL Server, PostgreSQL, MySQL, Oracle, Firebird, InterBase oder einen generischen Dialect und führt es über eine beliebige Abfragekomponente aus. Unter .NET lesen die Provider ein IQueryable, etwa ein Entity Framework Core Set, oder eine ADO.NET-Verbindung, und ein Callback-Provider bedient jede andere Quelle. Die Kartenansicht liest auf dieselbe Weise seitenweise. Der Servermodus gehört zur Edition Registered. Siehe Servermodus.

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 ganzer Formulare gibt es nicht, aber zur Entwurfszeit kopiert der Befehl Import columns from DB grid im Kontextmenü des Grids die Spalten, die DataSet-Verknüpfung, die Position und die Ereignisse eines vorhandenen TDBGrid.

Direktes Bearbeiten, Umschalten von Kontrollkästchen, die Memo- und Nachschlage-Editoren, bidirektionale DataTable-Bearbeitung, Einfügen, Rückgängig und Wiederholen, die Zell-Editoren aus sgcEditors, Baumzeilen, Master-Detail-Zeilen, Excel-Export, Excel-Modus mit Zellformatierung, Blättern und Spaltenformeln, Servermodus, die Kartenansicht, die Brücke sgcGridWS und das Quittierungsprotokoll für Alarme. Sortieren, Filtern, Filterzeile und Suchfeld, Gruppieren, Summen, fixierte Spalten, Spaltenauswahl, Layouts und automatische Layouts, Spalten, die die Breite ausfüllen, Bänder, Bild-, Fortschritts-, Sparkline-, Tag-, Link- und Kontrollkästchen-Zellen, Bilder aus BLOB-Feldern, mehrzeilige Kopfzeilen und Zeilen, Hints, der Zeilenkopf, Bilder und Schaltflächen in der Kopfzeile, Drag and Drop von Zeilen, Mehrfachauswahl, Formatregeln mit Symbolsätzen, Datumszeitraum-Filter, virtueller Modus, JSON und CSV, die Headless-Ausgabe, die ISA-18.2-Alarmliste 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

Wechsel?

Sie kommen von TDBGrid oder cxGrid?

Ein Migrationskit ordnet jedes TDBGrid- und DevExpress-cxGrid-Mitglied, das Sie verwenden, seinem sgcGrid-Gegenstück zu, mit Code aus einer kompilierten Demo, nummerierten Migrationsschritten und den bekannten Unterschieden.

Von TDBGrid und cxGrid migrieren →
Alle sgcUI-Migrationskits →
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 16 sgcUI-Produkte und alle Demoprojekte.