Delphi, C++ Builder & .NET sgcUI の一部

sgcGrid、Delphi、C++ Builder & .NET 向けリアルタイムデータグリッド

絶え間なく変わるデータのために作られたグリッドです。任意のスレッドからキー指定で行を書き込み、変更されたセルが緑や赤に点滅するのを確認し、同じ行をそのままグループ化、フィルター、編集、エクスポートできます。10 万行のグリッドの 1080p フレームは、Win32 で 3.0 ms です。

VCL, FireMonkey, WinForms, WPF, Avalonia1080p フレームあたり 3.0 ms(Win32)無料の .NET Community ビルドsgcUI Standard に含まれます
10 万件の注文を地域、続いてカテゴリでグループ化した sgcGrid。グループパネルのチップとフッターの合計を表示しています

リアルタイムグリッドに必要なすべて

5 つのグループに分けた 18 の機能を、それぞれのヘルプトピックにリンクしています。

リアルタイムデータ

価格、テレメトリ、キュー、ログなど、止まらないフィードに対応します。

リアルタイムデータ

任意のスレッドから、1 秒間に数千行を更新

マーケットフィード、センサーバス、ジョブキューから、グリッドに直接書き込めます。すべての行にはキーがあり、ワーカースレッドは Synchronize の呼び出しやご自身のロックコードなしに、キーを指定してフィールド名で行を更新できます。グリッドは書き込み側のスレッドでは「更新あり」の印を付けるだけで、メインスレッドで 1 秒あたり最大 MaxFPS 回だけ再描画します。

  • UpdateRow はキーに対して指定したフィールドを設定し、キーが新しければ行を挿入します。UpdateCell は 1 つのフィールドを変更します
  • AppendRow と DeleteRow は、任意のスレッドから、キーを指定して行を追加、削除します
  • BeginUpdate と EndUpdate は、一連の更新を 1 回の通知にまとめます
  • 並べ替えを行うたびに、選択行はキーで再び見つかるため、位置が飛ぶことはありません
ヘルプのトピックを読む
すべての変化をひと目で把握

リアルタイムデータ

すべての変化をひと目で把握

トレーダーやオペレーターは、すべての数字を読まなくても何が動いたかを知る必要があります。FlashChanges が有効(既定)の場合、値が上がったセルは緑、下がったセルは赤に色づき、FlashDuration ミリ秒(既定は 800)かけてフェードアウトします。ログや増え続けるフィードでは、テールモードが最新の行を表示し続け、ユーザーが読むために上へスクロールするとすぐに追従を止めます。

  • FlashUpColor、FlashDownColor、FlashChangedColor。色に 0 を指定するとテーマの既定色が使われます
  • FlashMode は、背景(fmBackground)またはテキスト(fmText)に色を付けます
  • TailMode は最新の行に追従し、MaxRows は終わりのないログの古い行から順に破棄します
  • 選択の表示は点滅の上に、点滅は書式ルールの上に描画されます
ヘルプのトピックを読む
注意が必要な行に色を付ける

リアルタイムデータ

注意が必要な行に色を付ける

期限切れの請求書、マイナスの残高、失敗したジョブは、誰かが尋ねる前に目立つべきです。書式ルールは、列のデータ型に従って、列と値を比較します。数値は数値として、日付は日付として、テキストは大文字小文字を区別せずに比較します。一致したルールは、セルまたは行全体の背景色、文字色、太字を設定し、リアルタイム更新で値が変わっても動作し続けます。

  • TsgcGridFormatRules はルールをコレクションの順に評価し、後で一致したものが先のものを上書きします
  • gfoLess、gfoBetween、gfoContains、gfoIsEmpty などの演算子があります
  • ApplyToRow は行のすべてのセルにスタイルを適用し、StopOnMatch はそのセルの評価を終了します
  • 半透明の色は背景の上にセルをうっすらと色づけし、最終的な決定権は OnGetCellStyle にあります
ヘルプのトピックを読む

データを整える

大量の行を、並べ替え、フィルター、グループ化、入れ子にできます。

10 万行を 1 回の呼び出しでグループ化して集計

データを整える

10 万行を 1 回の呼び出しでグループ化して集計

地域別の売上、月別の注文、ステータス別のチケットなど、ユーザーが求めるのは生の行ではなく合計です。GroupBy は 1 つ以上の列でグリッドをグループ化し、すべてのグループ行にメンバー、行数、行の集計が表示されます。ユーザーはヘッダーをグループパネルにドラッグして、自分でグループを組み替えられます。グループ化はビューの状態にすぎないため、グリッドにバインドされたチャートは、平らに並べ替えられた行をそのまま参照します。

  • コードから GroupBy と ClearGrouping を、または列ごとの GroupIndex を使えます
  • ShowGroupPanel でドラッグ&ドロップ対応のチップを追加できます。チップをクリックするとグループの順序が入れ替わります
  • SummaryType に gsuSum、gsuCount、gsuAverage、gsuMin、gsuMax を指定でき、SummaryFormat で書式を設定します
  • すべてのグループ行に GroupSummaries、総計には ShowFooter を使えます
  • DisplayFormat を yyyy-mm にすると、日付が月ごとにグループ化されます
