Delphi, C++ Builder & .NET Parte do sgcUI

sgcGrid, o grid de dados em tempo real para Delphi, C++ Builder & .NET

Um grid criado para dados que nunca param. Escreva linhas por chave a partir de qualquer thread, veja as células alteradas piscarem em verde ou vermelho e depois agrupe, filtre, edite e exporte as mesmas linhas. Um quadro 1080p de um grid com 100.000 linhas leva 3,0 ms no Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms por quadro 1080p (Win32)Versão .NET Community gratuitaIncluído no sgcUI Standard
sgcGrid com 100.000 pedidos agrupados por Região e depois por Categoria, chips do painel de grupos e totais no rodapé

Tudo o que um grid em tempo real precisa

Dezoito recursos em cinco grupos, cada um ligado ao seu tópico da ajuda.

Dados em tempo real

Feeds que nunca param: preços, telemetria, filas e logs.

Dados em tempo real

Atualize milhares de linhas por segundo a partir de qualquer thread

Um feed de mercado, um barramento de sensores ou uma fila de tarefas pode escrever direto no grid. Cada linha tem uma chave, e uma thread de trabalho atualiza a linha de uma chave pelo nome do campo, sem chamar Synchronize e sem código de bloqueio seu. O grid apenas se marca como sujo na thread que escreve e repinta na thread principal no máximo MaxFPS vezes por segundo.

  • UpdateRow define os campos nomeados de uma chave e insere a linha quando a chave é nova; UpdateCell altera um campo
  • AppendRow e DeleteRow adicionam e removem linhas por chave, a partir de qualquer thread
  • BeginUpdate e EndUpdate transformam um lote em uma única notificação
  • A linha selecionada é encontrada de novo pela sua chave após cada nova ordenação, então nunca some da vista
Ler o tópico da ajuda
Veja cada mudança de relance

Dados em tempo real

Veja cada mudança de relance

Traders e operadores precisam ver o que mudou sem ler todos os números. Com FlashChanges ativado, que é o padrão, uma célula alterada é tingida de verde quando o valor subiu e de vermelho quando caiu, e depois some gradualmente ao longo de FlashDuration milissegundos, 800 por padrão. Para logs e feeds que crescem, o modo tail mantém a linha mais nova à vista e para de acompanhar assim que o usuário rola para cima para ler.

  • FlashUpColor, FlashDownColor e FlashChangedColor; uma cor 0 usa o padrão do tema
  • FlashMode tinge o fundo (fmBackground) ou o texto (fmText)
  • TailMode acompanha a linha mais nova, MaxRows descarta as linhas mais antigas de um log sem fim
  • A seleção é pintada sobre o flash, e o flash sobre as regras de formato
Ler o tópico da ajuda
Dê cor às linhas que pedem atenção

Dados em tempo real

Dê cor às linhas que pedem atenção

Uma fatura vencida, um saldo negativo ou uma tarefa com falha deve se destacar antes que alguém pergunte. As regras de formato comparam uma coluna com um valor usando o tipo de dados dessa coluna: números numericamente, datas como datas, texto sem diferenciar maiúsculas de minúsculas. Uma regra que se aplica define a cor de fundo, a cor do texto ou o negrito na célula ou na linha inteira, e continua funcionando enquanto as atualizações em tempo real mudam os valores por baixo.

  • TsgcGridFormatRules avalia as regras na ordem da coleção, e uma correspondência posterior sobrepõe uma anterior
  • Operadores como gfoLess, gfoBetween, gfoContains e gfoIsEmpty
  • ApplyToRow estiliza todas as células da linha, StopOnMatch encerra a avaliação para uma célula
  • Cores translúcidas tingem a célula sobre o seu fundo, e OnGetCellStyle tem a última palavra
Ler o tópico da ajuda

Dê forma aos dados

Ordene, filtre, agrupe e aninhe grandes conjuntos de linhas.

Agrupe e totalize 100.000 linhas em uma chamada

Dê forma aos dados

Agrupe e totalize 100.000 linhas em uma chamada

Vendas por região, pedidos por mês, tickets por status: os usuários querem totais, não linhas brutas. GroupBy agrupa o grid por uma ou mais colunas, e cada linha de grupo mostra o seu membro, a contagem de linhas e os resumos das suas linhas. Os usuários reagrupam por conta própria arrastando um cabeçalho para o painel de grupos. O agrupamento é somente estado da visualização, então um gráfico vinculado ao grid continua vendo as linhas planas e ordenadas.

  • GroupBy e ClearGrouping por código, ou GroupIndex por coluna
  • ShowGroupPanel adiciona chips de arrastar e soltar; um clique em um chip inverte a ordem dos grupos
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin ou gsuMax, formatado com SummaryFormat
  • GroupSummaries em cada linha de grupo e ShowFooter para os totais gerais
  • Um DisplayFormat de yyyy-mm agrupa as datas por mês
