sgcReports 2026.11: importa tus informes de FastReport, además de parámetros, tablas y plantillas para Delphi, C++ Builder y .NET

· Componentes
sgcReports 2026.11: importa FastReport, parámetros, tablas y plantillas para Delphi y .NET | Blog de eSeGeCe
✦  Novedades de sgcUI 2026.11 · sgcReports

Conserva tus informes.
Cambia de motor de informes.

sgcReports ahora importa informes de FastReport, QuickReport y ReportBuilder, y añade las funciones que los compradores comprueban primero: parámetros, tablas reales, plantillas de informe, una vista previa con búsqueda y facturas electrónicas. Doce novedades en una sola versión.

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

Las doce novedades en menos de cuatro minutos. También en YouTube.

12novedades
3formatos de informe importados
68funciones, más 10 agregados
6formatos de exportación en la vista previa

La mayoría de los equipos que querrían abandonar su motor de informes nunca lo hacen, por un solo motivo: cientos de informes existentes que nadie quiere volver a dibujar. sgcReports 2026.11 elimina ese motivo. Lee tus archivos de FastReport, QuickReport y ReportBuilder y los convierte, y cierra las carencias que un equipo revisa antes de cambiar: parámetros de informe, un elemento de tabla real, plantillas de informe con herencia, una vista previa con búsqueda y miniaturas, y salida PDF para facturas electrónicas.

Todo lo que sigue funciona igual en Delphi y C++ Builder, con VCL y FireMonkey, y en .NET con WinForms, WPF y Avalonia. Cada ejemplo de código de esta página se compiló y se ejecutó con las fuentes de la versión 2026.11.

Parte 1 · Elimina el coste del cambio

Importa informes de FastReport, QuickReport y ReportBuilder

El nuevo TsgcReportImporter lee un archivo .fr3 de FastReport, un formulario de QuickReport (un .dfm con un TQuickRep) o una plantilla .rtm de ReportBuilder, en texto o en binario, y lo convierte en una definición de informe de sgcReports. Páginas, bandas, elementos, estilos y orígenes de datos pasan al nuevo informe, las expresiones se traducen a la sintaxis de sgcReports, y las casillas de verificación de QuickReport y ReportBuilder se convierten en el nuevo elemento de casilla de verificación.

Lo que lo hace seguro en un proyecto real es la otra mitad del resultado. El importador enumera cada objeto, propiedad, expresión, script y origen de datos que no pudo asignar, con la ruta dentro del informe y el motivo, de modo que sabes exactamente qué debes terminar a mano. Nada se descarta en silencio.

Tres formatos de informe de entrada, una definición de sgcReports de salida.
La demo ReportImport tras importar un archivo de FastReport, con el resumen, la lista de incidencias y la vista previa del informe convertido
Un archivo de FastReport importado: 13 elementos, 2 expresiones traducidas y cada objeto no compatible listado con su motivo.

Los diseñadores incluyen un comando Importar, de modo que un informe puede traerse, revisarse en la vista previa y guardarse como JSON sin escribir código. Desde código son cuatro líneas más la limpieza:

  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;

Y lo mismo en C#:

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

Los scripts, el texto enriquecido, los gráficos y las tablas de referencias cruzadas del informe de origen no se convierten. Aparecen en la lista de incidencias, para que puedas reconstruirlos con los equivalentes de sgcReports. La nueva demo ReportImport, para Delphi, C++ Builder y .NET, importa archivos de ejemplo de los tres formatos.

Parámetros de informe, solicitados por la vista previa

Un informe ya puede declarar sus parámetros: texto, entero, número, fecha, fecha y hora, o sí o no, cada uno con un valor predeterminado o una expresión predeterminada, un indicador de obligatorio, valores múltiples y una lista de valores permitidos, fija o leída de un origen de datos. Las expresiones y los scripts los leen como :Name.

No tienes que escribir un formulario para ellos. Las vistas previas y los diseñadores de VCL y FireMonkey piden los parámetros antes de preparar el informe, y las vistas previas de .NET hacen lo mismo. El visor HTML muestra un formulario de parámetros tipado, y el endpoint HTTP lee ?param.Name=value de la cadena de consulta y responde 400 ante un valor que no encaja, en lugar de devolver un informe roto.

El cuadro de diálogo de parámetros con una fecha obligatoria, un país elegido de una lista leída de los datos y un total mínimo
El diálogo, con la lista de países leída de los datos
El informe de pedidos filtrado por la fecha, el país y el total mínimo elegidos
El informe, filtrado por los valores

En una definición JSON, los parámetros van junto a las páginas:

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