ヘルプのトピックを読む
大量のデータを並べ替え、フィルターし、検索

データを整える

大量のデータを並べ替え、フィルターし、検索

数千件の中から 1 人の顧客を見つけるのは、数回のキー入力で済むべきです。FilterText は、表示中のいずれかの列で、書式設定後のテキストに入力した語句を含む行を残し、OnFilterRow ハンドラーで独自のルールを上乗せできます。ヘッダーをクリックすると並べ替わり、Ctrl を押しながらクリックすると複数列の並べ替えに列が追加され、並べ替えは安定しています。並べ替えもフィルターもされていない更新中の列で、再ソートが発生することは一切ありません。

  • 列ごとの SortOrder と SortIndex があり、変更のたびに OnSortChange が発生します
  • FilterText は大文字小文字を区別せず、ユーザーに見えているとおりのテキストを対象にします
  • カスタムロジックには OnFilterRow、そのロジックが変わったときは InvalidateView を使います
  • SelectionMode で行またはセルを選択でき、Ctrl+C でタブ区切りのテキストとしてコピーできます
  • Null、空、変換できない値は、常に先頭に並びます
ヘルプのトピックを読む
ツリー行と詳細バンドで階層を表示

データを整える 登録版のみ

ツリー行と詳細バンドで階層を表示

組織図や部品表はツリーで読むのが最適で、顧客の注文は顧客のすぐ下に表示するのが最適です。ツリー行は、キー列と親列から、深さ優先で行を配置します。詳細バンドは、任意の親行の下に関連する行の小さなグリッドを開き、独自のヘッダー、スクロール、並べ替えを持ち、TsgcGridDataStore、別のグリッド、またはイベントからデータを取得します。

  • Tree.KeyField と Tree.ParentField でツリーが有効になり、ExpandNode と CollapseNode をコードから使えます
  • 展開状態はキーごとに保持されるため、並べ替え、フィルター、リアルタイム更新をしても維持されます
  • Detail.MasterKeyField と Detail.DetailKeyField でバンドをソースに結び付け、OnGetDetailData が必要に応じてデータを供給します
  • バンドはフラット、グループ化、ツリーのいずれのモードでも動作し、詳細セルの変更もマスターグリッドと同様に点滅します

グループ化は利用できますが、ツリー行と詳細バンドは .NET Community ビルドには含まれません。

ヘルプのトピックを読む
主要な列を表示したまま、残りをスクロール

データを整える

主要な列を表示したまま、残りをスクロール

横に広いグリッドは、銘柄や顧客名がスクロールで消えると、手がかりを失います。FrozenColumns は、先頭の表示列をその位置に保ち、残りの列を横方向にスクロールさせます。ヘッダー、フッター、グループ集計も同じ区切りに従います。ユーザーはヘッダーの端をドラッグして列幅を変更でき、ヘッドレスレンダラーも同じ設定を使うため、出力した画像は画面と一致します。左側のグループの矢印もスクロールしません。

  • FrozenColumns は表示列を数え、固定の境界は 1 ピクセルの線で示されます
  • キーボードで移動すると、スクロールされた列が固定境界の右側に表示されます
  • レンダラーの FrozenWidth は、スクロールしない部分の幅を返します
  • MinWidth がサイズ変更を制限し、OnColumnResized が新しい幅を通知します
  • 無料の .NET Community ビルドを含む、すべてのエディションに含まれます
  • アラビア語とヘブライ語の右から左対応:最初の列は右に置かれ、固定列は右端に留まり、右から左のグリッドの XLSX エクスポートは右から左のシートを書き出します
ヘルプのトピックを読む
FilterAndFind デモ:ファネルボタン、(2 values) と > 500 を入力したフィルター行、Nakatomi を強調表示する検索パネル

データを整える

表計算ソフトのようにフィルターし、どんな値でも見つける