Ler o tópico da ajuda
Ordene, filtre e encontre em big data

Dê forma aos dados

Ordene, filtre e encontre em big data

Encontrar um cliente entre milhares deve levar poucas teclas. FilterText mantém as linhas cujo texto formatado contém as palavras digitadas em qualquer coluna visível, e um handler OnFilterRow acrescenta as suas próprias regras por cima. Um clique em um cabeçalho ordena, Ctrl e clique adiciona uma coluna a uma ordenação por várias colunas, e a ordenação é estável. Uma coluna que muda o tempo todo, mas não está ordenada nem filtrada, não custa nenhuma reordenação.

  • SortOrder e SortIndex por coluna, OnSortChange após cada mudança
  • FilterText não diferencia maiúsculas de minúsculas e lê o texto como o usuário o vê
  • OnFilterRow para lógica personalizada, InvalidateView quando essa lógica muda
  • SelectionMode seleciona linhas ou células, e Ctrl+C as copia como texto separado por tabulações
  • Valores nulos, vazios e não conversíveis sempre são ordenados primeiro
Ler o tópico da ajuda
Mostre hierarquias com linhas em árvore e faixas de detalhe

Dê forma aos dados Somente Registrada

Mostre hierarquias com linhas em árvore e faixas de detalhe

Um organograma ou uma lista de materiais fica melhor como árvore, e os pedidos de um cliente ficam melhor logo abaixo do cliente. As linhas em árvore organizam as linhas em profundidade a partir de uma coluna de chave e de uma coluna pai. As faixas de detalhe abrem um pequeno grid de linhas relacionadas sob qualquer linha mestre, com cabeçalho, rolagem e ordenação próprios, preenchido por um TsgcGridDataStore, outro grid ou um evento.

  • Tree.KeyField e Tree.ParentField ativam a árvore; ExpandNode e CollapseNode funcionam por código
  • O estado expandido é mantido por chave, então sobrevive a ordenações, filtros e atualizações em tempo real
  • Detail.MasterKeyField e Detail.DetailKeyField ligam uma faixa à sua origem, OnGetDetailData a preenche sob demanda
  • As faixas funcionam nos modos plano, agrupado e em árvore, e as células de detalhe alteradas piscam como no grid mestre

Não está na versão .NET Community, que mantém o agrupamento.

Ler o tópico da ajuda
Mantenha as colunas de chave à vista enquanto o resto rola

Dê forma aos dados

Mantenha as colunas de chave à vista enquanto o resto rola

Grids largos perdem o contexto quando o símbolo ou o nome do cliente sai da tela ao rolar. FrozenColumns mantém as primeiras colunas visíveis no lugar enquanto as outras rolam na horizontal, e o cabeçalho, o rodapé e os resumos de grupo seguem a mesma divisão. Os usuários redimensionam colunas arrastando a borda do cabeçalho, e o renderizador headless usa a mesma configuração, então as imagens exportadas coincidem com a tela. As setas de grupo à esquerda também nunca rolam.

  • FrozenColumns conta colunas visíveis, e uma linha de um pixel marca a borda congelada
  • Os movimentos pelo teclado trazem uma coluna rolada para a vista, à direita da borda congelada
  • FrozenWidth do renderizador retorna a largura que não rola
  • MinWidth limita um redimensionamento, OnColumnResized informa a nova largura
  • Parte de todas as edições, inclusive da versão .NET Community gratuita
  • Da direita para a esquerda para árabe e hebraico: a primeira coluna fica à direita, as colunas congeladas ficam na borda direita, e a exportação XLSX de um grid da direita para a esquerda grava uma planilha da direita para a esquerda
Ler o tópico da ajuda
Demo FilterAndFind: botões de funil, uma linha de filtro com (2 values) e > 500, e o painel de localização destacando Nakatomi

Dê forma aos dados

Filtre como em uma planilha e encontre qualquer valor

