sgcReports 2026.11: importe seus relatórios do FastReport, com parâmetros, tabelas e modelos para Delphi, C++ Builder e .NET

· Componentes
sgcReports 2026.11: importe FastReport, parâmetros, tabelas e modelos para Delphi e .NET | Blog eSeGeCe
✦  Novidade no sgcUI 2026.11 · sgcReports

Mantenha seus relatórios.
Troque o motor de relatórios.

O sgcReports agora importa relatórios do FastReport, QuickReport e ReportBuilder e adiciona os recursos que os compradores verificam primeiro: parâmetros, tabelas de verdade, modelos de relatório, uma pré-visualização com busca e notas fiscais eletrônicas. Doze novos recursos em uma única versão.

  • VCL
  • FireMonkey
  • C++ Builder
  • WinForms
  • WPF
  • Avalonia

Os doze novos recursos em menos de quatro minutos. Também no YouTube.

12novos recursos
3formatos de relatório importados
68funções, mais 10 agregados
6formatos de exportação na pré-visualização

A maioria das equipes que gostaria de abandonar seu motor de relatórios nunca o faz, por um motivo: centenas de relatórios existentes que ninguém quer desenhar de novo. O sgcReports 2026.11 elimina esse motivo. Ele lê seus arquivos do FastReport, QuickReport e ReportBuilder e os converte, e fecha as lacunas que uma equipe verifica antes de migrar: parâmetros de relatório, um item de tabela de verdade, modelos de relatório com herança, uma pré-visualização com busca e miniaturas, e saída em PDF para notas fiscais eletrônicas.

Tudo o que aparece abaixo funciona da mesma forma em Delphi e C++ Builder, com VCL e FireMonkey, e em .NET com WinForms, WPF e Avalonia. Todos os exemplos de código desta página foram compilados e executados com os fontes da versão 2026.11.

Parte 1 · Elimine o custo da migração

Importe relatórios do FastReport, QuickReport e ReportBuilder

O novo TsgcReportImporter lê um arquivo .fr3 do FastReport, um formulário do QuickReport (um .dfm com um TQuickRep) ou um modelo .rtm do ReportBuilder, em texto ou binário, e o transforma em uma definição de relatório do sgcReports. Páginas, bandas, itens, estilos e fontes de dados são trazidos, as expressões são traduzidas para a sintaxe do sgcReports, e as caixas de seleção do QuickReport e do ReportBuilder viram o novo item de caixa de seleção.

O que torna o importador seguro em um projeto real é a outra metade do resultado. Ele lista cada objeto, propriedade, expressão, script e fonte de dados que não conseguiu mapear, com o caminho dentro do relatório e o motivo, para que você saiba exatamente o que terminar à mão. Nada é descartado em silêncio.

Três formatos de relatório entram, uma definição do sgcReports sai.
O demo ReportImport após importar um arquivo do FastReport, com o resumo, a lista de problemas e a pré-visualização do relatório convertido
Um arquivo do FastReport importado: 13 itens, 2 expressões traduzidas e cada objeto não suportado listado com seu motivo.

Os designers têm um comando Importar, de modo que um relatório pode ser trazido, conferido na pré-visualização e salvo como JSON sem escrever código. Em código, são quatro linhas mais a liberação de recursos:

  oImporter := TsgcReportImporter.Create;
  try
    oImporter.ImportFromFile(oReport, 'fr_items.fr3');
    for i := 0 to oImporter.ImportResult.Issues.Count - 1 do
      Writeln(oImporter.ImportResult.Issues[i].Reason);
  finally
    oImporter.Free;
  end;

E o mesmo em C#:

    var oImporter = new TsgcReportImporter();
    oImporter.ImportFromFile(oReport, "fr_items.fr3");
    foreach (var oIssue in oImporter.ImportResult.Issues)
      Console.WriteLine(oIssue.Reason);

Scripts, texto formatado, gráficos e tabelas de referência cruzada do relatório de origem não são convertidos. Eles aparecem na lista de problemas, para que você possa reconstruí-los com os equivalentes do sgcReports. O novo demo ReportImport, para Delphi, C++ Builder e .NET, importa arquivos de exemplo dos três formatos.

