sgcReports 2026.11: importeer uw FastReport-rapporten, plus parameters, tabellen en sjablonen voor Delphi, C++ Builder en .NET

· Componenten
sgcReports 2026.11: FastReport importeren, parameters, tabellen en sjablonen voor Delphi en .NET
✦  Nieuw in sgcUI 2026.11 · sgcReports

Behoud uw rapporten.
Wissel van rapportengine.

sgcReports importeert nu rapporten van FastReport, QuickReport en ReportBuilder en voegt toe wat kopers als eerste controleren: parameters, echte tabellen, rapportsjablonen, een doorzoekbaar voorbeeld en elektronische facturen. Twaalf nieuwe functies in één release.

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

De twaalf nieuwe functies in minder dan vier minuten. Ook op YouTube.

12nieuwe functies
3geïmporteerde rapportformaten
68functies, plus 10 aggregaties
6exportformaten in het voorbeeld

De meeste teams die van rapportengine zouden willen wisselen, doen het nooit, om één reden: honderden bestaande rapporten die niemand opnieuw wil tekenen. sgcReports 2026.11 neemt die reden weg. Het leest uw bestanden van FastReport, QuickReport en ReportBuilder en converteert ze, en het dicht de gaten die een team controleert voordat het overstapt: rapportparameters, een echt tabelitem, rapportsjablonen met overerving, een voorbeeld met zoeken en miniaturen, en PDF-uitvoer voor elektronische facturen.

Alles hieronder werkt op dezelfde manier in Delphi en C++ Builder, met VCL en FireMonkey, en in .NET met WinForms, WPF en Avalonia. Elk codevoorbeeld op deze pagina is gecompileerd en uitgevoerd met de bronnen van 2026.11.

Deel 1 · Haal de overstapkosten weg

Rapporten van FastReport, QuickReport en ReportBuilder importeren

De nieuwe TsgcReportImporter leest een FastReport-bestand .fr3, een QuickReport-formulier (een .dfm met een TQuickRep) of een ReportBuilder-sjabloon .rtm, als tekst of binair, en zet het om in een sgcReports-rapportdefinitie. Pagina's, banden, items, stijlen en gegevensbronnen komen mee, de expressies worden vertaald naar de sgcReports-syntaxis, en de selectievakjes van QuickReport en ReportBuilder worden het nieuwe selectievakjeitem.

Wat het veilig maakt voor een echt project, is de andere helft van het resultaat. De importer toont elk object, elke eigenschap, expressie, elk script en elke gegevensbron die hij niet kon vertalen, met het pad binnen het rapport en de reden, zodat u precies weet wat u met de hand moet afmaken. Er verdwijnt niets stilzwijgend.

Drie rapportformaten erin, één sgcReports-definitie eruit.
De ReportImport-demo na het importeren van een FastReport-bestand, met het overzicht, de lijst met problemen en het voorbeeld van het geconverteerde rapport
Een geïmporteerd FastReport-bestand: 13 items, 2 expressies vertaald, en elk niet-ondersteund object vermeld met zijn reden.

De designers hebben een opdracht Importeren, zodat u een rapport kunt binnenhalen, in het voorbeeld kunt controleren en als JSON kunt opslaan zonder code te schrijven. Vanuit code zijn het vier regels plus het opruimen:

  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;

En hetzelfde in C#:

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

Scripts, opgemaakte tekst, grafieken en kruistabellen van het bronrapport worden niet geconverteerd. Ze verschijnen in de lijst met problemen, zodat u ze kunt herbouwen met de sgcReports-equivalenten. De nieuwe ReportImport-demo, voor Delphi, C++ Builder en .NET, importeert voorbeeldbestanden van alle drie de formaten.

Rapportparameters, opgevraagd door het voorbeeld

Een rapport kan nu zijn parameters declareren: tekst, geheel getal, getal, datum, datum en tijd, of ja of nee, elk met een standaardwaarde of een standaardexpressie, een verplichtvlag, meerdere waarden en een lijst met toegestane waarden die vast is of uit een gegevensbron komt. Expressies en scripts lezen ze als :Name.

U hoeft er geen formulier voor te schrijven. De voorbeelden en designers van VCL en FireMonkey vragen om de parameters voordat het rapport wordt voorbereid, en de .NET-voorbeelden doen dat ook. De HTML-viewer toont een getypeerd parameterformulier, en het HTTP-endpoint leest ?param.Name=value uit de querystring en antwoordt met 400 bij een waarde die niet past, in plaats van een kapot rapport terug te geven.

Het parameterdialoogvenster met een verplichte datum, een land gekozen uit een lijst die uit de gegevens wordt gelezen en een minimumtotaal
De prompt, met de landenlijst uit de gegevens
Het orderrapport gefilterd op de gekozen datum, het gekozen land en het minimumtotaal
Het rapport, gefilterd op de waarden

