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

Vinte e três recursos em seis 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
  • As regras definem itálico, sublinhado e tachado além de negrito, e OnGetCellFont define o estilo e o tamanho da fonte de qualquer célula
  • AddIconSet coloca setas, círculos, bandeiras ou marcas de seleção em uma coluna a partir de dois limites, e uma regra pode mostrar um ícone ou uma imagem sua
Ler o tópico da ajuda

Dê forma aos dados

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

Dados em tempo real

Uma lista de alarmes ISA-18.2 para telas HMI

Uma tela de operador precisa de um só lugar que liste todos os alarmes, mostre quais ainda aguardam reconhecimento e deixe o operador agir sobre eles. O modelo de alarmes guarda os alarmes com os estados ISA-18.2 e as prioridades de 1 a 4, e o vínculo de alarmes os escreve em uma grade, uma linha por tag, com a cor da prioridade e linhas piscantes para os alarmes ainda não reconhecidos. A aplicação dispara e limpa os alarmes a partir dos seus próprios limites, e o operador os reconhece, suspende e retoma pelo menu de contexto.

  • TsgcGridAlarmModel: RaiseAlarm, ClearAlarm, Acknowledge, AcknowledgeAll, Shelve, Unshelve
  • Seis estados: ativo não reconhecido, ativo reconhecido, retorno ao normal não reconhecido, normal, suspenso e suprimido
  • FilterPriorities, FilterStates e FilterText, e exportação como JSON ou CSV
  • TsgcGridAlarmLink e TsgcVCLGridAlarmMenu, também para FireMonkey e, no .NET, para WinForms, WPF e Avalonia

O modelo, o vínculo e os menus estão em todas as edições, inclusive a Community. O log de reconhecimento com Log e OnLog é da edição Registrada. A lista de alarmes faz parte do Pacote HMI do sgcUI.

Ler o tópico da ajuda
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
Mostre as mesmas linhas como cartões

Dê forma aos dados Somente Registrada

Mostre as mesmas linhas como cartões

Uma lista de contatos, um catálogo de produtos ou uma fila de chamados costuma ficar melhor como cartões do que como tabela. Com ViewStyle definido como gvsCard, o grid desenha cada linha como um cartão: uma barra de título opcional, uma imagem opcional e uma linha por coluna visível com o seu título e o seu valor. Os cartões mostram as mesmas linhas da tabela, então ordenação, filtros, painel de localização, seleção, edição e modo servidor funcionam nas duas visões, e uma propriedade alterna entre elas em tempo de execução.

  • CardOptions define o CaptionField, o ImageField acima ou ao lado dos campos, o CardWidth e o número de cartões por faixa
  • Todos os cartões têm o mesmo tamanho, então a visão de cartões pagina um grid em modo servidor de milhões de linhas como a tabela, com cartões provisórios para as linhas ainda a caminho
  • Os valores são pintados como células: regras de formato, células de progresso, tag, link e sparkline, correspondências da localização e o flash ao mudar
  • As setas movem entre cartões, Tab move entre campos, F2 edita um campo, e um clique com o botão direito no título de um campo abre o menu da coluna para ordenar e filtrar sem o cabeçalho
  • Da direita para a esquerda, impressão e leitores de tela funcionam na visão de cartões, e o layout salvo mantém a visão