Parâmetros de relatório, solicitados pela pré-visualização

Um relatório agora pode declarar seus parâmetros: texto, inteiro, número, data, data e hora, ou sim ou não, cada um com um valor padrão ou uma expressão padrão, um indicador de obrigatório, vários valores e uma lista de valores permitidos, fixa ou lida de uma fonte de dados. Expressões e scripts os leem como :Name.

Você não precisa escrever um formulário para eles. As pré-visualizações e os designers VCL e FireMonkey pedem os parâmetros antes de preparar o relatório, e as pré-visualizações .NET fazem o mesmo. O visualizador HTML mostra um formulário de parâmetros tipado, e o endpoint HTTP lê ?param.Name=value da query string e responde 400 para um valor que não se encaixa, em vez de devolver um relatório quebrado.

A caixa de diálogo de parâmetros com uma data obrigatória, um país escolhido em uma lista lida dos dados e um total mínimo
A solicitação, com a lista de países lida dos dados
O relatório de pedidos filtrado pela data, pelo país e pelo total mínimo escolhidos
O relatório, filtrado pelos valores

Em uma definição JSON, os parâmetros ficam ao lado das páginas:

"parameters": [
  { "name": "FromDate", "dataType": "rpdtDate", "required": true,
    "defaultExpression": "EncodeDate(2026, 1, 1)" },
  { "name": "MinTotal", "dataType": "rpdtFloat", "defaultValue": "0" }
]

Um serviço que prepara o relatório sem usuário define os valores em código, e nenhuma solicitação é exibida:

  oEngine.Report := oReport;
  oEngine.SetParameterValue('FromDate', VarFromDateTime(EncodeDate(2026, 3, 1)));
  oEngine.SetParameterValue('MinTotal', 100.0);

Um item de tabela de verdade

Alinhar itens de texto à mão para simular uma tabela ficou no passado. O novo item de tabela tem larguras de coluna fixas, percentuais e automáticas, células que abrangem linhas e colunas, linhas de cabeçalho que se repetem em cada página, linhas de dados que vêm de sua própria fonte de dados, linhas de rodapé com totais e linhas que crescem com o conteúdo. As células têm estilos, Highlights e hiperlinks.

Células mescladas e uma linha de cabeçalho que acompanha a tabela em todas as páginas.
Uma tabela comparativa de planos com células mescladas e uma tabela de produtos com valores de estoque baixo em vermelho
Células mescladas e uma coluna de estoque destacada
O editor de tabelas do designer de relatórios com as linhas, as colunas e os comandos de mesclar e dividir
O editor de tabelas no designer

As exportações mantêm a estrutura. Uma tabela se torna uma tabela marcada em um PDF acessível, com células de cabeçalho, seu escopo e as mesclagens, de modo que um leitor de tela a lê como tabela. Ela se torna uma tabela HTML, uma tabela do Word com as linhas de cabeçalho repetidas e células mescladas no XLSX. Em código, o construtor fluente a escreve em poucas linhas:

  oTable := oBuilder.Page('Main').Paper(rpsA4).Margins(15).ReportTitle(14)
    .CanGrow.Table(0, 0, 180, 'Products');
  oTable.Column(25).Column(0, rtwmAuto).Column(30)
    .HeaderRow(['Products', '', '']).RowStyle('Title').Cell(0, 0).Span(1, 3)
    .HeaderRow(['Code', 'Name', 'Price']).RowStyle('Head')
    .DataRow(['[Products.Code]', '[Products.Name]', '[Products.Price]'])
    .Cell(1, 2).Format('#,##0.00');
  oTable.Table.RepeatHeaderRows := True;

Caixas de seleção, SVG, sparklines e gauges

Quatro novidades para desenhar em uma página:

Marcas de check, sparklines e gauges, dentro das linhas do relatório.
Um relatório de status de projetos com um logotipo SVG, uma caixa de seleção, uma sparkline e um gauge de progresso em cada linha e um gauge do progresso médio
Um relatório de status de projetos: um logotipo SVG, uma caixa de seleção, uma sparkline de 12 meses e um gauge de progresso por projeto, e um gauge radial com a média.

