sgcReports 2026.11: zaimportuj swoje raporty FastReport, a do tego parametry, tabele i szablony dla Delphi, C++ Builder i .NET

· Komponenty
sgcReports 2026.11: import z FastReport, parametry, tabele i szablony dla Delphi i .NET | Blog eSeGeCe
✦  Nowość w sgcUI 2026.11 · sgcReports

Zachowaj swoje raporty.
Zmień silnik raportów.

sgcReports importuje teraz raporty FastReport, QuickReport i ReportBuilder oraz dodaje funkcje, które kupujący sprawdzają w pierwszej kolejności: parametry, prawdziwe tabele, szablony raportów, podgląd z wyszukiwaniem i faktury elektroniczne. Dwanaście nowych funkcji w jednym wydaniu.

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

Dwanaście nowych funkcji w niecałe cztery minuty. Także na YouTube.

12nowych funkcji
3importowane formaty raportów
68funkcji, plus 10 agregatów
6formatów eksportu w podglądzie

Większość zespołów, które chciałyby zmienić silnik raportów, nigdy tego nie robi z jednego powodu: setki istniejących raportów, których nikt nie chce rysować od nowa. sgcReports 2026.11 usuwa ten powód. Wczytuje pliki FastReport, QuickReport i ReportBuilder i je konwertuje, a także zamyka luki, które zespół sprawdza przed zmianą narzędzia: parametry raportów, prawdziwy element tabeli, szablony raportów z dziedziczeniem, podgląd z wyszukiwaniem i miniaturami oraz wyjście PDF dla faktur elektronicznych.

Wszystko poniżej działa tak samo w Delphi i C++ Builder, z VCL i FireMonkey, oraz w .NET z WinForms, WPF i Avalonia. Każdy przykład kodu na tej stronie został skompilowany i uruchomiony na źródłach 2026.11.

Część 1 · Usuń koszt zmiany

Import raportów FastReport, QuickReport i ReportBuilder

Nowy TsgcReportImporter wczytuje plik FastReport .fr3, formularz QuickReport (plik .dfm z TQuickRep) lub szablon ReportBuilder .rtm, w postaci tekstowej lub binarnej, i zamienia go w definicję raportu sgcReports. Strony, pasma, elementy, style i źródła danych zostają przeniesione, wyrażenia są tłumaczone na składnię sgcReports, a pola wyboru z QuickReport i ReportBuilder stają się nowym elementem pola wyboru.

O tym, że można go bezpiecznie używać w prawdziwym projekcie, decyduje druga połowa wyniku. Importer wypisuje każdy obiekt, właściwość, wyrażenie, skrypt i źródło danych, którego nie udało się odwzorować, razem ze ścieżką wewnątrz raportu i powodem, więc dokładnie wiesz, co dokończyć ręcznie. Nic nie ginie po cichu.

Trzy formaty raportów na wejściu, jedna definicja sgcReports na wyjściu.
Demo ReportImport po zaimportowaniu pliku FastReport, z podsumowaniem, listą problemów i podglądem skonwertowanego raportu
Zaimportowany plik FastReport: 13 elementów, 2 przetłumaczone wyrażenia, a każdy nieobsługiwany obiekt wypisany wraz z powodem.

Projektanty mają polecenie Importuj, więc raport można wprowadzić, sprawdzić w podglądzie i zapisać jako JSON bez pisania kodu. Z poziomu kodu to cztery linie plus sprzątanie:

  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;

I to samo w C#:

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

Skrypty, tekst sformatowany, wykresy i tabele krzyżowe z raportu źródłowego nie są konwertowane. Pojawiają się na liście problemów, więc możesz odbudować je za pomocą odpowiedników z sgcReports. Nowe demo ReportImport, dla Delphi, C++ Builder i .NET, importuje przykładowe pliki wszystkich trzech formatów.

Parametry raportów, o które pyta podgląd

