sgcReports 2026.11: Importieren Sie Ihre FastReport-Berichte, dazu Parameter, Tabellen und Vorlagen für Delphi, C++ Builder und .NET

· Komponenten
sgcReports 2026.11: FastReport-Import, Parameter, Tabellen und Vorlagen für Delphi und .NET
✦  Neu in sgcUI 2026.11 · sgcReports

Behalten Sie Ihre Berichte.
Wechseln Sie die Berichts-Engine.

sgcReports importiert jetzt Berichte aus FastReport, QuickReport und ReportBuilder und bringt die Funktionen, die Käufer als Erstes prüfen: Parameter, echte Tabellen, Berichtsvorlagen, eine durchsuchbare Vorschau und elektronische Rechnungen. Zwölf neue Funktionen in einem Release.

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

Die zwölf neuen Funktionen in unter vier Minuten. Auch auf YouTube.

12neue Funktionen
3importierte Berichtsformate
68Funktionen, plus 10 Aggregate
6Exportformate in der Vorschau

Die meisten Teams, die ihre Berichts-Engine gern wechseln würden, tun es nie, und das aus einem einzigen Grund: Hunderte bestehende Berichte, die niemand neu zeichnen möchte. sgcReports 2026.11 beseitigt diesen Grund. Es liest Ihre Dateien aus FastReport, QuickReport und ReportBuilder und konvertiert sie. Außerdem schließt es die Lücken, die ein Team vor dem Wechsel prüft: Berichtsparameter, ein echtes Tabellenelement, Berichtsvorlagen mit Vererbung, eine Vorschau mit Suche und Miniaturansichten sowie PDF-Ausgabe für elektronische Rechnungen.

Alles Folgende funktioniert in Delphi und C++ Builder, mit VCL und FireMonkey, und in .NET mit WinForms, WPF und Avalonia auf dieselbe Weise. Jedes Codebeispiel auf dieser Seite wurde gegen die Quellen von 2026.11 kompiliert und ausgeführt.

Teil 1 · Die Wechselkosten beseitigen

FastReport-, QuickReport- und ReportBuilder-Berichte importieren

Der neue TsgcReportImporter liest eine FastReport-Datei .fr3, ein QuickReport-Formular (eine .dfm mit einem TQuickRep) oder eine ReportBuilder-Vorlage .rtm, als Text oder binär, und wandelt sie in eine sgcReports-Berichtsdefinition um. Seiten, Bänder, Elemente, Stile und Datenquellen werden übernommen, die Ausdrücke werden in die sgcReports-Syntax übersetzt, und die Kontrollkästchen aus QuickReport und ReportBuilder werden zum neuen Kontrollkästchen-Element.

Sicher im Einsatz bei einem echten Projekt wird er durch die andere Hälfte des Ergebnisses. Der Importer listet jedes Objekt, jede Eigenschaft, jeden Ausdruck, jedes Skript und jede Datenquelle auf, die er nicht abbilden konnte, mit dem Pfad im Bericht und dem Grund. So wissen Sie genau, was Sie von Hand fertigstellen müssen. Nichts geht stillschweigend verloren.

Drei Berichtsformate hinein, eine sgcReports-Definition heraus.
Die ReportImport-Demo nach dem Import einer FastReport-Datei, mit der Zusammenfassung, der Liste der Probleme und der Vorschau des konvertierten Berichts
Eine importierte FastReport-Datei: 13 Elemente, 2 übersetzte Ausdrücke und jedes nicht unterstützte Objekt mit seinem Grund aufgelistet.

Die Designer haben einen Befehl Importieren, sodass sich ein Bericht ohne Code einlesen, in der Vorschau prüfen und als JSON speichern lässt. Im Code sind es vier Zeilen plus die Aufräumarbeit:

  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;

Und dasselbe in C#:

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

Skripte, Rich Text, Diagramme und Kreuztabellen des Quellberichts werden nicht konvertiert. Sie erscheinen in der Problemliste, sodass Sie sie mit den entsprechenden sgcReports-Mitteln neu aufbauen können. Die neue ReportImport-Demo für Delphi, C++ Builder und .NET importiert Beispieldateien aller drei Formate.

Berichtsparameter, von der Vorschau abgefragt