A visão de cartões não agrupa e não desenha cabeçalho de coluna, linha de filtro nem rodapé. Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia, não na versão .NET Community.

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
  • As colunas de data filtram por período: hoje, ontem, esta semana ou a passada, este mês ou o passado, este ano ou o passado, e os últimos N dias, com o início da semana em FirstDayOfWeek

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
  • AutoSaveLayout salva o layout quando a grade é fechada e o restaura na próxima execução, e Redefinir layout no menu do cabeçalho traz de volta as colunas de tempo de design
  • AutoFitColumns faz as colunas preencherem a largura da grade, e MaxWidth limita uma coluna quando ela é redimensionada ou ajustada

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
  • gcdTags mostra vários chips coloridos em uma célula a partir de um texto como "Urgent, Pending review", com TagColors e OnGetTagStyle para cores próprias
  • gcdImage desenha uma imagem de CellImages, que a grade preenche a partir de qualquer lista de imagens atribuída a Images
  • TrueValue e FalseValue transformam uma coluna que armazena valores como "S" e "N" em caixas de seleção, e gcdLink mostra um link que aciona OnLinkClick
  • HeaderLines, RowLines e WordWrap mostram títulos e textos de célula em várias linhas, e HeaderImageIndex e HeaderButton colocam uma imagem e um botão no cabeçalho de uma coluna
  • ShowTruncatedHints mostra o texto completo de uma célula ou título cortado como dica, e OnGetCellHint define a sua própria dica por célula
  • 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
  • RowHeader adiciona uma faixa com o indicador de registro, os números de linha e uma caixa de seleção por linha, e SelectionColor e SelectionTextColor definem as cores da seleção
  • RowDragMode arrasta as linhas selecionadas para outro controle e, na VCL, para outros aplicativos como o Excel

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
  • As imagens armazenadas em campos BLOB aparecem em colunas gcdImage, e ImagePreview mostra uma cópia maior quando o mouse repousa sobre a célula
  • ApplyFilter faz o DataSet manter apenas as linhas que a grade mostra, e OnApplySort repassa a ordenação da grade como nomes de campos para a sua consulta
  • Na VCL, o comando Import columns from DB grid do menu de contexto da grade copia as colunas, o vínculo com o DataSet e os eventos de um TDBGrid em tempo de design
  • 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

Edite e exporte Somente Registrada

Trabalhe no grid como em uma planilha leve

O comercial envia uma planilha e quer uma simulação rápida, não mais uma ida e volta pelo Excel. Com ExcelMode definido como True, o grid se comporta como uma planilha leve: os usuários selecionam um intervalo, arrastam a alça de preenchimento para continuar uma série, digitam fórmulas que começam com =, formatam células e trabalham em várias planilhas. LoadFromXLSX abre a própria planilha, a partir de um arquivo ou de um stream, sem biblioteca externa e sem o Excel instalado.

  • Seleção de intervalo: arraste um retângulo, amplie-o com Shift+setas e Ctrl+C o copia
  • A alça de preenchimento continua séries de números e datas, copia texto e desloca as referências relativas das fórmulas; cada preenchimento é um passo de desfazer e OnBeforeFill pode vetá-lo
  • Fórmulas com + - * / ^ &, comparações, referências A1, $A$1 e A1:B5, e SUM, AVERAGE, MIN, MAX, COUNT, IF, ROUND e ABS
  • Os erros aparecem como #DIV/0!, #REF!, #NAME?, #VALUE! e #CIRC! para uma referência circular; os valores são recalculados na edição, e a ordenação, os filtros e os resumos usam os valores calculados
  • Formatação por célula: negrito, itálico, sublinhado, tachado, tamanho e cor da fonte, cor de preenchimento, alinhamento horizontal e vertical, quebra de texto, formato numérico e bordas, definidos com FormatSelection ou Ctrl+B, Ctrl+I, Ctrl+U e Ctrl+5; cada mudança de formato é um passo de desfazer
  • Várias planilhas em um só grid: com ShowSheetTabs uma faixa de abas as adiciona, renomeia, exclui e reordena, as fórmulas leem outras planilhas com referências como Orders!E1:E20 ou 'Q4 Notes'!B1, e renomear uma planilha reescreve essas referências
  • No modo Excel, SaveToXLSX grava todas as planilhas com seu nome, seus formatos de célula e suas fórmulas como fórmulas do Excel com os valores calculados em cache; as linhas saem na ordem do armazenamento, para que as referências permaneçam exatas
  • LoadFromXLSX lê todas as planilhas da pasta de trabalho no modo Excel, ou uma planilha por nome ou índice, monta as colunas a partir da linha de cabeçalho com tipos inferidos e lê strings, números, booleanos e datas, incluindo o sistema de datas de 1904
  • As fórmulas e os formatos de célula da pasta de trabalho entram vivos no modo Excel; caso contrário, as fórmulas entram como seus valores em cache
  • Uma Formula de coluna como =C1*D1 é escrita para a linha 1 e calcula todas as linhas de uma coluna somente leitura, em dados na memória, no modo virtual e sobre uma origem DataSet; no modo virtual, os textos de fórmula retornados por OnGetValue também são avaliados