Os usuários esperam o funil que conhecem do Excel. ShowFilterButtons coloca um no cabeçalho de cada coluna: ele abre um popup com os valores distintos da coluna e a contagem de linhas, uma caixa de busca e até duas condições tipadas unidas por And ou Or. ShowFilterRow adiciona abaixo do cabeçalho uma linha que filtra uma coluna enquanto o usuário digita, e Ctrl+F abre o painel de localização, que destaca o texto em todas as células e salta de uma ocorrência para outra.

  • Cada coluna tem um único filtro, editado pelo popup, pela linha de filtro e por Column.Filter no código, então os três sempre concordam
  • As listas de valores de duas colunas filtradas se restringem mutuamente, e um funil preenchido mostra quais colunas filtram
  • FilterRowOperator por coluna: igual a, maior que, contém, começa com, está em branco e mais
  • FindText, FindNext e FindPrevious funcionam a partir do código, e FindOnlyMatches oculta as linhas sem ocorrência
  • Os filtros de coluna se aplicam junto com FilterText e OnFilterRow, e OnFilterChange informa cada mudança

Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia, inclusive a versão .NET Community gratuita.

Ler o tópico da ajuda

Dê forma aos dados

Deixe os usuários organizarem as colunas e mantenha assim

Um clique com o botão direito no cabeçalho de uma coluna abre um menu que ordena, agrupa, ajusta as larguras, filtra e abre o seletor de colunas, um popup com uma caixa de seleção por coluna. Os usuários arrastam um cabeçalho para mover a coluna, e um clique duplo na borda do cabeçalho ajusta a largura ao título e às células. SaveLayoutToString e LoadLayoutFromString guardam tudo como um texto JSON curto, de modo que a grade abre do jeito que o usuário a deixou.

  • HeaderMenu, ColumnMoving e BestFitOnDblClick vêm ativados por padrão, e um PopupMenu atribuído continua tendo prioridade
  • ShowColumnChooser abre o seletor a partir de um botão ou de um item de menu seu
  • Uma coluna movida permanece do seu lado das colunas congeladas e dentro da sua banda, e OnColumnMoved informa o movimento
  • BestFitColumn e BestFitColumns medem o cabeçalho e até 1.000 linhas de amostra, então um milhão de linhas custa quase o mesmo que mil
  • O layout guarda a ordem das colunas, as larguras, a visibilidade, a ordenação, o agrupamento, os filtros de coluna, as bandas e as opções do painel; SaveLayoutToFile e LoadLayoutFromFile usam um arquivo

Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia, inclusive a versão .NET Community gratuita.

Ler o tópico da ajuda
Demo BandsAndCells: bandas Instrument, Live data, Price e Position, sparklines de área, barras de progresso, ícones de status e três linhas selecionadas

Dê forma aos dados

Cabeçalhos de banda, células ricas e seleção de várias linhas

Uma tela de trading fica mais legível quando Last, Change e Trend estão sob um mesmo título Price. Bands adiciona títulos sobre grupos de colunas, em quantos níveis você precisar, e cada coluna informa sua banda em Band. CellKind desenha uma célula como imagem, barra de progresso ou sparkline, enquanto a célula mantém seu valor simples, então a ordenação, o agrupamento e a exportação continuam vendo o número.

  • Bands.Add recebe um título e uma banda pai, e as linhas de banda se empilham acima do cabeçalho da coluna
  • gcdProgress usa ProgressMin e ProgressMax; gcdSparkline desenha um gráfico de linha, área ou barras a partir de uma lista de números
  • gcdImage desenha uma imagem de CellImages, que a grade preenche a partir de qualquer lista de imagens atribuída a Images
  • SelectionMode gsmMultiRow seleciona qualquer conjunto de linhas com Ctrl e Shift, gsmCellRange um intervalo de células, e Ctrl+A seleciona tudo
  • A seleção é guardada pela chave da linha, então sobrevive à ordenação, à filtragem e às atualizações em tempo real, e Ctrl+C a copia como texto separado por tabulações

Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia, inclusive a versão .NET Community gratuita.

Ler o tópico da ajuda

Edite e exporte

Altere os dados, sincronize com o seu banco de dados e entregue-os adiante.

Edite e exporte Somente Registrada

Edite no local com validação

Os usuários de back office esperam corrigir uma quantidade ou um status direto no grid. Defina ReadOnly como False e F2, Enter, um caractere digitado ou um duplo clique abre um editor sobre a célula, ou um combo box quando a coluna tem um PickList. O texto digitado é convertido para o tipo de dados da coluna, OnValidate pode alterar ou rejeitar o valor, e o resultado é gravado com UpdateCell, então a ordenação e o flash continuam valendo.

  • Editable por coluna, e OnBeforeEdit pode recusar uma edição
  • Enter confirma, Tab vai para a próxima célula editável, Escape cancela; StartEdit, CommitEdit e CancelEdit fazem o mesmo por código
  • OnEditError mantém o editor aberto diante de uma entrada inválida, OnEdited informa o valor antigo e o novo