Ein Bericht kann jetzt seine Parameter deklarieren: Text, Ganzzahl, Zahl, Datum, Datum und Uhrzeit oder Ja/Nein, jeweils mit einem Standardwert oder einem Standardausdruck, einem Pflichtfeld-Flag, mehreren Werten und einer Liste zulässiger Werte, die fest vorgegeben ist oder aus einer Datenquelle gelesen wird. Ausdrücke und Skripte lesen sie als :Name.

Ein Formular dafür müssen Sie nicht schreiben. Die VCL- und FireMonkey-Vorschauen und -Designer fragen die Parameter ab, bevor der Bericht aufbereitet wird, und die .NET-Vorschauen tun dasselbe. Der HTML-Viewer zeigt ein typisiertes Parameterformular, und der HTTP-Endpunkt liest ?param.Name=value aus der Abfragezeichenfolge und antwortet bei einem unpassenden Wert mit 400, statt einen fehlerhaften Bericht zurückzugeben.

Der Parameterdialog mit einem erforderlichen Datum, einem aus einer Liste gewählten Land, die aus den Daten gelesen wird, und einer Mindestsumme
Die Abfrage, mit der aus den Daten gelesenen Länderliste
Der Bestellbericht, gefiltert nach dem gewählten Datum, Land und der Mindestsumme
Der nach den Werten gefilterte Bericht

In einer JSON-Definition stehen die Parameter neben den Seiten:

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

Ein Dienst, der den Bericht ohne Benutzer aufbereitet, setzt die Werte im Code, und es erscheint keine Abfrage:

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

Ein echtes Tabellenelement

Textelemente von Hand auszurichten, um eine Tabelle vorzutäuschen, ist vorbei. Das neue Tabellenelement kennt feste, prozentuale und automatische Spaltenbreiten, Zellen, die sich über Zeilen und Spalten erstrecken, Kopfzeilen, die auf jeder Seite wiederholt werden, Datenzeilen aus einer eigenen Datenquelle, Fußzeilen mit Summen und Zeilen, die mit ihrem Inhalt wachsen. Zellen haben Stile, Highlights und Hyperlinks.

Verbundene Zellen und eine Kopfzeile, die der Tabelle auf jede Seite folgt.
Eine Tarifvergleichstabelle mit verbundenen Zellen und eine Produkttabelle mit niedrigen Lagerwerten in Rot
Verbundene Zellen und eine hervorgehobene Lagerspalte
Der Tabelleneditor des Berichtsdesigners mit den Zeilen, den Spalten und den Befehlen zum Verbinden und Teilen
Der Tabelleneditor im Designer

Die Exporte behalten die Struktur bei. Eine Tabelle wird in einem barrierefreien PDF zu einer getaggten Tabelle, mit Kopfzellen samt Bereich und den Verbindungen, sodass ein Screenreader sie als Tabelle liest. Sie wird zu einer HTML-Tabelle, zu einer Word-Tabelle mit wiederholten Kopfzeilen und zu verbundenen Zellen in XLSX. Im Code schreibt der Fluent-Builder sie in wenigen Zeilen:

  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;

Kontrollkästchen, SVG, Sparklines und Gauges

Vier neue Dinge, die Sie auf eine Seite zeichnen können:

Häkchen, Sparklines und Gauges, direkt in den Berichtszeilen.
Ein Projektstatusbericht mit einem SVG-Logo, einem Kontrollkästchen, einer Sparkline und einem Fortschritts-Gauge in jeder Zeile sowie einem Gauge für den durchschnittlichen Fortschritt
Ein Projektstatusbericht: ein SVG-Logo, ein Kontrollkästchen, eine Sparkline über 12 Monate und ein Fortschritts-Gauge pro Projekt, dazu ein radiales Gauge mit dem Durchschnitt.

Die Einstellungen benutzerdefinierter Elemente akzeptieren jetzt Ausdrücke, die für jedes gedruckte Band ausgewertet werden. So zeichnet jede Zeile ihre eigene Sparkline und ihr eigenes 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');

Berichtsvorlagen und Vererbung