Não é uma planilha completa: sem gráficos, sem células mescladas e sem fórmulas de célula sobre uma origem DataSet, onde as fórmulas de coluna as substituem. No VCL, FireMonkey, WinForms, WPF e Avalonia, não na versão .NET Community.

Ler o tópico da ajuda Ler o tópico da formatação de células Ler o tópico das planilhas Ler o tópico das fórmulas de coluna
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
  • gedMemo edita textos longos em várias linhas, e gedLookup escolhe um valor de uma lista com várias colunas, preenchida a partir de LookupItems ou de um campo de lookup
  • As colunas de caixa de seleção são alternadas no local e gravam de volta o seu TrueValue ou FalseValue
  • 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 ordenar, filtrar e agrupar na fonte de dados, use o modo servidor abaixo
  • Para feeds que crescem sem fim, MaxRows com TailMode é a alternativa com chaves
Ler o tópico da ajuda
Pagine uma tabela de banco de dados com milhões de linhas

Escale e conecte Somente Registrada

Pagine uma tabela de banco de dados com milhões de linhas

Um histórico de pedidos ou uma tabela de auditoria é grande demais para ser carregada, e mesmo assim os usuários querem ordená-la, filtrá-la e agrupá-la. No modo servidor, um componente provedor lê uma página de linhas por vez, e a fonte de dados avalia a ordenação, os filtros de coluna, a linha de filtro, o texto de localização, os resumos do rodapé, o agrupamento e a contagem de linhas. Uma tabela de milhões de linhas abre tão rápido quanto uma de cinquenta, e somente as páginas exibidas são lidas.

  • TsgcGridServerProvider_DataSet transforma cada pedido em uma instrução SQL para SQLite, SQL Server, PostgreSQL, MySQL, Oracle, Firebird, InterBase ou um dialeto genérico, executada por qualquer componente de consulta: FireDAC, dbExpress, ADO, IBX, UniDAC, Zeos e outros
  • No .NET, TsgcGridServerProvider_Queryable lê qualquer IQueryable, um conjunto do Entity Framework Core por exemplo, e TsgcGridServerProvider_AdoNet executa o mesmo SQL em qualquer conexão ADO.NET
  • TsgcGridServerProvider_Callback atende qualquer outra fonte, um serviço REST por exemplo, por eventos respondidos na hora ou depois, a partir de qualquer thread
  • As linhas são carregadas em blocos de PageSize por meio de um cache; a pintura nunca espera, e as linhas ainda não carregadas mostram barras provisórias até a página chegar
  • O agrupamento roda no servidor: um GROUP BY por nível devolve os grupos com as suas contagens de linhas e resumos, e os filhos de um grupo são carregados quando ele é expandido
  • As edições são gravadas de volta por meio do provedor, e a exportação, a impressão e a cópia leem todas as linhas, página por página

Linhas em árvore e faixas de detalhe não estão disponíveis no modo servidor, e o popup de filtro não mostra contagens de linhas. Nas grades VCL, FireMonkey, WinForms, WPF e Avalonia, não na versão .NET Community.

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

19 demos para Delphi, cinco deles em FireMonkey, 13 para C++ Builder e 24 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.

Somente Registrada Spreadsheet

Modo Excel com três planilhas em uma faixa de abas: Orders, cuja coluna Total tem a fórmula de coluna =C1*D1, Summary, com =SUM(Orders!E1:E20) e outras fórmulas entre as planilhas, e Notes. Uma barra de ferramentas formata a seleção, executa os comandos de planilha e salva e abre arquivos XLSX com as fórmulas, os formatos e os nomes das planilhas. VCL, FireMonkey (SpreadsheetFMX), C++ Builder, WinForms, WPF e Avalonia.

ServerModeAndCards

Somente Registrada ServerModeAndCards

200.000 pedidos gerados em um banco de dados FireDAC SQLite na memória, paginados por TsgcGridServerProvider_DataSet. Alterne entre a tabela e os cartões, ordene, filtre, localize, some o rodapé, agrupe por país e cliente com as contagens e somas calculadas por SQL e grave as edições de volta no banco de dados. VCL e C++ Builder; ServerModeAndCardsFMX pagina 100.000 linhas geradas por meio de TsgcGridServerProvider_Callback, e as demos WinForms, WPF e Avalonia têm páginas com ADO.NET, IQueryable e callback.

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 →