Não está na versão .NET Community.

Ler o tópico da ajuda
Vincule qualquer TDataSet em poucas linhas

Edite e exporte

Vincule qualquer TDataSet em poucas linhas

O código de banco de dados existente continua funcionando: um TsgcGridSource_DataSet preenche o grid a partir de uma consulta FireDAC, um TClientDataSet ou qualquer outro TDataSet. Defina o seu Grid e o seu DataSet, deixe-o Active, e as linhas aparecem. Com um KeyField, o grid é sincronizado em vez de recarregado, então as linhas alteradas são atualizadas no local e piscam. Com LiveUpdates ativado, cada Append, Edit e Delete confirmado chega ao grid sem código extra.

  • AutoColumns cria as colunas a partir dos campos do dataset
  • Com um KeyField, as chaves novas são adicionadas e as ausentes são excluídas
  • O dataset é percorrido com DisableControls e o seu registro atual é restaurado
  • JSON e CSV também: GridLoadFromJSONFile, GridSaveToCSVFile e o restante de sgcGrid_IO
  • No .NET, a mesma classe lê um DataTable
Ler o tópico da ajuda

Edite e exporte Somente Registrada

Entregue aos usuários um arquivo Excel de verdade

A contabilidade quer os números no Excel, não uma captura de tela. SaveToXLSX grava o grid como uma planilha Office Open XML em um arquivo ou em um stream, sem biblioteca externa. A planilha mantém o que o usuário vê: as colunas visíveis na ordem de exibição com suas larguras e formatos numéricos, o cabeçalho congelado, os grupos e os níveis da árvore como uma estrutura de tópicos recolhível, e os totais dos grupos como fórmulas SUBTOTAL.

  • SaveToXLSX recebe um nome de arquivo ou um stream e um nome de planilha opcional
  • Números continuam números, datas viram datas do Excel, e um DisplayFormat vira o formato numérico da célula
  • Os grupos recolhidos abrem recolhidos no Excel, como o grid os mostrava
  • Chame-o na thread da interface; as faixas de detalhe não são exportadas
  • Todas as linhas de grupo e de visualização são gravadas, esteja o que estiver recolhido

Não está na versão .NET Community, que mantém a exportação para JSON e CSV.

Ler o tópico da ajuda
Demo DataSetEditing: um TDBNavigator e dois TDBEdit sobre os mesmos registros da grade, com uma coluna de lookup de categoria

Edite e exporte Somente Registrada

Edite o DataSet pela grade

Com WriteBack ativado, um TsgcGridSource_DataSet grava cada edição da grade no registro da sua linha. Ele localiza o registro por KeyField e envia o valor. Quando o envio falha, por exemplo em uma verificação de BeforePost, o registro é cancelado e a célula mantém o valor anterior. SyncCursor mantém juntos o registro atual e a linha com foco, de modo que um TDBNavigator e controles TDBEdit sobre o mesmo dataset acompanham a grade, e a grade os acompanha.

  • AllowInsert: Ins acrescenta e envia um registro, e OnNewRecord do dataset preenche os valores padrão
  • AllowDelete: Ctrl+Del exclui as linhas selecionadas e seus registros depois que OnBeforeDelete concorda
  • Os campos de lookup são editados como uma lista de opções dos resultados do lookup, e a chave correspondente é gravada
  • OnEditError mostra a mensagem do dataset; os valores colados e o desfazer usam o mesmo caminho de gravação

Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia; não está na versão .NET Community. No .NET a fonte grava de volta em um DataTable, AddLookup adiciona as colunas de lookup e SyncCursor existe apenas no Delphi.

Ler o tópico da ajuda
Demo Editing no tema escuro, com um seletor de data aberto na coluna Date

Edite e exporte Somente Registrada

Seletores de data, colar do Excel, desfazer e refazer