Raport może teraz deklarować swoje parametry: tekst, liczbę całkowitą, liczbę, datę, datę i godzinę lub tak albo nie, każdy z wartością domyślną lub wyrażeniem domyślnym, flagą wymagalności, wieloma wartościami oraz listą dozwolonych wartości, stałą lub odczytywaną ze źródła danych. Wyrażenia i skrypty odczytują je jako :Name.

Nie musisz pisać dla nich formularza. Podglądy i projektanty VCL i FireMonkey pytają o parametry przed przygotowaniem raportu, podobnie jak podglądy .NET. Przeglądarka HTML pokazuje typowany formularz parametrów, a punkt końcowy HTTP odczytuje ?param.Name=value z ciągu zapytania i odpowiada kodem 400 na wartość, która nie pasuje, zamiast zwracać uszkodzony raport.

Okno parametrów z wymaganą datą, krajem wybranym z listy odczytanej z danych i minimalną sumą
Okno zapytania, z listą krajów odczytaną z danych
Raport zamówień przefiltrowany według wybranej daty, kraju i minimalnej sumy
Raport, przefiltrowany według podanych wartości

W definicji JSON parametry znajdują się obok stron:

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

Usługa, która przygotowuje raport bez użytkownika, ustawia wartości w kodzie i żadne okno zapytania się nie pojawia:

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

Prawdziwy element tabeli

Ręczne ustawianie elementów tekstowych w rzędach, by udawały tabelę, to już przeszłość. Nowy element tabeli ma kolumny o szerokości stałej, procentowej i automatycznej, komórki obejmujące wiele wierszy i kolumn, wiersze nagłówka powtarzane na każdej stronie, wiersze danych pochodzące z własnego źródła danych, wiersze stopki z sumami oraz wiersze, które rosną razem z zawartością. Komórki mają style, Wyróżnienia i hiperłącza.

Scalone komórki i wiersz nagłówka, który podąża za tabelą na każdą stronę.
Tabela porównania planów ze scalonymi komórkami oraz tabela produktów z niskimi stanami magazynowymi na czerwono
Scalone komórki i wyróżniona kolumna stanu magazynowego
Edytor tabel w projektancie raportów z wierszami, kolumnami oraz poleceniami scalania i dzielenia
Edytor tabel w projektancie

Eksporty zachowują strukturę. Tabela staje się tabelą ze znacznikami w dostępnym PDF, z komórkami nagłówka, ich zakresem i scaleniami, więc czytnik ekranu odczytuje ją jako tabelę. Staje się tabelą HTML, tabelą Worda z powtarzanymi wierszami nagłówka i scalonymi komórkami w XLSX. W kodzie fluent builder zapisuje ją w kilku liniach:

  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;

Pola wyboru, SVG, wykresy sparkline i mierniki

Cztery nowe rzeczy do rysowania na stronie:

Znaczniki wyboru, wykresy sparkline i mierniki, wewnątrz wierszy raportu.
Raport statusu projektów z logo SVG, polem wyboru, wykresem sparkline i miernikiem postępu w każdym wierszu oraz miernikiem średniego postępu
Raport statusu projektów: logo SVG, pole wyboru, wykres sparkline z 12 miesięcy i miernik postępu dla każdego projektu oraz miernik radialny ze średnią.

Ustawienia elementów niestandardowych przyjmują teraz wyrażenia, obliczane dla każdego drukowanego pasma, dzięki czemu każdy wiersz rysuje własny wykres sparkline i miernik:

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

Szablony raportów i dziedziczenie

Każda firma ma papier firmowy, a każda faktura, zestawienie i dowód dostawy go powtarza. Dzięki nowej właściwości InheritsFrom, czyli "inheritsFrom" w JSON, definicja raportu zaczyna od definicji bazowej i przechowuje tylko swoje różnice. Strony, pasma, elementy i style są scalane według nazwy. Element potomny może nadpisać właściwość, dodać element, umieścić pasmo na początku za pomocą "$first" lub usunąć odziedziczony element za pomocą "$remove". Zmień logo w raporcie bazowym, a podążą za nim wszystkie raporty, które go dziedziczą.