Un servicio que prepara el informe sin usuario establece los valores en código, y no se muestra ningún diálogo:

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

Un elemento de tabla real

Alinear elementos de texto a mano para simular una tabla ya es cosa del pasado. El nuevo elemento de tabla tiene anchos de columna fijos, porcentuales y automáticos, celdas que abarcan filas y columnas, filas de cabecera que se repiten en cada página, filas de datos que proceden de su propio origen de datos, filas de pie con totales y filas que crecen con su contenido. Las celdas admiten estilos, Highlights e hipervínculos.

Celdas combinadas y una fila de cabecera que acompaña a la tabla en cada página.
Una tabla comparativa de planes con celdas combinadas y una tabla de productos con valores de stock bajo en rojo
Celdas combinadas y una columna de stock resaltada
El editor de tablas del diseñador de informes con las filas, las columnas y los comandos de combinar y dividir
El editor de tablas en el diseñador

Las exportaciones conservan la estructura. Una tabla se convierte en una tabla etiquetada en un PDF accesible, con celdas de cabecera, su ámbito y las combinaciones, para que un lector de pantalla la lea como una tabla. Se convierte en una tabla HTML, en una tabla de Word con sus filas de cabecera repetidas, y en celdas combinadas en XLSX. En código, el generador fluido la escribe en pocas líneas:

  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;

Casillas de verificación, SVG, sparklines y medidores

Cuatro nuevas cosas que dibujar en una página:

Marcas de verificación, sparklines y medidores, dentro de las filas del informe.
Un informe de estado de proyectos con un logotipo SVG, una casilla de verificación, un sparkline y un medidor de progreso en cada fila, y un medidor del progreso medio
Un informe de estado de proyectos: un logotipo SVG, una casilla de verificación, un sparkline de 12 meses y un medidor de progreso por proyecto, y un medidor radial con la media.

Los ajustes de los elementos personalizados ahora aceptan expresiones, evaluadas para cada banda impresa, y así es como cada fila dibuja su propio sparkline y su propio medidor:

  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');

Plantillas de informe y herencia

Toda empresa tiene un membrete, y cada factura, extracto y albarán lo repite. Con la nueva propiedad InheritsFrom, "inheritsFrom" en el JSON, una definición de informe parte de una definición base y almacena solo sus diferencias. Las páginas, bandas, elementos y estilos se combinan por nombre. Un hijo puede sobrescribir una propiedad, añadir un elemento, colocar una banda la primera con "$first" o eliminar un elemento heredado con "$remove". Cambia el logotipo en el informe base y todos los informes que lo heredan lo siguen.

Un membrete, dos informes que lo heredan.
El informe base con el membrete
La base: letterhead.json
Una factura que hereda el membrete
Una factura lo hereda
Un albarán que hereda el membrete y elimina el bloque de contacto
Un albarán también

El albarán completo de arriba son unas pocas líneas de diferencias. Aquí elimina el bloque de contacto del membrete:

"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');

La base se busca en BaseFolder, o tu manejador OnResolveBase la carga desde una base de datos o un recurso. Las cadenas llegan hasta ocho niveles, y Flat escribe la definición combinada cuando necesitas un único archivo. Los diseñadores VCL, FireMonkey y HTML marcan los objetos heredados, los editan como sobrescrituras y crean un informe nuevo a partir de un informe base. En el diseñador VCL, una propiedad sobrescrita se muestra en negrita.

El diseñador de informes VCL con el albarán abierto, las bandas heredadas marcadas y el título sobrescrito en negrita
Las bandas heredadas están marcadas, y el título sobrescrito se muestra en negrita.

Una vista previa con búsqueda, miniaturas y menú de exportación

Las vistas previas incluyen una barra de búsqueda (Ctrl+F, F3, distinguir mayúsculas y palabra completa) que resalta cada coincidencia de la página, un panel de miniaturas de páginas y un menú Exportar para PDF, XLSX, CSV, PNG, HTML y Word, con un evento OnExport para encargarte tú del guardado. Está disponible en las vistas previas de VCL y FireMonkey y en las de WinForms, WPF y Avalonia, y el visor PDF de FireMonkey también incorpora búsqueda de texto.

Busca, salta y exporta, desde la vista previa que tus usuarios ya tienen.
La barra de búsqueda de la vista previa con la coincidencia actual en naranja y las demás coincidencias en amarillo
Búsqueda, con todas las coincidencias resaltadas
La vista previa con el panel de miniaturas de páginas abierto
Miniaturas de páginas
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Parte 2 · Cierra las carencias