Cada coluna escolhe o controle que a edita. EditorKind escolhe um seletor de data, de hora ou de data e hora, um spin edit, um seletor de cor ou um editor de tokens do sgcEditors, e o padrão é escolhido pelo tipo de dado da coluna. Ctrl+V cola um bloco copiado do Excel: cada valor é convertido e validado antes de qualquer gravação, e toda a colagem é um único passo de desfazer. Ctrl+Z e Ctrl+Y desfazem e refazem edições e colagens.

  • OnCreateEditor coloca em uma célula qualquer controle seu, por exemplo um TTrackBar
  • PasteText e PasteFromClipboard funcionam a partir do código, e OnBeforePaste pode alterar ou recusar o texto
  • Um valor que não converte, ou que OnValidate rejeita, interrompe a colagem antes de qualquer gravação
  • O desfazer trabalha por chave de linha e campo, então encontra suas linhas depois de ordenar e filtrar, e mantém um valor que uma atualização em tempo real alterou desde então
  • UndoLimit guarda os últimos 100 passos; Undo, Redo e CanUndo funcionam a partir do código

Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia; não está na versão .NET Community.

Ler o tópico da ajuda

Escale e conecte

Milhões de linhas, feeds em tempo real e linguagem natural.

Navegue por milhões de linhas sem carregá-las

Escale e conecte

Arquivos de log, históricos de sensores e resultados de consultas que já vivem em outro lugar não precisam ser copiados para a memória. No modo virtual, o grid não armazena linhas: VirtualRowCount diz quantas existem, e OnGetValue retorna um valor quando a sua linha rola para a vista. Somente as linhas visíveis são pintadas, então um grid de um milhão de linhas custa o mesmo que um de cinquenta. Altere a contagem conforme a fonte cresce.

  • Virtual e VirtualRowCount nos dados do grid, OnGetValue fornece as células
  • Os resumos do rodapé também leem os seus valores por OnGetValue
  • As linhas virtuais não têm chaves, então mantêm a ordem da fonte, sem ordenação, filtro nem flash
  • Para feeds que crescem sem fim, MaxRows com TailMode é a alternativa com chaves
Ler o tópico da ajuda

Escale e conecte

Deixe os usuários consultarem o grid em linguagem natural

Nem todo usuário quer montar filtros. O TsgcGridAI transforma uma pergunta como price greater than 100 sort by volume descending highlight change less than 0 em filtros, ordenações e destaques de linha no grid, e a barra de consulta de IA dá aos usuários um lugar para digitá-la. Sem um provedor atribuído, um parser baseado em regras responde localmente, sem rede e sem chave de API. Atribua um provedor e qualquer LLM responde no lugar: o TsgcUIAIEventProvider entrega cada solicitação ao seu próprio código, e o TsgcUIAIChatProvider usa o componente TsgcAIChat do sgcWebSockets. Apenas o catálogo de campos é enviado, os nomes, legendas, tipos e alguns valores de exemplo das colunas, nunca as linhas.

  • A barra de consulta: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar e TsgcAvaloniaAIQueryBar, com perguntas recentes, sugestões, Cancelar e Desfazer
  • Os filtros passam por OnFilterRow, os destaques viram regras de formato ApplyToRow
  • Cada resposta substitui a anterior, e Undo volta um passo
  • LastExplanation informa o que foi aplicado e, quando o provedor falha, o parser baseado em regras responde
  • A ponte sgcGridWS mantém o TsgcGridAIQuery com o TsgcHTMLAIAssistant e traz TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT e TsgcGridFeedSource_SSE, que gravam mensagens JSON no grid por chave

Todas as edições, inclusive a Community, em VCL, FireMonkey, WinForms, WPF e Avalonia. O provedor do sgcWebSockets e a ponte sgcGridWS exigem o sgcWebSockets e uma edição Registrada.

Ler o tópico da ajuda

Acessibilidade

UI Automation para leitores de tela, o teclado e o alto contraste, sem nenhuma configuração.

Acessibilidade

Uma grade exposta como uma tabela real

O sgcGrid expõe seu conteúdo ao Microsoft UI Automation como uma tabela com cabeçalhos de coluna, linhas e células, a API que leitores de tela como o Narrator e o NVDA usam. Apenas as linhas visíveis são construídas, e as contagens de linhas e colunas são sempre as totais, portanto uma grade com um milhão de linhas não custa nada a mais.

  • A célula com foco, a seleção, a ordenação, o filtro, o agrupamento e as linhas em árvore são expostos pelos padrões Grid, Table e Selection
  • Setas, Home, End, Page Up e Page Down movem a célula com foco, Shift estende a seleção, Ctrl+Space alterna a linha ou a célula e F2 ou Enter edita
  • Alt+Down abre o popup do filtro, Alt+Shift+Left e Alt+Shift+Right movem a coluna, Ctrl+Shift+G agrupa pela coluna com foco e Ctrl+Shift+U remove esse agrupamento
  • Um anel de foco visível, e sob um tema de alto contraste do Windows a grade é pintada com as cores do sistema