Jeden papier firmowy, dwa raporty, które go dziedziczą.
Bazowy raport z papierem firmowym
Baza: letterhead.json
Faktura dziedzicząca papier firmowy
Dziedziczy go faktura
Dowód dostawy dziedziczący papier firmowy i usuwający blok kontaktowy
Tak samo dowód dostawy

Cały powyższy dowód dostawy to kilka linii różnic. Tutaj usuwa blok kontaktowy z papieru firmowego:

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

Baza jest wyszukiwana w BaseFolder, albo Twoja procedura obsługi OnResolveBase wczytuje ją z bazy danych lub zasobu. Łańcuchy mogą mieć do ośmiu poziomów, a Flat zapisuje scaloną definicję, gdy potrzebujesz jednego pliku. Projektanty VCL, FireMonkey i HTML oznaczają odziedziczone obiekty, edytują je jako nadpisania i tworzą nowy raport na podstawie raportu bazowego. W projektancie VCL nadpisana właściwość jest wyświetlana pogrubieniem.

Projektant raportów VCL z otwartym dowodem dostawy, oznaczonymi odziedziczonymi pasmami i nadpisanym tytułem wyświetlonym pogrubieniem
Odziedziczone pasma są oznaczone, a nadpisany tytuł jest wyświetlany pogrubieniem.

Podgląd z wyszukiwaniem, miniaturami i menu eksportu

Podglądy mają pasek wyszukiwania (Ctrl+F, F3, uwzględnianie wielkości liter i całe słowa), który podświetla każde trafienie na stronie, panel miniatur stron oraz menu Eksport dla PDF, XLSX, CSV, PNG, HTML i Worda, ze zdarzeniem OnExport do przejęcia zapisu. Jest to dostępne w podglądach VCL i FireMonkey oraz w podglądach WinForms, WPF i Avalonia, a przeglądarka PDF w FireMonkey zyskuje także wyszukiwanie tekstu.

Szukaj, przeskakuj i eksportuj z podglądu, który Twoi użytkownicy już mają.
Pasek wyszukiwania w podglądzie z bieżącym trafieniem na pomarańczowo i pozostałymi trafieniami na żółto
Wyszukiwanie z podświetleniem każdego trafienia
Podgląd z otwartym panelem miniatur stron
Miniatury stron
  oPreview.ShowThumbnails := True;
  oPreview.ExportFormats := [rpxPDF, rpxXLSX];
  if oPreview.SearchText('Total', False, True) then
    Writeln(oPreview.SearchResults, ' match(es)');

Część 2 · Zamknij luki

Ustaw nowe wyrażenie Bookmark na paśmie lub elemencie, a eksport PDF zapisze zakładki jako spis treści dokumentu, zagnieżdżony według grup, podczas gdy podglądy VCL i FireMonkey pokażą je w panelu konspektu (ShowOutline). Nowa właściwość Hyperlink otwiera adres internetowy lub mailto albo przeskakuje do Anchor w tym samym raporcie za pomocą #name, a łącza są zachowywane w eksportach PDF, HTML, Word i XLSX.

Panel konspektu w podglądzie z regionami i klientami z zakładek grup
Konspekt zbudowany z dwóch poziomów grup
Strona raportu z łączami przeskakującymi do każdego regionu i łączem do strony internetowej
Łącza do strony internetowej i do kotwic

PDF e-faktury: Factur-X, ZUGFeRD i XRechnung

Eksport PDF osadza XML e-faktury z Twojej aplikacji jako powiązany plik PDF/A-3 za pomocą nowej właściwości EInvoice, dla Factur-X, ZUGFeRD i XRechnung, także jako PDF/A-3a z PDF/UA. Faktura, którą czytają ludzie, i dane, które czytają maszyny, podróżują w jednym pliku. sgcReports nie zapisuje samego XML: dostarcza go Twoja aplikacja.