ユーザーは Excel で見慣れたファネルを期待します。ShowFilterButtons は各列ヘッダーにファネルを置きます。クリックすると、その列の重複しない値と行数、検索ボックス、And または Or で結んだ型付きの条件を最大 2 つ備えたポップアップが開きます。ShowFilterRow はヘッダーの下に、入力しながら列をフィルターする行を追加し、Ctrl+F で開く検索パネルは、すべてのセルでテキストを強調表示して、一致箇所の間を移動します。

  • 列ごとのフィルターは 1 つだけで、ポップアップ、フィルター行、コードの Column.Filter のどれからでも変更できるため、3 つは常に一致します
  • フィルター済みの 2 つの列の値リストは互いに絞り込み合い、塗りつぶしのファネルがフィルター中の列を示します
  • 列ごとの FilterRowOperator:等しい、より大きい、含む、で始まる、空である、など
  • FindText、FindNext、FindPrevious はコードからも使え、FindOnlyMatches は一致しない行を隠します
  • 列フィルターは FilterText と OnFilterRow とともに適用され、OnFilterChange が変更のたびに通知します

VCL、FireMonkey、WinForms、WPF、Avalonia のグリッドに対応します。無料の .NET Community ビルドにも含まれます。

ヘルプのトピックを読む

データを整える

ユーザーが列を並べ替えられ、その結果を保存しておく

列ヘッダーを右クリックすると、並べ替え、グループ化、幅の調整、フィルター、列チューザーの表示を行うメニューが開きます。列チューザーは、列ごとにチェックボックスを持つポップアップです。ユーザーはヘッダーをドラッグして列を移動でき、ヘッダーの境界をダブルクリックすると、見出しとセルに合わせて幅を調整します。SaveLayoutToString と LoadLayoutFromString は、これらすべてを短い JSON テキストとして保存するので、グリッドはユーザーが閉じたときの状態で開きます。

  • HeaderMenu、ColumnMoving、BestFitOnDblClick は既定でオンで、割り当てた PopupMenu が優先されます
  • ShowColumnChooser は、独自のボタンやメニュー項目からチューザーを開きます
  • 移動した列は固定列の同じ側とバンド内にとどまり、OnColumnMoved が移動を通知します
  • BestFitColumn と BestFitColumns は、見出しと最大 1,000 行のサンプルを測定するので、100 万行でも 1,000 行とほぼ同じコストです
  • レイアウトは、列の順序、幅、表示状態、並べ替え、グループ化、列フィルター、バンド、パネルのオプションを保存します。SaveLayoutToFile と LoadLayoutFromFile はファイルを使います

VCL、FireMonkey、WinForms、WPF、Avalonia のグリッドに対応します。無料の .NET Community ビルドにも含まれます。

ヘルプのトピックを読む
BandsAndCells デモ:Instrument、Live data、Price、Position のバンド、エリア型のスパークライン、進捗バー、状態アイコン、選択された 3 行

データを整える

バンドの見出し、豊かなセル、複数行の選択

取引画面は、Last、Change、Trend が 1 つの Price 見出しの下にまとまっていると読みやすくなります。Bands は列のグループの上に、必要な段数だけ見出しを追加し、各列は Band に自分のバンドを指定します。CellKind はセルを画像、進捗バー、スパークラインとして描画しますが、セルは元の値を保持するので、並べ替え、グループ化、エクスポートでは引き続き数値が使われます。

  • Bands.Add は見出しと親バンドを受け取り、バンドの行は列ヘッダーの上に積み重なります
  • gcdProgress は ProgressMin と ProgressMax を使い、gcdSparkline は数値のリストから折れ線、エリア、棒のグラフを描きます
  • gcdImage は CellImages の画像を描画し、グリッドは Images に割り当てた任意のイメージリストからこれを埋めます
  • SelectionMode の gsmMultiRow は Ctrl と Shift で任意の行の集合を選択し、gsmCellRange はセル範囲を選択し、Ctrl+A はすべてを選択します
  • 選択は行キーで保持されるので、並べ替え、フィルター、ライブ更新をまたいで残り、Ctrl+C でタブ区切りのテキストとしてコピーされます

VCL、FireMonkey、WinForms、WPF、Avalonia のグリッドに対応します。無料の .NET Community ビルドにも含まれます。

ヘルプのトピックを読む

編集とエクスポート

データを変更し、データベースと同期し、次の工程へ渡します。

編集とエクスポート 登録版のみ

検証付きでその場で編集

事務系のユーザーは、数量やステータスをグリッド上でそのまま修正できることを期待します。ReadOnly を False に設定すると、F2、Enter、文字入力、ダブルクリックでセル上にエディターが開き、列に PickList があればコンボボックスが開きます。入力したテキストは列のデータ型に変換され、OnValidate で値を変更または拒否でき、結果は UpdateCell で書き込まれるため、並べ替えや点滅もそのまま適用されます。

  • 列ごとの Editable があり、OnBeforeEdit で編集を拒否できます
  • Enter で確定、Tab で次の編集可能なセルへ移動、Escape でキャンセルします。StartEdit、CommitEdit、CancelEdit でコードから同じ操作ができます
  • 不正な入力では OnEditError がエディターを開いたままにし、OnEdited が変更前後の値を通知します

