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.
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.
- 01RapportimporterBestanden van FastReport, QuickReport en ReportBuilder, geconverteerd.
- 02RapportparametersGetypeerde waarden waar het voorbeeld om vraagt, ook via HTTP.
- 03TabelitemSamengevoegde cellen, herhaalde koprijen, totalen.
- 04Nieuwe itemtypenSelectievakjes, SVG, sparklines en meters.
- 05Sjablonen en overervingEén briefhoofd voor elk rapport.
- 06Een beter voorbeeldZoeken, miniaturen en een exportmenu.
- 07Bladwijzers en koppelingenEen PDF-overzicht, hyperlinks en ankers.
- 08E-factuur-PDFFactur-X, ZUGFeRD en XRechnung in PDF/A-3.
- 09Expressiebibliotheek68 functies en 10 aggregaties.
- 10HighlightsVoorwaardelijke stijlen zonder script.
- 11Voortgang en annulerenVoor grote rapporten, op het scherm en op de server.
- 12Elk platformDezelfde API in Delphi en .NET.
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.
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.
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.
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:
- Selectievakjeitem, aangevinkt door een Booleaanse expressie, met een vinkje, kruisje of vierkantje. Het blijft vector in de PDF en wordt een waarde TRUE of FALSE in XLSX en CSV.
- SVG-afbeeldingen in afbeeldingsitems, afgedrukt als vectorafbeelding in de PDF, als SVG in HTML en als scherpe afbeeldingen in Word, zodat een logo op elke zoomstand scherp blijft.
- Sparklineitem, getekend door sgcCharts: lijn, vlak, kolom of winst en verlies, één per rij.
- Meteritem, getekend door sgcGauges, radiaal of lineair met gekleurde bereiken, via de nieuwe brug sgcReportsGauges.
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.
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.
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.
oPreview.ShowThumbnails := True;
oPreview.ExportFormats := [rpxPDF, rpxXLSX];
if oPreview.SearchText('Total', False, True) then
Writeln(oPreview.SearchResults, ' match(es)');
Deel 2 · Dicht de gaten
PDF-bladwijzers, hyperlinks en ankers
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.
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.
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.
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.
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.
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.
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
- Een native rapportdesigner voor VCL en FireMonkey met een toolbox, overzicht, inspector, linialen, hulplijnen, uitlijnen, ongedaan maken en opnieuw uitvoeren, bewerken met het toetsenbord en ondersteuning voor schermlezers.
- Scripting met een subset van Pascal, bewerkt en gecontroleerd in de designers van VCL en FireMonkey.
- DOCX-export (vaste en vloeiende modus) en HTML-export (gepagineerd en doorlopend), ook via de HTTP-routes.
- Aangepaste items, een native kruistabel, en items voor grafieken en draaitabellen via de bruggen sgcReportsCharts en sgcReportsPivotGrid.
- Watermerken, en een FireMonkey-voorbeeld dat draait op macOS, iOS en Android.
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.