XML trafia do wnętrza faktury PDF/A-3.
Demo ReportEInvoice z przyciskami dla Factur-X i ZUGFeRD, hiszpańskiego Verifactu i polskiego KSeF
Demo ReportEInvoice: faktura Factur-X zapisana jako PDF/A-3 oraz szablony kodów QR dla Verifactu (Hiszpania) i KSeF (Polska).

Biblioteka wyrażeń z 68 funkcjami i 10 agregatami

Biblioteka wyrażeń rośnie do 68 funkcji i 10 agregatów. Nowe są arytmetyka dat, dopełnianie i formatowanie, Choose, ToWords do zapisu kwoty słownie w 12 językach sgcUI oraz agregaty SumIf, CountIf, Previous, RunningSum i RunningCount. Agregat podąża za pasmem, w którym jest drukowany: stopka grupy podaje sumę grupy, stopka strony sumę strony.

Strona raportu używająca PadLeft, Upper, Proper, ToWords, RunningSum i IIF
PadLeft, Upper, Proper, ToWords i kolumna RunningSum na jednej stronie raportu.

Wyróżnienia: style warunkowe bez skryptu

Wyróżnienia nakładają na element listę warunków i stylów. Pierwszy spełniony warunek zastępuje styl elementu, więc ujemne sumy drukują się na czerwono, a dobre wyniki na zielono, bez linii skryptu. Znajdują się w JSON, we fluent builderze oraz w projektantach VCL, FireMonkey i HTML.

Wyniki oddziałów z wartościami ujemnymi na czerwono i wynikami powyżej 5000 na zielono
Ujemne na czerwono, dobre miesiące na zielono
Edytor wyróżnień w projektancie raportów z dwoma warunkami i ich stylami
Edytor wyróżnień

Postęp i anulowanie dla dużych raportów

Silnik ma nowe zdarzenie OnProgress z licznikami stron i rekordów oraz metodę Cancel. Podglądy pokazują postęp podczas przygotowywania raportu, z przyciskiem Anuluj, który naciska także klawisz Esc, a punkt końcowy HTTP ma nowe limity MaxPages i Timeout, więc jeden zbłąkany raport nie zablokuje serwera.

Podgląd przygotowujący raport z 40 000 rekordów z licznikami stron i rekordów oraz przyciskiem Anuluj
Przygotowanie 40 000 rekordów: liczniki stron i rekordów oraz przycisk Anuluj.

Każda platforma, to samo API

Każda funkcja z tej strony jest dostępna dla Delphi i C++ Builder, z podglądami i projektantami VCL oraz FireMonkey, oraz dla .NET z WinForms, WPF i Avalonia, z tymi samymi nazwami klas i właściwości. Raporty zdefiniowane w JSON przechodzą między obydwoma światami bez zmian, a silnik nadal działa bez interfejsu w usługach i demonach Linux64.

Demo ReportTables uruchomione w .NET WinForms
Demo ReportTables w .NET WinForms.

To wydanie zawiera pięć nowych dem, dla Delphi, C++ Builder i .NET: ReportImport, ReportParameters, ReportTables, ReportVisualItems i ReportInheritance, obok dema ReportEInvoice.

Także nowe w sgcReports 2026.11

Importer raportów oraz elementy sparkline i mierników wymagają zarejestrowanej edycji. sgcReports wchodzi w skład sgcUI Enterprise i All-Access, a jest również sprzedawany osobno.

Wypróbuj sgcReports 2026.11

Zaimportuj jeden ze swoich plików FastReport, QuickReport lub ReportBuilder i zobacz, co zostanie przeniesione.

Pytania lub uwagi? Skontaktuj się z nami, odpowiedzą Ci osoby, które napisały ten kod.