.NET Community ビルドには含まれません。

ヘルプのトピックを読む
数行で任意の TDataSet をバインド

編集とエクスポート

数行で任意の TDataSet をバインド

既存のデータベースコードはそのまま動作します。TsgcGridSource_DataSet が、FireDAC のクエリ、TClientDataSet、その他の任意の TDataSet からグリッドを作成します。Grid と DataSet を設定して Active にするだけで、行が表示されます。KeyField を指定すると、グリッドは再読み込みではなく同期され、変更された行はその場で更新されて点滅します。LiveUpdates を有効にすると、ポストされたすべての Append、Edit、Delete が、追加コードなしでグリッドに反映されます。

  • AutoColumns は、データセットのフィールドから列を作成します
  • KeyField を指定すると、新しいキーは追加され、存在しなくなったキーは削除されます
  • データセットは DisableControls を使って走査され、現在のレコードは復元されます
  • JSON と CSV にも対応します。GridLoadFromJSONFile、GridSaveToCSVFile、そして sgcGrid_IO のその他の関数があります
  • .NET では、同じクラスが DataTable を読み取ります
ヘルプのトピックを読む

編集とエクスポート 登録版のみ

ユーザーに本物の Excel ファイルを渡す

経理部門が求めるのは、スクリーンショットではなく Excel の数字です。SaveToXLSX は、外部ライブラリなしで、グリッドを Office Open XML ブックとしてファイルまたはストリームに書き出します。シートには、ユーザーに見えている内容が保たれます。表示順の表示列と幅および数値書式、固定されたヘッダー、折りたたみ可能なアウトラインとしてのグループとツリーの階層、SUBTOTAL 数式としてのグループ合計です。

  • SaveToXLSX は、ファイル名またはストリームと、任意のシート名を受け取ります
  • 数値は数値のまま、日付は Excel の日付になり、DisplayFormat はセルの数値書式になります
  • 折りたたまれたグループは、グリッドで表示されていたとおり、Excel でも折りたたまれた状態で開きます
  • UI スレッドから呼び出してください。詳細バンドはエクスポートされません
  • 折りたたまれているかどうかにかかわらず、すべてのグループ行とビュー行が書き出されます

JSON と CSV のエクスポートを備える .NET Community ビルドには含まれません。

ヘルプのトピックを読む
DataSetEditing デモ:グリッドと同じレコードを共有する TDBNavigator と 2 つの TDBEdit、カテゴリのルックアップ列

編集とエクスポート 登録版のみ

グリッドを通して DataSet を編集する

WriteBack をオンにすると、TsgcGridSource_DataSet はグリッドでのすべての変更を、その行のレコードに書き込みます。KeyField でレコードを見つけ、値をポストします。ポストに失敗した場合、たとえば BeforePost のチェックで失敗した場合は、レコードをキャンセルし、セルは元の値のままになります。SyncCursor は現在のレコードとアクティブな行を連動させるので、同じデータセット上の TDBNavigator や TDBEdit コントロールはグリッドに追従し、グリッドもそれらに追従します。

  • AllowInsert:Ins でレコードを追加してポストし、データセットの OnNewRecord が既定値を設定します
  • AllowDelete:OnBeforeDelete が同意すると、Ctrl+Del で選択した行とそのレコードを削除します
  • ルックアップフィールドは、ルックアップ結果の選択リストとして編集され、対応するキーが書き込まれます
  • OnEditError はデータセットのメッセージを表示します。貼り付けた値と元に戻す操作も同じ書き込み経路を使います

VCL、FireMonkey、WinForms、WPF、Avalonia のグリッドに対応します。.NET Community ビルドには含まれません。.NET ではソースが DataTable に書き戻され、AddLookup がルックアップ列を追加し、SyncCursor は Delphi のみです。

ヘルプのトピックを読む
ダークテーマの Editing デモ:Date 列で日付ピッカーが開いている

編集とエクスポート 登録版のみ

日付ピッカー、Excel からの貼り付け、元に戻す、やり直し

各列は、自分を編集するコントロールを選びます。EditorKind は、日付、時刻、日付と時刻のピッカー、矢印付きの数値ボックス、色ピッカー、sgcEditors のトークンエディターから選び、既定値は列のデータ型から決まります。Ctrl+V は Excel からコピーしたブロックを貼り付けます。すべての値は、何かを書き込む前に変換と検証が行われ、貼り付け全体が 1 回の元に戻す操作になります。Ctrl+Z と Ctrl+Y は、編集と貼り付けを元に戻し、やり直します。

  • OnCreateEditor は、たとえば TTrackBar のような好きなコントロールをセルに置きます
  • PasteText と PasteFromClipboard はコードからも使え、OnBeforePaste はテキストを変更または拒否できます
  • 変換できない値が 1 つでもある場合や、OnValidate が拒否した場合は、何も書き込まれる前に貼り付けが中止されます
  • 元に戻す操作は行キーとフィールド単位で動くので、並べ替えやフィルターのあとでも行を見つけ、その間にライブ更新が変えた値は保持します
  • UndoLimit は直近 100 ステップを保持します。Undo、Redo、CanUndo はコードからも使えます