As configurações dos itens personalizados agora aceitam expressões, avaliadas a cada banda impressa, e é assim que cada linha desenha sua própria sparkline e seu próprio gauge:

  oBand := oPage.MasterData('Projects', 14);
  oBand.CheckBox('Projects.Done', 4, 4, 6, 6).Name('DoneBox');
  oBand.Item.CheckBox.CheckStyle := rcsCheck;
  oBand.Custom('Sparkline', 75, 1, 60, 12, ['values=[Projects.Trend]',
    'kind=area', 'markers=last,high']).Name('Trend');
  oBand.Custom('Gauge', 140, 2, 50, 10, ['value=[Projects.Progress]',
    'gaugeKind=linear', 'unit=%']).Name('ProgressGauge');

Modelos de relatório e herança

Toda empresa tem um papel timbrado, e cada fatura, extrato e nota de entrega o repete. Com a nova propriedade InheritsFrom, "inheritsFrom" no JSON, uma definição de relatório parte de uma definição base e armazena apenas suas diferenças. Páginas, bandas, itens e estilos são mesclados pelo nome. Um filho pode sobrescrever uma propriedade, adicionar um item, colocar uma banda em primeiro lugar com "$first" ou descartar um item herdado com "$remove". Troque o logotipo no relatório base e todos os relatórios que o herdam o acompanham.

Um papel timbrado, dois relatórios que o herdam.
O relatório base com o papel timbrado
A base: letterhead.json
Uma fatura que herda o papel timbrado
Uma fatura o herda
Uma nota de entrega que herda o papel timbrado e remove o bloco de contato
Uma nota de entrega também

A nota de entrega acima inteira é composta de poucas linhas de diferenças. Aqui ela remove o bloco de contato do papel timbrado:

"inheritsFrom": "letterhead.json",
"pages": [ { "name": "Page1", "bands": [
  { "name": "PageHeader", "items": [
    { "name": "Contact", "$remove": true }
  ] }
] } ]
  oDef.BaseFolder := ExtractFilePath(ExpandFileName('letterhead.json'));
  oDef.LoadFromFile(oReport, 'child.json');

A base é localizada em BaseFolder, ou seu manipulador OnResolveBase a carrega de um banco de dados ou de um recurso. As cadeias vão até oito níveis, e Flat grava a definição mesclada quando você precisa de um único arquivo. Os designers VCL, FireMonkey e HTML marcam os objetos herdados, os editam como sobrescritas e criam um novo relatório a partir de um relatório base. No designer VCL, uma propriedade sobrescrita aparece em negrito.

O designer de relatórios VCL com a nota de entrega aberta, as bandas herdadas marcadas e o título sobrescrito em negrito
As bandas herdadas são marcadas, e o título sobrescrito aparece em negrito.

Uma pré-visualização com busca, miniaturas e menu de exportação

As pré-visualizações têm uma barra de busca (Ctrl+F, F3, diferenciar maiúsculas e minúsculas e palavra inteira) que destaca cada ocorrência na página, um painel de miniaturas das páginas e um menu Exportar para PDF, XLSX, CSV, PNG, HTML e Word, com um evento OnExport para assumir o salvamento. Isso está nas pré-visualizações VCL e FireMonkey e nas pré-visualizações WinForms, WPF e Avalonia, e o visualizador de PDF do FireMonkey também ganha busca de texto.

Buscar, saltar e exportar, na pré-visualização que seus usuários já têm.
A barra de busca da pré-visualização com a ocorrência atual em laranja e as demais em amarelo
Busca, com cada ocorrência destacada
A pré-visualização com o painel de miniaturas das páginas aberto
Miniaturas das páginas
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Parte 2 · Feche as lacunas

Defina a nova expressão Bookmark em uma banda ou em um item, e a exportação para PDF grava os marcadores como a estrutura de tópicos do documento, aninhados por grupo, enquanto as pré-visualizações VCL e FireMonkey os mostram em um painel de estrutura (ShowOutline). A nova propriedade Hyperlink abre um endereço web ou mailto, ou salta para uma Anchor do mesmo relatório com #name, e os links são mantidos nas exportações para PDF, HTML, Word e XLSX.