Jedes Unternehmen hat einen Briefkopf, und jede Rechnung, jeder Kontoauszug und jeder Lieferschein wiederholt ihn. Mit der neuen Eigenschaft InheritsFrom, im JSON "inheritsFrom", geht eine Berichtsdefinition von einer Basisdefinition aus und speichert nur ihre Unterschiede. Seiten, Bänder, Elemente und Stile werden nach Namen zusammengeführt. Ein Kindbericht kann eine Eigenschaft überschreiben, ein Element hinzufügen, ein Band mit "$first" an die erste Stelle setzen oder ein geerbtes Element mit "$remove" entfernen. Ändern Sie das Logo im Basisbericht, und jeder Bericht, der davon erbt, folgt.

Ein Briefkopf, zwei Berichte, die ihn erben.
Der Basisbericht mit dem Briefkopf
Die Basis: letterhead.json
Eine Rechnung, die den Briefkopf erbt
Eine Rechnung erbt ihn
Ein Lieferschein, der den Briefkopf erbt und den Kontaktblock entfernt
Ebenso ein Lieferschein

Der gesamte Lieferschein oben besteht aus wenigen Zeilen mit Unterschieden. Hier entfernt er den Kontaktblock des Briefkopfs:

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

Die Basis wird unter BaseFolder gefunden, oder Ihr OnResolveBase-Handler lädt sie aus einer Datenbank oder einer Ressource. Ketten reichen bis zu acht Ebenen, und Flat schreibt die zusammengeführte Definition, wenn Sie eine einzelne Datei benötigen. Die VCL-, FireMonkey- und HTML-Designer kennzeichnen geerbte Objekte, bearbeiten sie als Überschreibungen und erstellen aus einem Basisbericht einen neuen Bericht. Im VCL-Designer erscheint eine überschriebene Eigenschaft fett.

Der VCL-Berichtsdesigner mit geöffnetem Lieferschein, gekennzeichneten geerbten Bändern und fett dargestelltem überschriebenem Titel
Geerbte Bänder sind gekennzeichnet, und der überschriebene Titel erscheint fett.

Eine Vorschau mit Suche, Miniaturansichten und Exportmenü

Die Vorschauen haben eine Suchleiste (Ctrl+F, F3, Groß-/Kleinschreibung und ganzes Wort), die jeden Treffer auf der Seite hervorhebt, einen Bereich mit Seitenminiaturen und ein Exportmenü für PDF, XLSX, CSV, PNG, HTML und Word, mit einem Ereignis OnExport, um das Speichern selbst zu übernehmen. Das gibt es in den VCL- und FireMonkey-Vorschauen und in den Vorschauen für WinForms, WPF und Avalonia, und der FireMonkey-PDF-Viewer erhält ebenfalls eine Textsuche.

Suchen, springen und exportieren, in der Vorschau, die Ihre Benutzer bereits haben.
Die Suchleiste der Vorschau mit dem aktuellen Treffer in Orange und den anderen Treffern in Gelb
Suchen, mit jedem hervorgehobenen Treffer
Die Vorschau mit geöffnetem Bereich der Seitenminiaturen
Seitenminiaturen
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Teil 2 · Die Lücken schließen

Setzen Sie den neuen Ausdruck Bookmark auf ein Band oder ein Element, und der PDF-Export schreibt die Lesezeichen als Dokumentgliederung, nach Gruppen verschachtelt, während die VCL- und FireMonkey-Vorschauen sie in einem Gliederungsbereich anzeigen (ShowOutline). Die neue Eigenschaft Hyperlink öffnet eine Web- oder mailto-Adresse oder springt mit #name zu einem Anchor im selben Bericht, und die Links bleiben in den Exporten nach PDF, HTML, Word und XLSX erhalten.

Der Gliederungsbereich der Vorschau mit Regionen und Kunden aus den Gruppenlesezeichen
Eine Gliederung aus zwei Gruppenebenen
Eine Berichtsseite mit Links, die zu jeder Region springen, und einem Link auf eine Webseite
Links auf eine Webseite und auf Anker

E-Rechnung als PDF: Factur-X, ZUGFeRD und XRechnung

Der PDF-Export bettet über die neue Eigenschaft EInvoice das E-Rechnungs-XML Ihrer Anwendung als zugehörige PDF/A-3-Datei ein, für Factur-X, ZUGFeRD und XRechnung, auch als PDF/A-3a mit PDF/UA. Die Rechnung, die Menschen lesen, und die Daten, die Maschinen lesen, reisen in einer Datei. sgcReports schreibt das XML nicht selbst: Ihre Anwendung liefert es.