VCL、FireMonkey、WinForms、WPF、Avalonia のグリッドに対応します。.NET Community ビルドには含まれません。

ヘルプのトピックを読む

スケールと接続

数百万行、ライブフィード、そして自然な言葉での操作。

数百万行を、読み込まずに閲覧

スケールと接続

数百万行を、読み込まずに閲覧

すでに別の場所にあるログのアーカイブ、センサーの履歴、クエリ結果を、メモリにコピーする必要はありません。仮想モードでは、グリッドは行を保持しません。VirtualRowCount が行数を伝え、行がスクロールで表示されたときに OnGetValue が値を返します。描画されるのは表示されている行だけなので、100 万行のグリッドでも 50 行のグリッドと同じ程度の負荷です。ソースが増えるにつれて、行数を変更してください。

  • グリッドデータの Virtual と VirtualRowCount、セルは OnGetValue が供給します
  • フッターの集計も、OnGetValue を通じて値を読み取ります
  • 仮想行にはキーがないため、ソースの順序が維持され、並べ替え、フィルター、点滅は使えません
  • 終わりなく増えるフィードには、キー付きの代替手段として MaxRows と TailMode を使います
ヘルプのトピックを読む

スケールと接続

ユーザーが、自然な言葉でグリッドに質問できる

すべてのユーザーがフィルターを組み立てたいわけではありません。TsgcGridAI は、price greater than 100 sort by volume descending highlight change less than 0 のような質問を、グリッド上のフィルター、並べ替え、行のハイライトに変換し、AI クエリバーがその入力場所をユーザーに提供します。プロバイダーを割り当てなければ、ルールベースのパーサーがネットワークも API キーも使わずローカルで回答します。プロバイダーを割り当てると、代わりに任意の LLM が回答します。TsgcUIAIEventProvider は各リクエストを独自のコードに渡し、TsgcUIAIChatProvider は sgcWebSockets の TsgcAIChat コンポーネントを使います。送信されるのはフィールドカタログだけで、列の名前、キャプション、型、いくつかのサンプル値であり、行は送られません。

  • クエリバー:TsgcVCLAIQueryBar、TsgcFMXAIQueryBar、TsgcWinFormsAIQueryBar、TsgcWpfAIQueryBar、TsgcAvaloniaAIQueryBar。最近の質問、候補、キャンセル、元に戻す操作に対応します
  • フィルターは OnFilterRow を通り、ハイライトは ApplyToRow の書式ルールになります
  • 回答は前の回答を置き換え、Undo で 1 ステップ戻せます
  • LastExplanation は、何が適用され、何が無視されたかを伝えます。プロバイダーが失敗した場合は、ルールベースのパーサーが回答します
  • sgcGridWS ブリッジは、TsgcGridAIQuery と TsgcHTMLAIAssistant を引き続き提供し、TsgcGridFeedSource_WebSocket、TsgcGridFeedSource_MQTT、TsgcGridFeedSource_SSE も提供します。これらは JSON メッセージをキー指定でグリッドに書き込みます

Community を含むすべてのエディションで、VCL、FireMonkey、WinForms、WPF、Avalonia に対応します。sgcWebSockets プロバイダーと sgcGridWS ブリッジには、sgcWebSockets と登録版が必要です。

ヘルプのトピックを読む

アクセシビリティ

スクリーンリーダー、キーボード、ハイコントラスト向けの UI Automation を、設定なしで使えます。

アクセシビリティ

本物の表として公開されるグリッド

sgcGrid は、スクリーンリーダーの Narrator や NVDA などが使う API である Microsoft UI Automation に、列ヘッダー、行、セルを持つ表としてその内容を公開します。構築されるのは表示されている行だけで、行数と列数は常に全体の数なので、100 万行のグリッドでも負荷は増えません。

  • フォーカスされたセル、選択、並べ替え、フィルタ、グループ化、ツリー行は、Grid、Table、Selection パターンで公開されます
  • 矢印キー、Home、End、Page Up、Page Down でフォーカスセルを移動し、Shift で選択範囲を拡張し、Ctrl+Space で行またはセルを切り替え、F2 または Enter で編集します
  • Alt+Down でフィルターポップアップを開き、Alt+Shift+Left と Alt+Shift+Right で列を移動し、Ctrl+Shift+G でフォーカスされた列でグループ化し、Ctrl+Shift+U でそのグループ化を解除します
  • 常に表示されるフォーカスリング。Windows のハイコントラストテーマでは、グリッドはシステムカラーで描画されます

