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.
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.
- 01Importador de relatóriosArquivos do FastReport, QuickReport e ReportBuilder, convertidos.
- 02Parâmetros de relatórioValores tipados que a pré-visualização solicita, também via HTTP.
- 03Item de tabelaCélulas mescladas, linhas de cabeçalho repetidas, totais.
- 04Novos tipos de itemCaixas de seleção, SVG, sparklines e gauges.
- 05Modelos e herançaUm único papel timbrado para todos os relatórios.
- 06Uma pré-visualização melhorBusca, miniaturas e um menu de exportação.
- 07Marcadores e linksEstrutura de tópicos em PDF, hiperlinks e âncoras.
- 08PDF de nota fiscal eletrônicaFactur-X, ZUGFeRD e XRechnung em PDF/A-3.
- 09Biblioteca de expressões68 funções e 10 agregados.
- 10HighlightsEstilos condicionais sem script.
- 11Progresso e cancelamentoPara relatórios grandes, na tela e no servidor.
- 12Todas as plataformasA mesma API em Delphi e .NET.
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.
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.
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.
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:
- Item de caixa de seleção, marcado por uma expressão booleana, com marca de check, cruz ou quadrado. Permanece vetorial no PDF e vira um valor TRUE ou FALSE no XLSX e no CSV.
- Imagens SVG em itens de imagem, impressas como gráficos vetoriais no PDF, como SVG no HTML e como imagens nítidas no Word, de modo que um logotipo continua nítido em qualquer zoom.
- Item sparkline, desenhado pelo sgcCharts: linha, área, coluna ou ganho e perda, um por linha.
- Item gauge, desenhado pelo sgcGauges, radial ou linear com faixas coloridas, por meio da nova ponte sgcReportsGauges.
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.
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.
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.
oPreview.ShowThumbnails := True;
oPreview.ExportFormats := [rpxPDF, rpxXLSX];
if oPreview.SearchText('Total', False, True) then
Writeln(oPreview.SearchResults, ' match(es)');
Parte 2 · Feche as lacunas
Marcadores em PDF, hiperlinks e âncoras
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.
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.
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.
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.
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.
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.
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
- Um designer de relatórios nativo para VCL e FireMonkey com caixa de ferramentas, estrutura, inspetor, réguas, guias, alinhamento magnético, desfazer e refazer, edição pelo teclado e suporte a leitores de tela.
- Scripts com um subconjunto de Pascal, editados e verificados nos designers VCL e FireMonkey.
- Exportação para DOCX (modos fixo e fluido) e exportação para HTML (paginada e contínua), também pelas rotas HTTP.
- Itens personalizados, uma tabela de referência cruzada nativa e itens de gráfico e de grade dinâmica por meio das pontes sgcReportsCharts e sgcReportsPivotGrid.
- Marcas d'água e uma pré-visualização FireMonkey que roda em macOS, iOS e Android.
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.