In een JSON-definitie staan de parameters naast de pagina's:

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

Een service die het rapport zonder gebruiker voorbereidt, stelt de waarden in code in, en er verschijnt geen prompt:

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

Een echt tabelitem

Tekstitems met de hand uitlijnen om een tabel na te bootsen is voorbij. Het nieuwe tabelitem heeft vaste, procentuele en automatische kolombreedten, cellen die rijen en kolommen overspannen, koprijen die op elke pagina terugkomen, gegevensrijen uit een eigen gegevensbron, voetrijen met totalen en rijen die met hun inhoud meegroeien. Cellen hebben stijlen, Highlights en hyperlinks.

Samengevoegde cellen, en een koprij die de tabel op elke pagina volgt.
Een abonnementenvergelijking met samengevoegde cellen en een producttabel met lage voorraadwaarden in rood
Samengevoegde cellen en een gemarkeerde voorraadkolom
De tabeleditor van de rapportdesigner met de rijen, de kolommen en de opdrachten voor samenvoegen en splitsen
De tabeleditor in de designer

De exports behouden de structuur. Een tabel wordt een getagde tabel in een toegankelijke PDF, met kopcellen, hun bereik en de overspanningen, zodat een schermlezer hem als tabel voorleest. Het wordt een HTML-tabel, een Word-tabel met herhaalde koprijen en samengevoegde cellen in XLSX. In code schrijft de fluent builder het in enkele regels:

  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;

Selectievakjes, SVG, sparklines en meters

Vier nieuwe dingen om op een pagina te tekenen:

Vinkjes, sparklines en meters, midden in de rapportrijen.
Een projectstatusrapport met een SVG-logo, een selectievakje, een sparkline en een voortgangsmeter op elke rij en een meter voor de gemiddelde voortgang
Een projectstatusrapport: een SVG-logo, een selectievakje, een sparkline over 12 maanden en een voortgangsmeter per project, en een radiale meter met het gemiddelde.

De instellingen van aangepaste items accepteren nu expressies, die voor elke afgedrukte band worden geëvalueerd. Zo tekent elke rij zijn eigen sparkline en meter:

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

Rapportsjablonen en overerving

Elk bedrijf heeft een briefhoofd, en elke factuur, elk afschrift en elke leveringsbon herhaalt het. Met de nieuwe eigenschap InheritsFrom, "inheritsFrom" in de JSON, begint een rapportdefinitie bij een basisdefinitie en slaat alleen de verschillen op. Pagina's, banden, items en stijlen worden op naam samengevoegd. Een kind kan een eigenschap overschrijven, een item toevoegen, een band vooraan plaatsen met "$first" of een geërfd item weglaten met "$remove". Wijzig het logo in het basisrapport en elk rapport dat het erft, volgt.

Eén briefhoofd, twee rapporten die het erven.
Het basisrapport met het briefhoofd
De basis: letterhead.json
Een factuur die het briefhoofd erft
Een factuur erft het
Een leveringsbon die het briefhoofd erft en het contactblok verwijdert
Een leveringsbon ook

De hele leveringsbon hierboven bestaat uit een paar regels verschillen. Hier verwijdert hij het contactblok van het briefhoofd:

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

De basis wordt gevonden onder BaseFolder, of uw handler OnResolveBase laadt hem uit een database of een resource. Ketens gaan tot acht niveaus diep, en Flat schrijft de samengevoegde definitie wanneer u één bestand nodig hebt. De designers van VCL, FireMonkey en HTML markeren geërfde objecten, bewerken ze als overschrijvingen en maken een nieuw rapport op basis van een basisrapport. In de VCL-designer wordt een overschreven eigenschap vet weergegeven.

De VCL-rapportdesigner met de leveringsbon geopend, geërfde banden gemarkeerd en de overschreven titel in vet
Geërfde banden zijn gemarkeerd en de overschreven titel staat in vet.

Een voorbeeld met zoeken, miniaturen en een exportmenu

De voorbeelden hebben een zoekbalk (Ctrl+F, F3, hoofdlettergevoelig en hele woorden) die elke treffer op de pagina markeert, een paneel met paginaminiaturen en een menu Exporteren voor PDF, XLSX, CSV, PNG, HTML en Word, met een gebeurtenis OnExport om het opslaan over te nemen. Dit zit in de voorbeelden van VCL en FireMonkey en in de voorbeelden van WinForms, WPF en Avalonia, en de FireMonkey PDF-viewer krijgt ook tekst zoeken.

Zoeken, springen en exporteren, vanuit het voorbeeld dat uw gebruikers al hebben.
De zoekbalk van het voorbeeld met de huidige treffer in oranje en de andere treffers in geel
Zoeken, met elke treffer gemarkeerd
Het voorbeeld met het paneel met paginaminiaturen geopend
Paginaminiaturen
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Deel 2 · Dicht de gaten

