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.
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.
- 01Importer raportówPliki FastReport, QuickReport i ReportBuilder, skonwertowane.
- 02Parametry raportówTypowane wartości, o które pyta podgląd, także przez HTTP.
- 03Element tabeliScalone komórki, powtarzane wiersze nagłówka, sumy.
- 04Nowe rodzaje elementówPola wyboru, SVG, wykresy sparkline i mierniki.
- 05Szablony i dziedziczenieJeden papier firmowy dla każdego raportu.
- 06Lepszy podglądWyszukiwanie, miniatury i menu eksportu.
- 07Zakładki i łączaSpis treści PDF, hiperłącza i kotwice.
- 08PDF e-fakturyFactur-X, ZUGFeRD i XRechnung w PDF/A-3.
- 09Biblioteka wyrażeń68 funkcji i 10 agregatów.
- 10WyróżnieniaStyle warunkowe bez skryptu.
- 11Postęp i anulowanieDla dużych raportów, na ekranie i na serwerze.
- 12Każda platformaTo samo API w Delphi i .NET.
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.
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.
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.
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:
- Element pola wyboru, zaznaczany wyrażeniem logicznym, ze znacznikiem w postaci haczyka, krzyżyka lub kwadratu. W PDF pozostaje wektorowy, a w XLSX i CSV staje się wartością TRUE lub FALSE.
- Obrazy SVG w elementach obrazu, drukowane jako grafika wektorowa w PDF, jako SVG w HTML i jako ostre obrazy w Wordzie, więc logo pozostaje wyraźne przy każdym powiększeniu.
- Element sparkline, rysowany przez sgcCharts: liniowy, obszarowy, kolumnowy lub wygrana i przegrana, po jednym w każdym wierszu.
- Element miernika, rysowany przez sgcGauges, radialny lub liniowy z kolorowymi zakresami, za pośrednictwem nowego mostu sgcReportsGauges.
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ą.
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.
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.
oPreview.ShowThumbnails := True;
oPreview.ExportFormats := [rpxPDF, rpxXLSX];
if oPreview.SearchText('Total', False, True) then
Writeln(oPreview.SearchResults, ' match(es)');
Część 2 · Zamknij luki
Zakładki PDF, hiperłącza i kotwice
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.
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.
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.
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.
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.
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.
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
- Natywny projektant raportów dla VCL i FireMonkey z przybornikiem, konspektem, inspektorem, liniałami, prowadnicami, przyciąganiem, cofaniem i ponawianiem, edycją z klawiatury oraz obsługą czytnika ekranu.
- Skrypty w podzbiorze Pascala, edytowane i sprawdzane w projektantach VCL i FireMonkey.
- Eksport DOCX (tryby stały i płynny) oraz eksport HTML (stronicowany i ciągły), także przez trasy HTTP.
- Elementy niestandardowe, natywna tabela krzyżowa oraz elementy wykresów i tabeli przestawnej przez mosty sgcReportsCharts i sgcReportsPivotGrid.
- Znaki wodne oraz podgląd FireMonkey działający w systemach macOS, iOS i Android.
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.
