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.
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.
- 01Importador de informesArchivos de FastReport, QuickReport y ReportBuilder, convertidos.
- 02Parámetros de informeValores tipados que pide la vista previa, también por HTTP.
- 03Elemento de tablaCeldas combinadas, filas de cabecera repetidas, totales.
- 04Nuevos tipos de elementoCasillas de verificación, SVG, sparklines y medidores.
- 05Plantillas y herenciaUn único membrete para todos los informes.
- 06Una vista previa mejorBúsqueda, miniaturas y un menú de exportación.
- 07Marcadores y enlacesUn esquema PDF, hipervínculos y anclas.
- 08PDF de factura electrónicaFactur-X, ZUGFeRD y XRechnung en PDF/A-3.
- 09Biblioteca de expresiones68 funciones y 10 agregados.
- 10HighlightsEstilos condicionales sin scripts.
- 11Progreso y cancelaciónPara informes grandes, en pantalla y en el servidor.
- 12Todas las plataformasLa misma API en Delphi y .NET.
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.
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.
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.
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:
- Elemento de casilla de verificación, marcado por una expresión booleana, con una marca de visto, de cruz o de cuadrado. Se mantiene vectorial en el PDF y se convierte en un valor TRUE o FALSE en XLSX y CSV.
- Imágenes SVG en elementos de imagen, impresas como gráficos vectoriales en el PDF, como SVG en HTML y como imágenes nítidas en Word, de modo que un logotipo se ve perfecto con cualquier zoom.
- Elemento sparkline, dibujado por sgcCharts: línea, área, columna o ganancias y pérdidas, uno por fila.
- Elemento medidor, dibujado por sgcGauges, radial o lineal con rangos de colores, a través del nuevo puente sgcReportsGauges.
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.
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.
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.
oPreview.ShowThumbnails := True;
oPreview.ExportFormats := [rpxPDF, rpxXLSX];
if oPreview.SearchText('Total', False, True) then
Writeln(oPreview.SearchResults, ' match(es)');
Parte 2 · Cierra las carencias
Marcadores PDF, hipervínculos y anclas
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.
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.
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.
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.
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.
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.
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
- Un diseñador de informes nativo para VCL y FireMonkey con caja de herramientas, esquema, inspector, reglas, guías, ajuste a la cuadrícula, deshacer y rehacer, edición por teclado y compatibilidad con lectores de pantalla.
- Scripting con un subconjunto de Pascal, editado y comprobado en los diseñadores VCL y FireMonkey.
- Exportación a DOCX (modos fijo y de flujo) y a HTML (paginado y continuo), también a través de las rutas HTTP.
- Elementos personalizados, una tabla de referencias cruzadas nativa, y elementos de gráfico y de tabla dinámica mediante los puentes sgcReportsCharts y sgcReportsPivotGrid.
- Marcas de agua, y una vista previa de FireMonkey que funciona en macOS, iOS y Android.
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.