Guia Primeiros Passos

Cinco demos QuickStart para Delphi (VCL) acompanham o produto em Demos\Grid\Delphi\00.QuickStart. O guia em PDF as explica passo a passo: uma primeira grade, colunas tipadas, edição direta na célula, uma conexão com dataset, e uma aplicação de pedidos com filtros, agrupamento e totais.

Baixar o guia (PDF, em inglês) →

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 17 produtos sgcUI, a partir de €699.

Ver Enterprise →

A edição .NET Community gratuita é o esegece.sgcGrid.Community no NuGet. Um projeto referencia os pacotes Community ou os Registrados, nunca os dois. A edição Delphi Community gratuita está na página de download.

RecursoCommunity (gratuita)Registrada
Atualizações em tempo real a partir de qualquer thread, flash na mudança, modo tail✓✓
Regras de formato com estilos de fonte e conjuntos de ícones, 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, o filtro da grade aplicado ao DataTable, JSON e CSV✓✓
PNG e SVG headless✓✓
Filtros de coluna com períodos de data, linha de filtro e painel de localização✓✓
Seletor de colunas, reordenação de colunas, ajuste automático, layouts automáticos e colunas que preenchem a largura✓✓
Bandas, células de imagem, progresso, sparkline e tag, seleção múltipla✓✓
Células de caixa de seleção e de link, imagens de campos BLOB, cabeçalhos e linhas com várias linhas, dicas✓✓
Cabeçalho de linha com caixas de seleção, imagens e botões no cabeçalho, cores da seleção, arrastar e soltar linhas✓✓
Pergunte ao grid: TsgcGridAI, a barra de consulta de IA e qualquer provedor de LLM✓✓
Edição no local, alternância de caixas de seleção, editores memo e lookup−✓
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−✓
Modo Excel, formatação de células, planilhas e fórmulas de coluna−✓
Modo servidor: paginação, ordenação, filtros, resumos e agrupamento de banco de dados no servidor−✓
Visão de cartões−✓
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, no modo servidor. Um provedor lê uma página de linhas por vez, e o banco de dados avalia a ordenação, os filtros de coluna, a linha de filtro, o texto de localização, os resumos do rodapé, o agrupamento e a contagem de linhas. No Delphi e no C++ Builder, TsgcGridServerProvider_DataSet monta o SQL para SQLite, SQL Server, PostgreSQL, MySQL, Oracle, Firebird, InterBase ou um dialeto genérico e o executa por qualquer componente de consulta. No .NET, os provedores leem um IQueryable, como um conjunto do Entity Framework Core, ou uma conexão ADO.NET, e um provedor de callback atende qualquer outra fonte. A visão de cartões pagina da mesma forma. O modo servidor está na edição Registrada. Veja Modo Servidor.

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 de formulários inteiros, mas em tempo de design o comando Import columns from DB grid do menu de contexto da grade copia as colunas, o vínculo com o DataSet, a posição e os eventos de um TDBGrid existente.

Edição no local, alternância de caixas de seleção, os editores memo e lookup, 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, o modo Excel com formatação de células, planilhas e fórmulas de coluna, o modo servidor, a visão de cartões, a ponte sgcGridWS e o log de reconhecimento de alarmes. Ordenação, filtro, a linha de filtro e o painel de localização, agrupamento, resumos, colunas congeladas, o seletor de colunas, layouts e layouts automáticos, colunas que preenchem a largura, bandas, células de imagem, progresso, sparkline, tag, link e caixa de seleção, imagens de campos BLOB, cabeçalhos e linhas com várias linhas, dicas, a faixa de cabeçalho de linha, imagens e botões no cabeçalho, arrastar e soltar linhas, seleção múltipla, regras de formato com conjuntos de ícones, filtros por período de data, modo virtual, JSON e CSV, a saída headless, a lista de alarmes ISA-18.2 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

Migrando?

Vem do TDBGrid ou do cxGrid?

Um kit de migração mapeia cada membro do TDBGrid e do DevExpress cxGrid que você usa para o seu equivalente no sgcGrid, com código de uma demo compilada, passos de migração numerados e as diferenças conhecidas.

Migrar do TDBGrid e do cxGrid →
Todos os kits de migração do sgcUI →
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 16 produtos sgcUI e todos os projetos de demonstração.