Define la nueva expresión Bookmark en una banda o en un elemento, y la exportación a PDF escribe los marcadores como el esquema del documento, anidados por grupo, mientras que las vistas previas de VCL y FireMonkey los muestran en un panel de esquema (ShowOutline). La nueva propiedad Hyperlink abre una dirección web o mailto, o salta a un Anchor del mismo informe con #name, y los enlaces se conservan en las exportaciones a PDF, HTML, Word y XLSX.

El panel de esquema de la vista previa con regiones y clientes a partir de los marcadores de grupo
Un esquema construido con dos niveles de grupo
Una página de informe con enlaces que saltan a cada región y un enlace a una página web
Enlaces a una página web y a anclas

PDF de factura electrónica: Factur-X, ZUGFeRD y XRechnung

La exportación a PDF incrusta el XML de factura electrónica de tu aplicación como archivo asociado PDF/A-3 mediante la nueva propiedad EInvoice, para Factur-X, ZUGFeRD y XRechnung, también como PDF/A-3a con PDF/UA. La factura que leen las personas y los datos que leen las máquinas viajan en un único archivo. sgcReports no escribe el XML por sí mismo: lo aporta tu aplicación.

El XML va dentro de la factura PDF/A-3.
La demo ReportEInvoice con botones para Factur-X y ZUGFeRD, Verifactu de España y KSeF de Polonia
La demo ReportEInvoice: una factura Factur-X guardada como PDF/A-3 y plantillas de código QR para Verifactu (España) y KSeF (Polonia).

Una biblioteca de expresiones de 68 funciones y 10 agregados

La biblioteca de expresiones crece hasta las 68 funciones y 10 agregados. Son nuevas la aritmética de fechas, el relleno y el formato, Choose, ToWords para escribir un importe en letra en los 12 idiomas de sgcUI, y los agregados SumIf, CountIf, Previous, RunningSum y RunningCount. Un agregado sigue a la banda en la que se imprime: un pie de grupo da el total del grupo, un pie de página el total de la página.

Una página de informe que usa PadLeft, Upper, Proper, ToWords, RunningSum e IIF
PadLeft, Upper, Proper, ToWords y una columna RunningSum en una página del informe.

Highlights: estilos condicionales sin scripts

Los Highlights añaden a un elemento una lista de condiciones y estilos. La primera condición que se cumple sustituye el estilo del elemento, de modo que los totales negativos se imprimen en rojo y los buenos resultados en verde sin una línea de script. Viven en el JSON, en el generador fluido y en los diseñadores VCL, FireMonkey y HTML.

Resultados por sucursal con los valores negativos en rojo y los resultados superiores a 5000 en verde
Negativos en rojo, buenos meses en verde
El editor de Highlights del diseñador de informes con dos condiciones y sus estilos
El editor de Highlights

Progreso y cancelación para informes grandes

El motor tiene un nuevo evento OnProgress con los contadores de páginas y de registros, y un método Cancel. Las vistas previas muestran el progreso mientras se prepara un informe, con un botón Cancelar que también se acciona con Esc, y el endpoint HTTP tiene nuevos límites MaxPages y Timeout, para que un solo informe descontrolado no pueda bloquear un servidor.

La vista previa preparando un informe de 40.000 registros con los contadores de páginas y registros y un botón Cancelar
Preparando 40.000 registros: los contadores de páginas y de registros, y un botón Cancelar.

Todas las plataformas, la misma API

Cada función de esta página se entrega para Delphi y C++ Builder, con las vistas previas y los diseñadores de VCL y FireMonkey, y para .NET con WinForms, WPF y Avalonia, con los mismos nombres de clases y propiedades. Los informes definidos en JSON pasan de un mundo al otro sin cambios, y el motor sigue funcionando sin interfaz en servicios y en demonios Linux64.

La demo ReportTables ejecutándose en .NET WinForms
La demo ReportTables en .NET WinForms.

Esta versión incluye cinco demos nuevas, para Delphi, C++ Builder y .NET: ReportImport, ReportParameters, ReportTables, ReportVisualItems y ReportInheritance, junto a la demo ReportEInvoice.

También nuevo en sgcReports 2026.11

El importador de informes y los elementos sparkline y medidor requieren una edición registrada. sgcReports está incluido en sgcUI Enterprise y en All-Access, y también se vende por separado.

Prueba sgcReports 2026.11

Importa uno de tus propios archivos de FastReport, QuickReport o ReportBuilder y comprueba qué se convierte.

¿Preguntas o comentarios? Ponte en contacto, te responderán las personas que escribieron el código.