アクセシビリティは、無料の Community 版を含むすべてのエディションで既定で有効です。VCL では Delphi 7 から Delphi 13 までのすべての Delphi と C++Builder のバージョンで、FireMonkey では Windows で、そして WinForms、WPF、Avalonia で使えます。 Delphi と C++Builder では、AccessibleName と AccessibleDescription が UI Automation に公開される名前と説明を設定し、.NET では各フレームワーク標準のアクセシブルな名前とヘルプテキストが同じ役割を果たします。アクセシビリティ適合レポートを参照してください。 Avalonia にはテーブルパターンがないため、各セルは名前とヘルプテキストに列と位置を含みます。列幅の変更はマウスでのみ行えます。

ヘルプのトピックを読む

sgcGrid の動作を見る

sgcUI スイートのデモに含まれる sgcGrid:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。

1080p のフレームを数ミリ秒で描画

sgcGrid の QA パフォーマンスゲートの直近の平均値です。列数 12、行数 10 万、表示行数 45 の 1920 x 1080 フレームを、ラスターキャンバスで 60 回描画しました。ゲートは、Win64 ではフレームあたり 16 ms、Win32 では 25 ms を超えると失敗とします。

測定項目結果条件
通常のフレーム3.0 msWin32
通常のフレーム4.6 msWin64
通常のフレーム3.7 msLinux64
点滅と 3 つの書式ルール3.2 msWin32
点滅と 3 つの書式ルール6.8 msWin64
LiveTicker デモ、ワーカースレッドからの書き込み1 秒あたり約 1,000 件の更新60 fps で並べ替え済み、点滅するグリッド

出典: これらの数値を解説しているヘルプのトピック。

sgcGrid の主な利用シーン

トレーディングと市場データのデスク

気配値ボードは、毎秒数百の価格が変わっても読みやすさを保つ必要があります。フィードのスレッドは UpdateRow で書き込み、UI を待つことはありません。変更時の点滅がすべての値動きの方向を示し、テールモードが取引ログを最新の約定に合わせ続けます。sgcGridWS ブリッジを使えば、WebSocket、MQTT、SSE から気配値を読み取れます。

  • リアルタイム更新
  • 変更時の点滅
  • テールモード
  • ライブフィード
LiveTicker デモを実行する

バックオフィスと基幹業務

受注入力、在庫一覧、請求の画面は、データベースの上で動いています。既存の TDataSet をバインドし、ユーザーが顧客別や月別にグループ化してすべてのグループ行で合計を確認し、検証付きでその場で値を修正し、経理部門がグループと SUBTOTAL 数式をそのまま開けるブックをエクスポートできます。

  • DataSet のバインド
  • グループ化と集計
  • その場での編集
  • Excel エクスポート
DataSetGrid デモを実行する

監視、ログ、アラート

運用画面では、終わりのないイベントストリームを表示します。MaxRows でログの上限を設け、書式ルールでエラーを赤く表示し、仮想モードで数百万行のアーカイブを必要に応じて閲覧できます。Linux64 サーバーでは、レンダラーが同じグリッドを PNG または SVG ファイルに書き出し、アラートメールに添付できます。

  • 書式ルール
  • MaxRows とテールモード
  • 仮想モード
  • ヘッドレスの PNG と SVG
LiveFeed デモを実行する

数行で作るリアルタイムグリッド

Delphi、C++ Builder、C# で同じ API を使えます。列を追加し、キー指定で行を追加し、後から任意のスレッドで更新できます。

コードで作る VCL グリッドです。型付きの列、キー指定で追加した行、任意のスレッドからのフィールド名による更新を示します。

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;

ヘルプのトピックを読む →

生成された sgcGrid ヘッダーを使った、C++ Builder での同じグリッドです。

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

ヘルプのトピックを読む →

点滅するセル、マイナス変化のルール、ダークテーマを使った WinForms のグリッドです。

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

ヘルプのトピックを読む →

sgcGrid のデモを実行する

Delphi 向け 15 本(うち 3 本は FireMonkey)、C++ Builder 向け 11 本、WinForms、WPF、Avalonia の .NET 向け 18 本のデモがあります。

LiveTicker

LiveTicker

ワーカースレッドから UpdateRow で毎秒約 1,000 件の価格更新を行い、並べ替え済みのビュー、点滅するセル、マイナス変化の書式ルールを備えています。VCL、FireMonkey、C++ Builder、WinForms、WPF、Avalonia に対応します。

DataSetGrid

DataSetGrid