O painel de estrutura da pré-visualização com regiões e clientes a partir dos marcadores de grupo
Uma estrutura construída a partir de dois níveis de grupo
Uma página de relatório com links que saltam para cada região e um link para uma página web
Links para uma página web e para âncoras

PDF de nota fiscal eletrônica: Factur-X, ZUGFeRD e XRechnung

A exportação para PDF incorpora o XML da nota fiscal eletrônica de sua aplicação como um arquivo associado PDF/A-3 por meio da nova propriedade EInvoice, para Factur-X, ZUGFeRD e XRechnung, também como PDF/A-3a com PDF/UA. A fatura que as pessoas leem e os dados que as máquinas leem viajam em um único arquivo. O sgcReports não escreve o XML: sua aplicação o fornece.

O XML vai dentro da fatura em PDF/A-3.
O demo ReportEInvoice com botões para Factur-X e ZUGFeRD, Verifactu da Espanha e KSeF da Polônia
O demo ReportEInvoice: uma fatura Factur-X salva como PDF/A-3 e modelos de código QR para Verifactu (Espanha) e KSeF (Polônia).

Uma biblioteca de expressões com 68 funções e 10 agregados

A biblioteca de expressões cresce para 68 funções e 10 agregados. São novidades a aritmética de datas, o preenchimento e a formatação, Choose, ToWords para escrever um valor por extenso nos 12 idiomas do sgcUI, e os agregados SumIf, CountIf, Previous, RunningSum e RunningCount. Um agregado acompanha a banda em que é impresso: um rodapé de grupo dá o total do grupo, um rodapé de página o total da página.

Uma página de relatório que usa PadLeft, Upper, Proper, ToWords, RunningSum e IIF
PadLeft, Upper, Proper, ToWords e uma coluna RunningSum em uma página do relatório.

Highlights: estilos condicionais sem script

Os Highlights colocam em um item uma lista de condições e estilos. A primeira condição verdadeira substitui o estilo do item, de modo que totais negativos são impressos em vermelho e bons resultados em verde sem uma linha de script. Eles existem no JSON, no construtor fluente e nos designers VCL, FireMonkey e HTML.

Resultados por filial com valores negativos em vermelho e resultados acima de 5000 em verde
Negativos em vermelho, bons meses em verde
O editor de Highlights do designer de relatórios com duas condições e seus estilos
O editor de Highlights

Progresso e cancelamento para relatórios grandes

O motor tem um novo evento OnProgress com as contagens de páginas e registros e um método Cancel. As pré-visualizações mostram o progresso enquanto um relatório é preparado, com um botão Cancelar que a tecla Esc também aciona, e o endpoint HTTP tem os novos limites MaxPages e Timeout, para que um único relatório descontrolado não possa travar um servidor.

A pré-visualização preparando um relatório de 40.000 registros com as contagens de páginas e registros e um botão Cancelar
Preparando 40.000 registros: as contagens de páginas e registros e um botão Cancelar.

Todas as plataformas, a mesma API

Cada recurso desta página é fornecido para Delphi e C++ Builder, com as pré-visualizações e os designers VCL e FireMonkey, e para .NET com WinForms, WPF e Avalonia, com os mesmos nomes de classes e propriedades. Os relatórios definidos em JSON passam de um mundo ao outro sem alterações, e o motor continua rodando sem interface em serviços e daemons Linux64.

O demo ReportTables em execução no .NET WinForms
O demo ReportTables no .NET WinForms.

Cinco novos demos acompanham esta versão, para Delphi, C++ Builder e .NET: ReportImport, ReportParameters, ReportTables, ReportVisualItems e ReportInheritance, ao lado do demo ReportEInvoice.

Também novo no sgcReports 2026.11

O importador de relatórios e os itens sparkline e gauge exigem uma edição registrada. O sgcReports está incluído no sgcUI Enterprise e no All-Access, e também é vendido separadamente.

Experimente o sgcReports 2026.11

Importe um de seus próprios arquivos do FastReport, QuickReport ou ReportBuilder e veja o que é trazido.

Dúvidas ou comentários? Entre em contato, você receberá a resposta das pessoas que escreveram o código.