Quando falamos em DataGrid, normalmente pensamos em um componente visual exibido na tela, com colunas, linhas, filtros, ordenação e interação com o usuário.
Mas e se fosse possível usar parte desse poder sem precisar mostrar uma grid na interface?
É exatamente essa uma das possibilidades interessantes do TMS FNC DataGrid: utilizar a camada de dados da grid de forma independente, sem depender diretamente de um componente visual.
Na prática, isso permite criar uma espécie de “variável com poderes de DataGrid”, capaz de carregar dados, filtrar, ordenar, agrupar, calcular valores e até exportar informações, tudo isso sem precisar exibir uma grid na tela.
O que é uma Headless Data Layer?
O termo Headless Data Layer pode ser traduzido como camada de dados sem interface visual.
A ideia é simples: em vez de usar a grid apenas como um componente visual, podemos utilizar sua estrutura interna de dados para executar operações que normalmente associamos a uma DataGrid, mas sem a necessidade de renderizar nada para o usuário.
Com o TTMSFNCDataGridData, é possível trabalhar com os dados diretamente em memória, usando recursos como:
- carregamento de dados;
- filtros;
- ordenação;
- agrupamento;
- cálculos;
- exportação;
- acesso aos valores das células.
Ou seja, você pode aproveitar boa parte da inteligência da grid sem necessariamente colocar uma grid no formulário.
Um recurso multiplataforma
Outro ponto muito interessante é que essa abordagem pode ser utilizada em diferentes tipos de aplicação Delphi.
O TTMSFNCDataGridData pode ser usado em projetos VCL, FMX, Console Application e também em aplicações Web.
Units necessárias
Para utilizar o TTMSFNCDataGridData em uma aplicação VCL, adicione a seguinte unit na cláusula uses:
uses
VCL.TMSFNCDataGridData;Caso você utilize recursos de ordenação, como o método Sort, adicione também a unit VCL.TMSFNCDataGridCore:
uses
VCL.TMSFNCDataGridData,
VCL.TMSFNCDataGridCore;Essa segunda unit é necessária porque alguns tipos e recursos usados pela ordenação estão declarados nela.
Criando o objeto de dados
O ponto principal é que o TTMSFNCDataGridData é um objeto Delphi comum. Isso significa que ele pode ser criado em uma classe, serviço, formulário, rotina de teste ou qualquer outro ponto da aplicação.
Exemplo simplificado:
private
FData: TTMSFNCDataGridData;Na criação:
FData := TTMSFNCDataGridData.Create;E na finalização:
FData.Free;A partir desse momento, temos uma estrutura em memória capaz de armazenar e manipular dados de forma muito parecida com o que faríamos em uma grid visual.
Carregando os dados
Os dados podem ser carregados de diferentes formas. Podemos preencher as células manualmente, carregar informações de um CSV, Excel ou até trabalhar com dados vindos de um banco de dados, usando qualquer DataSet Delphi com o componente TMSFNCDataGridDatabaseAdapter vinculado a um DataSource.
Carregando dados de um CSV:
FData.ClearData;
FData.LoadFromCSVData('..\Data\products.csv');Um exemplo simples de preenchimento manual seria:
FData.ColumnCount := 3;
FData.FixedRowCount := 1;
FData.RowCount := 4;
FData.Cells[0, 0] := 'Código';
FData.Cells[1, 0] := 'Produto';
FData.Cells[2, 0] := 'Preço';
FData.Cells[0, 1] := '001';
FData.Cells[1, 1] := 'Produto A';
FData.Floats[2, 1] := 10.50;A partir daí, esses dados podem ser filtrados, ordenados, agrupados e exportados sem que uma grid precise ser exibida na tela.
Aplicando filtros sem interface visual
Um dos recursos mais interessantes é a possibilidade de aplicar filtros diretamente no objeto de dados.
Por exemplo, podemos filtrar uma determinada coluna:
FData.Filter.Clear;
FData.Filter.Add(ColunaCondicao, gftEqual, 'Ativo');
FData.ApplyFilter;Depois do filtro aplicado, podemos percorrer apenas as linhas exibidas:
for var LRow := FData.FixedRowCount to Pred(FData.RowCount) do
begin
if FData.IsRowDisplayed(LRow) then
begin
// Processa apenas as linhas filtradas
end;
end;Isso é muito útil quando queremos gerar uma exportação, calcular totais ou processar apenas os registros que atendem a uma determinada condição.
Ordenando os dados
A ordenação também pode ser feita diretamente na camada de dados:
FData.Sort(ColunaPreco, gsdDescending);Para utilizar esse recurso, lembre-se de declarar também a unit:
VCL.TMSFNCDataGridCoreCom isso, os dados podem ser reorganizados sem depender da interação do usuário com a interface.
Esse recurso é muito útil para rotinas automáticas, relatórios, exportações e qualquer cenário em que os dados precisam ser preparados antes de serem apresentados ou enviados para outro destino.
Agrupamento e cálculos
Além de filtros e ordenação, também é possível utilizar agrupamentos e cálculos.
Por exemplo, podemos agrupar dados por uma determinada coluna e calcular totais:
FData.Group(ColunaCategoria);
FData.GroupCount(ColunaCategoria);
FData.GroupSum(ColunaPreco);Isso abre várias possibilidades para criar resumos, totalizações e análises de dados sem precisar montar toda essa lógica manualmente.
Exportando os dados
Outro ponto interessante é a possibilidade de exportar os dados processados.
Depois de carregar, filtrar, ordenar ou agrupar os registros, podemos gerar uma saída em arquivo, como CSV, por exemplo.
Esse tipo de recurso é muito útil para: exportações automáticas, integração com outros sistemas, geração de relatórios, rotinas agendadas, processamento em segundo plano, etc.
🏷️ Super cupom de desconto
Temos um super cupom exclusivo de 30% de desconto para a comunidade Code4Delphi. Com ele, você pode adquirir qualquer produto da TMS Software com desconto especial. Para aproveitar, basta utilizar o cupom abaixo:
2026Code4Delphi30Conclusão
O TTMSFNCDataGridData permite reaproveitar recursos poderosos do TMS FNC DataGrid em cenários onde a grid visual não é necessária, como aplicações console, rotinas automáticas, exportações, testes, processamentos em segundo plano e também aplicações VCL, FMX e Web.
Se você trabalha com Delphi e ainda pensa em DataGrid apenas como um componente visual, vale a pena conhecer esse recurso. Ele pode abrir novas possibilidades para organizar melhor o processamento de dados nas suas aplicações.
Temos um vídeo e um repositório com exemplos sobre o uso do componente. Os links estarão listados abaixo.
Links úteis
- Vídeo no YouTube: DataGrid Delphi 23 – Variáveis com poderes de DataGrid
- Repositório com exemplos no GitHub
- Postagem oficial da TMS Software sobre Headless Data Layer
- Playlist completa sobre TMS FNC DataGrid no canal Code4Delphi