A acessibilidade vem ativada por padrão em todas as edições, inclusive a edição Community gratuita, no VCL em todas as versões do Delphi e do C++Builder do Delphi 7 ao Delphi 13, no FireMonkey no Windows e no WinForms, WPF e Avalonia. No Delphi e no C++Builder, AccessibleName e AccessibleDescription definem o nome e a descrição expostos ao UI Automation, e no .NET o nome acessível e o texto de ajuda padrão de cada framework fazem o mesmo. Veja os relatórios de conformidade de acessibilidade. No Avalonia, que não tem os padrões de tabela, cada célula leva sua coluna e sua posição no nome e no texto de ajuda. As larguras das colunas são redimensionadas somente com o mouse.

Leia o tópico da ajuda

Veja o sgcGrid em ação

sgcGrid dentro das demos da suíte sgcUI: aplicações completas que rodam offline com dados simulados integrados.

Um quadro 1080p em poucos milissegundos

Últimas médias medidas do gate de desempenho de QA do sgcGrid: um quadro de 1920 x 1080 com 12 colunas, 100.000 linhas e 45 linhas visíveis, renderizado 60 vezes no canvas raster. O gate falha acima de 16 ms por quadro no Win64 e de 25 ms no Win32.

MediçãoResultadoCondições
Quadro simples3,0 msWin32
Quadro simples4,6 msWin64
Quadro simples3,7 msLinux64
Flash e 3 regras de formato3,2 msWin32
Flash e 3 regras de formato6,8 msWin64
Demo LiveTicker, gravações da thread de trabalhoCerca de 1.000 atualizações por segundoGrid ordenado e com flash a 60 fps

Fonte: o tópico da ajuda que documenta estes números.

Quem cria com o sgcGrid

Mesas de trading e dados de mercado

Um quadro de cotações precisa continuar legível enquanto centenas de preços mudam a cada segundo. As threads de feed escrevem com UpdateRow e nunca esperam pela interface, o flash na mudança mostra a direção de cada movimento, e o modo tail mantém o log de negócios na execução mais recente. A ponte sgcGridWS pode ler as cotações por WebSocket, MQTT ou SSE.

  • Atualizações em tempo real
  • Flash na mudança
  • Modo tail
  • Feeds em tempo real
Execute o demo LiveTicker

Back office e sistemas corporativos

As telas de entrada de pedidos, listas de estoque e faturamento vivem em um banco de dados. Vincule o TDataSet existente, deixe os usuários agruparem por cliente ou mês com totais em cada linha de grupo, corrigirem valores no local com validação e exportarem uma planilha que a contabilidade abre com os grupos e as fórmulas SUBTOTAL intactos.

  • Vinculação a DataSet
  • Agrupamento e resumos
  • Edição no local
  • Exportação para Excel
Execute o demo DataSetGrid

Monitoramento, logs e alertas

As telas de operações mostram fluxos de eventos que nunca terminam. MaxRows limita o log, as regras de formato pintam os erros de vermelho, e o modo virtual navega por um arquivo de milhões de linhas sob demanda. Em um servidor Linux64, o renderizador grava o mesmo grid em um arquivo PNG ou SVG para um e-mail de alerta.

  • Regras de formato
  • MaxRows e modo tail
  • Modo virtual
  • PNG e SVG headless
Execute o demo LiveFeed

Um grid em tempo real em poucas linhas

A mesma API em Delphi, C++ Builder e C#: adicione colunas, anexe linhas por chave e atualize-as depois a partir de qualquer thread.

Um grid VCL em código: colunas tipadas, linhas anexadas por chave e uma atualização por nome de campo a partir de qualquer 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;

Ler o tópico da ajuda →

O mesmo grid no C++ Builder com os headers gerados do sgcGrid.

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

Ler o tópico da ajuda →

Um grid WinForms com células que piscam, uma regra de mudança negativa e o tema escuro.

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

Ler o tópico da ajuda →

Execute os demos do sgcGrid

15 demos para Delphi, três deles em FireMonkey, 11 para C++ Builder e 18 para .NET em WinForms, WPF e Avalonia.

LiveTicker

LiveTicker

Cerca de 1.000 atualizações de preço por segundo a partir de uma thread de trabalho com UpdateRow, uma visualização ordenada, células que piscam e uma regra de formato para variações negativas. VCL, FireMonkey, C++ Builder, WinForms, WPF e Avalonia.

DataSetGrid

DataSetGrid