Stel de nieuwe expressie Bookmark in op een band of een item, en de PDF-export schrijft de bladwijzers als documentoverzicht, genest per groep, terwijl de voorbeelden van VCL en FireMonkey ze tonen in een overzichtspaneel (ShowOutline). De nieuwe eigenschap Hyperlink opent een web- of mailto-adres, of springt met #name naar een Anchor in hetzelfde rapport, en de koppelingen blijven behouden in de exports naar PDF, HTML, Word en XLSX.

Het overzichtspaneel van het voorbeeld met regio's en klanten uit de groepsbladwijzers
Een overzicht opgebouwd uit twee groepsniveaus
Een rapportpagina met koppelingen die naar elke regio springen en een koppeling naar een webpagina
Koppelingen naar een webpagina en naar ankers

E-factuur-PDF: Factur-X, ZUGFeRD en XRechnung

De PDF-export sluit de e-factuur-XML van uw toepassing in als bijgevoegd PDF/A-3-bestand via de nieuwe eigenschap EInvoice, voor Factur-X, ZUGFeRD en XRechnung, ook als PDF/A-3a met PDF/UA. De factuur die mensen lezen en de gegevens die machines lezen, reizen mee in één bestand. sgcReports schrijft de XML zelf niet: uw toepassing levert die aan.

De XML gaat in de PDF/A-3-factuur.
De ReportEInvoice-demo met knoppen voor Factur-X en ZUGFeRD, Spanje Verifactu en Polen KSeF
De ReportEInvoice-demo: een Factur-X-factuur opgeslagen als PDF/A-3, en QR-codesjablonen voor Verifactu (Spanje) en KSeF (Polen).

Een expressiebibliotheek met 68 functies en 10 aggregaties

De expressiebibliotheek groeit naar 68 functies en 10 aggregaties. Nieuw zijn datumrekenen, opvullen en opmaken, Choose, ToWords om een bedrag in woorden uit te schrijven in de 12 talen van sgcUI, en de aggregaties SumIf, CountIf, Previous, RunningSum en RunningCount. Een aggregatie volgt de band waarin hij wordt afgedrukt: een groepsvoet geeft het totaal van de groep, een paginavoet het totaal van de pagina.

Een rapportpagina die PadLeft, Upper, Proper, ToWords, RunningSum en IIF gebruikt
PadLeft, Upper, Proper, ToWords en een RunningSum-kolom op één rapportpagina.

Highlights: voorwaardelijke stijlen zonder script

Highlights geven een item een lijst met voorwaarden en stijlen. De eerste voorwaarde die waar is, vervangt de stijl van het item, zodat negatieve totalen rood en goede resultaten groen worden afgedrukt zonder één regel script. Ze staan in de JSON, in de fluent builder en in de designers van VCL, FireMonkey en HTML.

Resultaten per vestiging met negatieve waarden in rood en resultaten boven 5000 in groen
Negatieve waarden in rood, goede maanden in groen
De Highlights-editor van de rapportdesigner met twee voorwaarden en hun stijlen
De Highlights-editor

Voortgang en annuleren voor grote rapporten

De engine heeft een nieuwe gebeurtenis OnProgress met het aantal pagina's en records en een methode Cancel. De voorbeelden tonen de voortgang terwijl een rapport wordt voorbereid, met een knop Annuleren die ook Esc indrukt, en het HTTP-endpoint heeft nieuwe limieten MaxPages en Timeout, zodat één op hol geslagen rapport een server niet kan vasthouden.

Het voorbeeld dat een rapport van 40.000 records voorbereidt, met het aantal pagina's en records en een knop Annuleren
40.000 records voorbereiden: het aantal pagina's en records, en een knop Annuleren.

Elk platform, dezelfde API

Elke functie op deze pagina wordt geleverd voor Delphi en C++ Builder, met de voorbeelden en designers van VCL en FireMonkey, en voor .NET met WinForms, WPF en Avalonia, met dezelfde klasse- en eigenschapsnamen. Rapporten die in JSON zijn gedefinieerd, verhuizen ongewijzigd tussen de twee werelden, en de engine draait nog steeds headless in services en Linux64-daemons.

De ReportTables-demo in .NET WinForms
De ReportTables-demo in .NET WinForms.

Bij deze release horen vijf nieuwe demo's, voor Delphi, C++ Builder en .NET: ReportImport, ReportParameters, ReportTables, ReportVisualItems en ReportInheritance, naast de demo ReportEInvoice.

Ook nieuw in sgcReports 2026.11

De rapportimporter en de sparkline- en meteritems vereisen een geregistreerde editie. sgcReports zit in sgcUI Enterprise en in All-Access, en wordt ook los verkocht.

Probeer sgcReports 2026.11

Importeer een van uw eigen bestanden van FastReport, QuickReport of ReportBuilder en zie wat er meekomt.

Vragen of feedback? Neem contact op, u krijgt antwoord van de mensen die de code hebben geschreven.