200 レコードの TClientDataSet に、KeyField、AutoColumns、LiveUpdates を指定した TsgcGridSource_DataSet をバインドし、JSON と CSV のエクスポートとインポートも行います。

GroupAndSummary

GroupAndSummary

10 万件の注文を、グループパネル、Count、Sum、Average の集計、フッター、2 つの固定列を使って、Region と Category でグループ化します。.NET では Grouping という名前です。

FilterAndFind

FilterAndFind

10 万行の売上データに、ファネルのポップアップ、フィルター行、検索パネルを組み合わせ、列チューザー、最適幅、ファイルに保存して読み込み直すレイアウトも備えています。VCL、FireMonkey、C++ Builder、WinForms、WPF、Avalonia に対応します。

BandsAndCells

BandsAndCells

2,000 銘柄を Instrument、Live data、Price、Position のバンドの下に表示し、スパークライン、進捗、画像のセル、複数行の選択、Copy ボタンを備えています。VCL、C++ Builder、WinForms に対応します。

登録版のみ Editing

選択リスト列、Space で切り替えるブール列、マイナスの数量を拒否する OnValidate、OnEditError、OnEdited のログを備えています。さらに sgcEditors の日付、時刻、数値、色、トークンのエディター、OnCreateEditor 経由の TTrackBar、貼り付け、元に戻す、やり直しも試せます。

DataSetEditing

登録版のみ DataSetEditing

製品とカテゴリを 2 つの TClientDataSet に持ち、TDBNavigator と 2 つの TDBEdit がグリッドと同じレコードを共有します。WriteBack、SyncCursor、ルックアップ列、挿入、削除、元に戻すを備えています。VCL、C++ Builder、WinForms(AddLookup を備えた DataTable)に対応します。

TreeAndDetail

登録版のみ TreeAndDetail

組織図のツリーと、TsgcGridDataStore から注文の詳細バンドを取得する顧客一覧です。

登録版のみ ExcelExport

グループ化したグリッドとツリーグリッドを SaveToXLSX で保存し、表計算アプリケーションで開いて、アウトラインと集計が保たれていることを確認できます。

GridAndChart

ダッシュボード上のグリッドタイルとチャートタイルです。TsgcChartDataSource_Table がグリッドの行をプロットします。sgcCharts と sgcDashboard が必要です。

登録版のみ AskYourGrid

TsgcGridAI と AI クエリバーが、ネットワークも API キーも使わずに、自然な言葉の質問から 200 銘柄をフィルター、並べ替え、ハイライトします。TsgcGridAIQuery ブリッジも併用できます。sgcWebSockets が必要です。

登録版のみ LiveFeed

プロセス内の WebSocket サーバーが 50 銘柄の JSON バッチをブロードキャストし、TsgcGridFeedSource_WebSocket がキー指定でグリッドに書き込みます。Delphi と .NET に対応します。

コンパイル済みデモ

sgcUI 全製品のすぐに実行できる実行ファイルです。インストールは不要です。

sgcUI_bin.zip をダウンロード →

sgcGrid が含まれるエディション

sgcGrid は単体でも販売しており、Standard 以上のすべての sgcUI エディションに含まれ、All-Access バンドルにも含まれます。

sgcGrid 単体パッケージ

€199 / 開発者、ソースコード一式、1 年間のアップデート付き。

sgcGrid を購入 → 価格を見る →

sgcUI Standard

sgcGrid、sgcNavigation、sgcToolbar、sgcEditors、€380 から。

Standard を見る →

sgcUI Professional

Standard に加えて sgcCharts、sgcDashboard、sgcGauges、€529 から。

Professional を見る →

sgcUI Enterprise

sgcUI 全 14 製品、€699 から。

Enterprise を見る →

無料の Community 版は NuGet の esegece.sgcGrid.Community です。プロジェクトは Community パッケージか登録版パッケージのどちらか一方を参照し、両方を参照することはできません。

機能Community(無料)登録版
任意のスレッドからのリアルタイム更新、変更時の点滅、テールモード✓✓
書式ルールとテーマ✓✓
並べ替え、フィルター、選択✓✓
グループ化、グループパネル、集計✓✓
列の固定と列幅の変更✓✓
仮想モード✓✓
DataTable のバインド、JSON、CSV✓✓
ヘッドレスの PNG と SVG✓✓
列フィルター、フィルター行、検索パネル✓✓
列チューザー、列の移動、最適幅、レイアウト✓✓
バンド、画像、進捗、スパークラインのセル、複数選択✓✓
グリッドに質問:TsgcGridAI、AI クエリバー、任意の LLM プロバイダー✓✓
その場での編集−✓
双方向の DataTable 編集、貼り付け、元に戻す操作とやり直し、sgcEditors のセルエディター−✓
ツリー行とマスター詳細−✓
Excel エクスポート−✓
ライブフィード、TsgcGridAIQuery、sgcWebSockets AI プロバイダー(sgcGridWS と sgcUICoreWS のブリッジ)−✓