Um TsgcGridSource_DataSet vinculado a um TClientDataSet de 200 registros com KeyField, AutoColumns e LiveUpdates, além de exportação e importação de JSON e CSV.

GroupAndSummary

GroupAndSummary

100.000 pedidos agrupados por Region e Category com o painel de grupos, resumos de Count, Sum e Average, um rodapé e duas colunas congeladas. No .NET se chama Grouping.

FilterAndFind

FilterAndFind

100.000 linhas de vendas com os popups de funil, a linha de filtro e o painel de localização, além do seletor de colunas, do ajuste automático e de um layout salvo em arquivo e carregado de volta. VCL, FireMonkey, C++ Builder, WinForms, WPF e Avalonia.

BandsAndCells

BandsAndCells

2.000 instrumentos sob as bandas Instrument, Live data, Price e Position, com células de sparkline, progresso e imagem, seleção de várias linhas e um botão Copy. VCL, C++ Builder e WinForms.

Somente Registrada Editing

Uma coluna com lista de opções, uma coluna booleana alternada com Espaço, OnValidate rejeitando quantidades negativas, OnEditError e um log de OnEdited, além de editores de data, hora, spin, cor e token do sgcEditors, um TTrackBar por meio de OnCreateEditor, colar, desfazer e refazer.

DataSetEditing

Somente Registrada DataSetEditing

Produtos e categorias em dois TClientDataSets, com um TDBNavigator e dois TDBEdit sobre os mesmos registros: WriteBack, SyncCursor, uma coluna de lookup, inserção, exclusão e desfazer. VCL, C++ Builder e WinForms (um DataTable com AddLookup).

TreeAndDetail

Somente Registrada TreeAndDetail

Uma árvore de organograma e clientes com uma faixa de detalhe de pedidos preenchida por um TsgcGridDataStore.

Somente Registrada ExcelExport

Um grid agrupado e um grid em árvore salvos com SaveToXLSX e abertos no aplicativo de planilhas, com estrutura de tópicos e resumos mantidos.

GridAndChart

Um tile de grid e um tile de gráfico em um dashboard: um TsgcChartDataSource_Table plota as linhas do grid. Exige sgcCharts e sgcDashboard.

Somente Registrada AskYourGrid

O TsgcGridAI e a barra de consulta de IA filtram, ordenam e destacam 200 ações a partir de perguntas em linguagem natural, sem rede e sem chave de API, junto com a ponte TsgcGridAIQuery. Exige o sgcWebSockets.

Somente Registrada LiveFeed

Um servidor WebSocket no mesmo processo transmite lotes JSON de 50 símbolos, e um TsgcGridFeedSource_WebSocket os grava no grid por chave. Delphi e .NET.

Demos compilados

Executáveis prontos para rodar de todos os produtos sgcUI, sem nada para instalar.

Baixar sgcUI_bin.zip →

Onde o sgcGrid está incluído

O sgcGrid é vendido isoladamente, faz parte de todas as edições do sgcUI a partir da Standard e está no pacote All-Access.

sgcGrid pacote individual

€199 / desenvolvedor, código-fonte completo, 1 ano de atualizações.

Comprar o sgcGrid → Ver preços →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar e sgcEditors, a partir de €380.

Ver Standard →

sgcUI Professional

Standard mais sgcCharts, sgcDashboard e sgcGauges, a partir de €529.

Ver Professional →

sgcUI Enterprise

Todos os 14 produtos sgcUI, a partir de €699.

Ver Enterprise →

A edição Community gratuita é o esegece.sgcGrid.Community no NuGet. Um projeto referencia os pacotes Community ou os Registrados, nunca os dois.

RecursoCommunity (gratuita)Registrada
Atualizações em tempo real a partir de qualquer thread, flash na mudança, modo tail✓✓
Regras de formato e temas✓✓
Ordenação, filtro e seleção✓✓
Agrupamento, painel de grupos e resumos✓✓
Colunas congeladas e redimensionamento de colunas✓✓
Modo virtual✓✓
Vinculação a DataTable, JSON e CSV✓✓
PNG e SVG headless✓✓
Filtros de coluna, linha de filtro e painel de localização✓✓
Seletor de colunas, reordenação de colunas, ajuste automático e layouts✓✓
Bandas, células de imagem, progresso e sparkline, seleção múltipla✓✓
Pergunte ao grid: TsgcGridAI, a barra de consulta de IA e qualquer provedor de LLM✓✓
Edição no local−✓
Edição bidirecional de DataTable, colar, desfazer e refazer, editores de célula do sgcEditors−✓
Linhas em árvore e mestre-detalhe−✓
Exportação para Excel−✓
Feeds em tempo real, TsgcGridAIQuery e o provedor de IA do sgcWebSockets (pontes sgcGridWS e sgcUICoreWS)−✓