Das XML steckt in der PDF/A-3-Rechnung.
Die ReportEInvoice-Demo mit Schaltflächen für Factur-X und ZUGFeRD, Spanien Verifactu und Polen KSeF
Die ReportEInvoice-Demo: eine Factur-X-Rechnung als PDF/A-3 gespeichert und QR-Code-Vorlagen für Verifactu (Spanien) und KSeF (Polen).

Eine Ausdrucksbibliothek mit 68 Funktionen und 10 Aggregaten

Die Ausdrucksbibliothek wächst auf 68 Funktionen und 10 Aggregate. Neu sind Datumsarithmetik, Auffüllen und Formatieren, Choose, ToWords, um einen Betrag in den 12 sgcUI-Sprachen in Worten zu schreiben, sowie die Aggregate SumIf, CountIf, Previous, RunningSum und RunningCount. Ein Aggregat folgt dem Band, in dem es gedruckt wird: Eine Gruppenfußzeile liefert die Summe der Gruppe, eine Seitenfußzeile die Summe der Seite.

Eine Berichtsseite mit PadLeft, Upper, Proper, ToWords, RunningSum und IIF
PadLeft, Upper, Proper, ToWords und eine RunningSum-Spalte auf einer Berichtsseite.

Highlights: Bedingte Stile ohne Skript

Highlights legen eine Liste von Bedingungen und Stilen auf ein Element. Die erste zutreffende Bedingung ersetzt den Stil des Elements, sodass negative Summen rot und gute Ergebnisse grün gedruckt werden, ohne eine Zeile Skript. Sie leben im JSON, im Fluent-Builder und in den VCL-, FireMonkey- und HTML-Designern.

Filialergebnisse mit negativen Werten in Rot und Ergebnissen über 5000 in Grün
Negative Werte in Rot, gute Monate in Grün
Der Highlights-Editor des Berichtsdesigners mit zwei Bedingungen und ihren Stilen
Der Highlights-Editor

Fortschritt und Abbruch bei großen Berichten

Die Engine hat ein neues Ereignis OnProgress mit den Seiten- und Datensatzzahlen und eine Methode Cancel. Die Vorschauen zeigen den Fortschritt, während ein Bericht aufbereitet wird, mit einer Schaltfläche Abbrechen, die auch Esc auslöst. Der HTTP-Endpunkt hat neue Limits MaxPages und Timeout, sodass ein einziger außer Kontrolle geratener Bericht einen Server nicht blockieren kann.

Die Vorschau bei der Aufbereitung eines Berichts mit 40.000 Datensätzen, mit Seiten- und Datensatzzahlen und einer Schaltfläche Abbrechen
Aufbereitung von 40.000 Datensätzen: die Seiten- und Datensatzzahlen und eine Schaltfläche Abbrechen.

Jede Plattform, dieselbe API

Jede Funktion auf dieser Seite wird für Delphi und C++ Builder ausgeliefert, mit den VCL- und FireMonkey-Vorschauen und -Designern, und für .NET mit WinForms, WPF und Avalonia, mit denselben Klassen- und Eigenschaftsnamen. In JSON definierte Berichte wechseln unverändert zwischen beiden Welten, und die Engine läuft weiterhin headless in Diensten und Linux64-Daemons.

Die ReportTables-Demo unter .NET WinForms
Die ReportTables-Demo unter .NET WinForms.

Mit diesem Release kommen fünf neue Demos für Delphi, C++ Builder und .NET: ReportImport, ReportParameters, ReportTables, ReportVisualItems und ReportInheritance, neben der Demo ReportEInvoice.

Ebenfalls neu in sgcReports 2026.11

Der Berichtsimporter sowie die Sparkline- und Gauge-Elemente erfordern eine registrierte Edition. sgcReports ist in sgcUI Enterprise und in All-Access enthalten und wird auch einzeln verkauft.

sgcReports 2026.11 ausprobieren

Importieren Sie eine eigene Datei aus FastReport, QuickReport oder ReportBuilder und sehen Sie, was übernommen wird.

Fragen oder Feedback? Nehmen Sie Kontakt auf, Sie erhalten eine Antwort von den Menschen, die den Code geschrieben haben.