対応フレームワークとプラットフォーム

sgcGrid のコンポーネント

コンポーネントターゲット
TsgcVCLGridDelphi と C++ Builder、VCL(sgcGrid_VCL)
TsgcFMXGridDelphi XE6 以降の FireMonkey、Windows、macOS、iOS、Android 対応(sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererフレームワーク非依存の行ストア、列、書式ルール、レンダラー。Linux64 でも利用できます
TsgcGridAIフレームワーク非依存の自然言語クエリエンジン。すべてのエディションで、Linux64 でも利用できます(sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProvidersgcUICore の AI クエリバーと AI プロバイダー。すべてのエディションで利用できます
TsgcUIAIChatProvidersgcUICoreWS ブリッジ:sgcWebSockets の TsgcAIChat を AI プロバイダーとして使います(登録版)
TsgcGridSource_DataSet, TsgcGridDataStoreTDataSet のバインディングと、マスター詳細バンドの行ストア
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQuerysgcWebSockets と連携する sgcGridWS ブリッジ(登録版)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET、WinForms、WPF、Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET、WinForms、WPF、Avalonia 向けの自然言語クエリと AI クエリバー
ターゲットコンポーネントプラットフォーム
Delphi 7 から 13、VCLTsgcVCLGridWin32、XE2 以降は Win64
Delphi XE6 から 13、FireMonkeyTsgcFMXGridWindows、macOS、iOS、Android
C++ Builder 2007 から 13TsgcVCLGrid, TsgcFMXGrid生成された .hpp ヘッダーと静的ライブラリ
Delphi 10.2 から 13、フレームワーク非依存モデル、書式設定、レンダラー、JSON と CSVLinux64。たとえば、サーバー上でグリッドを画像として描画できます
.NET Framework 4.7.2、.NET 8、9 と 10TsgcWinFormsGrid、WPF、Avalonia のグリッドWinForms、WPF、Avalonia、ヘッドレスの PNG と SVG

よくある質問

はい。グリッドデータの AppendRow、UpdateRow、UpdateCell、DeleteRow はスレッドセーフなので、ワーカースレッドからキー指定で直接行を書き込めます。グリッドは、メインスレッドで 1 秒あたり最大 MaxFPS 回だけ再描画します。リアルタイム更新をご覧ください。

描画されるのは表示されている行だけなので、1 フレームのコストは行数ではなくウィンドウの大きさで決まります。QA ゲートでは、10 万行のグリッドの 1080p フレームを、Win32 で 3.0 ms、Win64 で 4.6 ms と計測しています。別の場所にあるデータには、仮想モードが行を保持せず、スクロールで表示されたときに値を要求します。パフォーマンスをご覧ください。

はい。TsgcGridSource_DataSet は任意の TDataSet からグリッドを作成し、AutoColumns で列を生成し、LiveUpdates を使うと、データセットのすべての Append、Edit、Delete に追従します。KeyField を指定すると、変更された行は再読み込みされずにその場で更新されます。.NET では、同じソースが DataTable を読み取ります。DataSet のバインドをご覧ください。

はい。TsgcVCLGrid は通常の VCL コントロールなので、既存の TStringGrid や TDBGrid と同じフォームに配置できます。TDBGrid の画面は、データセットをそのまま使い、TsgcGridSource_DataSet を追加します。TStringGrid の画面は、AppendRow と UpdateRow でキー指定により行を書き込みます。既存のフォームを自動的に変換する機能はありません。

その場での編集、双方向の DataTable 編集、貼り付け、元に戻す操作とやり直し、sgcEditors のセルエディター、ツリー行、マスター詳細行、Excel エクスポート、sgcGridWS ブリッジです。並べ替え、フィルター、フィルター行と検索パネル、グループ化、集計、列の固定、列チューザー、レイアウト、バンド、画像、進捗、スパークラインのセル、複数選択、書式ルール、仮想モード、JSON と CSV、ヘッドレス出力、TsgcGridAI による「グリッドに質問」は、すべてのエディションに含まれます。エディションをご覧ください。

はい。GroupIndent や GroupPanelHeight などのサイズはデバイス非依存ピクセルで、VCL グリッドはモニターの DPI に合わせて拡大縮小し、Delphi 10.3 以降ではモニターごとに対応します。Theme で utLight と utDark を切り替え、AccentColor で選択と点滅のアクセントカラーを設定します。

sgcGrid のヘルプ

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

今すぐ sgcGrid をお試しください

sgcUI 体験版には、すべての機能を有効にした sgcGrid、sgcUI の他の 13 製品、すべてのデモプロジェクトが含まれます。