Frameworks e plataformas suportados

Componentes do sgcGrid

ComponenteDestino
TsgcVCLGridDelphi e C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey from XE6, on Windows, macOS, iOS e Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererArmazenamento de linhas, colunas, regras de formato e renderizador independentes de framework, também no Linux64
TsgcGridSource_DataSet, TsgcGridDataStoreVinculação a TDataSet e o armazenamento de linhas das faixas mestre-detalhe
TsgcGridAIMecanismo de consulta em linguagem natural independente de framework, em todas as edições e também no Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderBarra de consulta de IA e provedor de IA do sgcUICore, em todas as edições
TsgcUIAIChatProviderPonte sgcUICoreWS: o TsgcAIChat do sgcWebSockets como provedor de IA (edição Registrada)
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryPonte sgcGridWS com o sgcWebSockets (edição Registrada)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF e Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, consultas em linguagem natural e a barra de consulta de IA para WinForms, WPF e Avalonia
DestinoComponentePlataformas
Delphi 7 a 13, VCLTsgcVCLGridWin32, e Win64 a partir do XE2
Delphi XE6 a 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS e Android
C++ Builder 2007 a 13TsgcVCLGrid, TsgcFMXGridHeaders .hpp gerados e bibliotecas estáticas
Delphi 10.2 a 13, independente de frameworkModelo, formatação, renderizador, JSON e CSVLinux64, por exemplo para renderizar imagens do grid em um servidor
.NET Framework 4.7.2, .NET 8, 9 e 10TsgcWinFormsGrid, grids WPF e AvaloniaWinForms, WPF, Avalonia, PNG e SVG headless

Perguntas frequentes

Sim. AppendRow, UpdateRow, UpdateCell e DeleteRow dos dados do grid são thread safe, então uma thread de trabalho escreve linhas por chave diretamente. O grid repinta na thread principal no máximo MaxFPS vezes por segundo. Veja Atualizações em tempo real.

Somente as linhas visíveis são pintadas, então o custo de um quadro depende da janela, não da quantidade de linhas. O gate de QA mede um quadro 1080p de um grid de 100.000 linhas em 3,0 ms no Win32 e 4,6 ms no Win64. Para dados que vivem em outro lugar, o modo virtual não armazena linhas e pede valores conforme rolam para a vista. Veja Desempenho.

Sim. O TsgcGridSource_DataSet preenche um grid a partir de qualquer TDataSet, cria as colunas com AutoColumns e, com LiveUpdates, acompanha cada Append, Edit e Delete do dataset. Com um KeyField, as linhas alteradas são atualizadas no local em vez de recarregadas. No .NET, a mesma fonte lê um DataTable. Veja Vinculação a DataSet.

Sim. O TsgcVCLGrid é um controle VCL comum, então pode ficar em um formulário ao lado de um TStringGrid ou TDBGrid existente. Uma tela com TDBGrid mantém o seu dataset e adiciona um TsgcGridSource_DataSet; uma tela com TStringGrid escreve as suas linhas com AppendRow e UpdateRow por chave. Não há conversão automática dos formulários existentes.

Edição no local, edição bidirecional de DataTable, colar, desfazer e refazer, os editores de célula do sgcEditors, linhas em árvore, linhas mestre-detalhe, exportação para Excel e a ponte sgcGridWS. Ordenação, filtro, a linha de filtro e o painel de localização, agrupamento, resumos, colunas congeladas, o seletor de colunas, layouts, bandas, células de imagem, progresso e sparkline, seleção múltipla, regras de formato, modo virtual, JSON e CSV, a saída headless e o Pergunte ao grid com TsgcGridAI estão em todas as edições. Veja Edições.

Sim. Tamanhos como GroupIndent e GroupPanelHeight são pixels independentes de dispositivo, e o grid VCL os dimensiona de acordo com o DPI do seu monitor, por monitor a partir do Delphi 10.3. Theme alterna entre utLight e utDark, e AccentColor define a cor de destaque da seleção e do flash.

Ajuda do sgcGrid

3,000+Desenvolvedores
20+Anos
761+Componentes
30+Integrações de API
5Plataformas
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Experimente o sgcGrid hoje

A avaliação do sgcUI inclui o sgcGrid com todos os recursos liberados, os outros 13 produtos sgcUI e todos os projetos de demonstração.