Report Viewer

TsgcHTMLComponent_ReportViewer bir raporu web sayfasında parametre paneli, PDF önizlemesi, PDF indir, Yazdır ve Excel'e aktar ile gösterir. Rapor bir TsgcHTMLReport'tur; grupları, toplamları, grafikleri, barkodları ve alt raporları sgcHTML'in PDF motoruyla PDF'ye yazdıran, harici rapor aracı, yazıcı sürücüsü veya DLL gerektirmeyen bantlı bir rapor motorudur, Delphi, C++ Builder ve .NET ile.

TsgcHTMLComponent_ReportViewer ve TsgcHTMLReport

Raporu bantları ve Parameters ile tanımlayın, görüntüleyiciye bağlayın ve oluşturun. Görüntüleyici parametrelerden bir form oluşturur; önizleme, indirme ve yazdırma, sunucuda kullanıcının uyguladığı değerlerle üretilen aynı PDF'tir, böylece kullanıcının gördüğü, yazdırdığıdır. İstekler arasında sunucuda hiçbir şey tutulmaz.

Bileşen sınıfları

TsgcHTMLComponent_ReportViewer, görüntüleyici ve TsgcHTMLReport, gösterdiği görsel olmayan rapor motoru

İşler

Bir parametre paneli, PDF görüntüleyicinin gömülü pdf.js'iyle çizilen bir önizleme ve PDF indir, Yazdır ve Excel'e aktar bağlantıları

Diller

Delphi, C++ Builder, .NET

Tarayıcıda parametreli bir satış raporu

Rapor zorunlu bir dönemi ve bir bölgeyi bildirir. Görüntüleyici bunları alanlara dönüştürür ve rapor, kullanıcının uyguladığı değerlerle verilerini kendi OnBeforeGenerate olayında filtreler.

uses
  sgcHTML_Export_PDF, sgcHTML_Report, sgcHTML_Component_ReportViewer;

// rapor
oReport := TsgcHTMLReport.Create(Self);
oReport.Title := 'Sales';
oReport.FileName := 'sales';
oReport.DataSet := qrySales;
oParam := oReport.Parameters.Add;
oParam.Name := 'Period';
oParam.Caption := 'Period';
oParam.Kind := rpkDateRange;
oParam.DefaultValue := '2026-01-01;2026-12-31';
oParam.Required := True;
oParam := oReport.Parameters.Add;
oParam.Name := 'Region';
oParam.Caption := 'Region';
oParam.Kind := rpkSelect;
oParam.Options.Add('EU=Europe');
oParam.Options.Add('US=United States');
oReport.OnBeforeGenerate := ReportBeforeGenerate;

// bir ayrıntı bandı: satır başına bir satır
oBand := oReport.Bands.Add;
oBand.Kind := rbkDetail;
oItem := oBand.Items.Add;
oItem.Text := '[Product]';
oItem.Width := 100;
oItem := oBand.Items.Add;
oItem.Text := '[Amount:#,##0.00]';
oItem.Left := 100;
oItem.Width := 80;
oItem.Align := paRight;

// görüntüleyici
oViewer := TsgcHTMLComponent_ReportViewer.Create(Self);
oViewer.Name := 'SalesViewer';
oViewer.HTMXEngine := sgcHTMXEngine1;
oViewer.Report := oReport;
oViewer.TokenSecret := LoadSecretFromConfig;
oTemplate.BodyContent := oViewer.HTML;

// rapor verilerini görüntüleyicinin değerleriyle filtreler
procedure TForm1.ReportBeforeGenerate(Sender: TObject; aParams: TStrings);
var
  vPeriod: string;
begin
  vPeriod := aParams.Values['Period'];   // başlangıç;bitiş
  qrySales.Close;
  qrySales.ParamByName('FromDate').AsString := Copy(vPeriod, 1, Pos(';', vPeriod) - 1);
  qrySales.ParamByName('ToDate').AsString := Copy(vPeriod, Pos(';', vPeriod) + 1, 10);
  qrySales.ParamByName('Region').AsString := aParams.Values['Region'];
  qrySales.Open;
end;
@* Views/Reports/Sales.cshtml: SalesReport uzun ömürlü bir TsgcHTMLReport'tur *@
@model ReportsModel

<sgc-report-viewer name="sales" report="@Model.SalesReport"
                   show-export-xlsx="true" zoom="page-width"
                   css-height="720px" token-lifetime="300"
                   on-before-generate="Model.CheckAccess" />
using esegece.sgcWebSockets;

// rapor
var report = new TsgcHTMLReport();
report.Title = "Sales";
report.FileName = "sales";
var param = report.Parameters.Add();
param.Name = "Period";
param.Caption = "Period";
param.Kind = TsgcHTMLReportParameterKind.rpkDateRange;
param.DefaultValue = "2026-01-01;2026-12-31";
param.Required = true;
report.OnBeforeGenerate += (sender, values) => LoadSales(values);

// görüntüleyici
var viewer = new TsgcHTMLComponent_ReportViewer();
viewer.Name = "SalesViewer";
viewer.HTMXEngine = engine;
viewer.Report = report;
viewer.TokenSecret = configuration["Reports:Secret"];
template.BodyContent = viewer.HTML;

// aynı rapor, görüntüleyici olmadan: üçüncü çeyreğin PDF'si
var values = new List<string> { "Period=2026-07-01;2026-09-30" };
report.SaveToFile("q3.pdf", values);

Kullanıcılarınızın elde ettikleri

Değerleri seçin, raporu inceleyin, ardından indirin, yazdırın veya verilerini Excel'de açın.

Parametre paneli

Raporun her parametresi etiketli bir alan olur: metin, sayı, tarih, Başlangıç ve Bitiş ile bir tarih aralığı, Options değerlerinden bir seçim ve bir onay kutusu. Required bir parametre yıldız gösterir ve Uygula'dan önce tarayıcıda, sonra tekrar sunucuda denetlenir. Sıfırla her alanın varsayılanını geri yükler.

PDF önizlemesi

Önizleme, TsgcHTMLComponent_PDFViewer bileşeninin gömülü pdf.js'ini araç çubuğu, sayfa gezintisi, yakınlaştırma ve aramayla kullanır. İlk sayfa çizilene kadar Rapor oluşturuluyor... metinli bir döndürücü onu kaplar. AutoGenerate ile önizleme varsayılan değerlerle hemen yüklenir.

İndirme, yazdırma ve Excel

PDF indir ve Yazdır, önizlemeyle aynı PDF'tir ve indirmenin adı FileName değerinden gelir. Excel'e aktar, raporun verilerini ExportToXLSX ile yazar. ShowDownload, ShowPrint ve ShowExportXLSX her birini gösterir veya gizler.

Net iletiler

Eksik bir zorunlu değer alanı işaretler ve odağı ona taşır. Hiçbir satır yazdırılmadığında önizleme boş bir PDF yerine Seçilen parametreler için veri yok iletisini gösterir. Reddedilen veya başarısız bir üretim nedenini gösterir ve bağlantıları devre dışı bırakır. Metinler kitaplığın yerel ayarından gelir.

Erişilebilirlik ve klavye

Görüntüleyici etiketli bir bölgedir. Her alanın bir etiketi vardır, bir tarih aralığı lejandlı bir fieldset'tir, zorunlu alanlar aria-required taşır ve eksik bir değer aria-invalid ayarlar. Bir alanda Enter parametreleri uygular ve kibar bir canlı bölge zorunlu alanları, veri yokluğunu, retleri ve hataları duyurur.

PDF'ye bantlı raporlar

Görüntüleyicinin arkasındaki motor kendi başına görsel olmayan bir bileşendir. PDF'yi sgcHTML'in PDF motoru olan TsgcHTMLExportPDF ile yazar ve aynı rapor bir Excel sayfası olarak da yazılabilir.

Bantlar

Bir rapor üst bilgisi, sayfa üst bilgileri, üst bilgileri ve alt bilgileri olan iç içe gruplar, ayrıntı satırları, sayfa alt bilgileri ve bir rapor alt bilgisi. Grup üst bilgileri her yeni sayfada tekrarlanabilir, KeepTogether bir grubu tek sayfada tutar, NewPageBefore ve NewPageAfter sayfaları böler ve NewPageAfter olan bir rapor üst bilgisi kapak sayfasıdır.

Öğeler

Bantlar metin, görüntü, çizgi, dikdörtgen, grafik, zengin metin, barkod, QR kod ve alt rapor barındırır. Metin kutusuna göre kırpılır ve AutoHeight olan öğeler, kaydırılmış metne sığması için bandı büyütür.

İfadeler ve PrintIf

Metinler [ ] arasında ifadeler içerir: [Amount:#,##0.00] gibi maskeli alanlar, [Sum(Field)], [Count], [Avg(Field)], [Min(Field)], [Max(Field)], [RunningSum(Field)], [Page] / [Pages], [Param.Name] ve [GroupValue]. Bantlar ve öğeler yalnızca PrintIf koşulları doğru olduğunda, örneğin Amount > 1000, yazdırılır.

Veri kaynakları

Satırlar bir DataSet, bir Grid, RowsJSON içindeki bir JSON dizisi veya OnGetRow olayından gelir. LoadFromGrid, bir TsgcHTMLComponent_Grid sütunlarından, her sayfada başlıkları, zebra satırları, sayısal sütunların toplamları ve sayfa numaralarıyla bir tablo raporu oluşturur.

Grafikler, barkodlar ve QR kodlar

Bir grafik öğesi bandının satırlarını vektör grafik olarak çizer: çubuk, yatay çubuk, yığılmış çubuk, çizgi, alan, pasta veya halka, bir grup bandında grup başına bir grafik. ChartSource bir TsgcHTMLComponent_Chart bileşenini web sayfasında göründüğü gibi yazdırır. Barkod öğeleri Code 128 çizer ve QR kod öğeleri M hata düzeltme düzeyini kullanır.

Alt raporlar ve zengin metin

Bir alt rapor öğesi, bandının içinde başka bir raporu, örneğin bir siparişin satırlarını, LinkFields ile ana satıra bağlı, en fazla 5 düzey derinliğinde yazdırır ve sonraki sayfalarda devam eder. Bir zengin metin öğesi HTML yazdırır ve AutoHeight ile sayfa üst bilgilerinden sonra sayfalara akar.

Yazı tipleri ve diller

Öğeler varsayılan olarak Windows-1252 karakterlerini içeren Base-14 yazı tipleriyle yazdırılır. Kiril, Yunanca, Arapça, İbranice, Çince, Japonca, Korece veya simge yazdırmak için TrueType yazı tiplerini Fonts içine kaydedin. Yalnızca yazdırılan glifler gömülür ve FallbackFonts ile AutoFallback bir yazı tipinde bulunmayan karakterleri karşılar.

Her yerde aynı çıktı

Sayılar ve tarihler, makinenin bölgesel ayarlarıyla asla değil, raporun DecimalSeparator, ThousandSeparator, DateFormat ve TimeFormat değerleriyle yazdırılır, böylece bir rapor her bilgisayarda ve .NET üzerinde aynı yazdırılır. Sabit bir CreationDate ile aynı girdi aynı PDF baytlarını verir.

JSON olarak tanım

SaveToJSON sayfa yapısını, yazı tiplerini, bantları, öğeleri ve parametreleri yazar; LoadFromJSON tüm tanımı doğruladıktan sonra, her hatanın JSON yoluyla, bunları geri okur. Kullanıcılar raporları tarayıcıda Report Designer ile tasarlar ve rapora çift tıklamak aynı tasarımcıyı Delphi IDE içinde açar.

Bir rapor, çok istek

Generate, SaveToFile, SaveToStream, GetPDFBytes, ExportToXLSX ve HasData her biri satırların ve düzenin kendi kopyasını oluşturur. Bir rapor, bir web sunucusunun birkaç isteğine aynı anda hizmet verir; her biri kendi parametreleriyle filtrelenir ve kendi kilidinize gerek yoktur.

Temel özellikler, yöntemler & olaylar

Görüntüleyicinin en sık başvurduğunuz üyeleri.

Report ve OnGetReport

Report, gösterilecek TsgcHTMLReport bileşenidir. Bir görüntüleyici her kullanıcıya hizmet verir: her kullanıcıya, örneğin kiracıya veya role göre, farklı bir rapor göstermek için onu, sgcHTMLRequestSession oturumu verdiği isteğin iş parçacığında tetiklenen OnGetReport(Sender, aParams, aReport) içinde döndürün.

OnBeforeGenerate

OnBeforeGenerate(Sender, aParams, aAccept, aErrorMessage), görüntüleyici oluşturulduğunda, her Uygula işleminde ve bir bağlantının her GET isteğinde bir üretimi kabul eder veya reddeder, böylece kopyalanmış bir bağlantı da reddedilir. İzinler ve en çok bir yıllık dönem gibi parametreler arası kurallar için kullanın.

İmzalı bağlantılar

Her dosya bağlantısı bileşeni, biçimi, parametre değerlerini, oturumu ve son kullanma süresini kapsayan bir HMAC-SHA256 belirteci taşır ve yalnızca onu oluşturan oturumda çalışır. Bağlantılar TokenLifetime saniye sonra (varsayılan 300) sona erer ve betik açık bırakılmış bir sayfa için yenilerini imzalar. Bir yük dengeleyicinin arkasındaki her sunucuda aynı TokenSecret değerini ayarlayın.

Sunucu durumu yok

Değerler bağlantıda taşınır ve rapor, OnGetReport ile OnBeforeGenerate yeniden çalıştıktan sonra GET isteğinde üretilir. Dosyalar Cache-Control: private, no-store ile sunulur ve hatalı bir istek, hatalı bir belirteç veya bir ret 400 veya 403 döndürür.

Önizleme seçenekleri

ShowParameters, ShowToolbar, ShowPageNav, ShowZoomControls ve ShowSearch görüntüleyicinin neyi göstereceğini belirler, Zoom auto, page-width, fit veya bir yüzde alır ve Theme ile CSSHeight önizlemenin görünümünü belirler.

Motor olmadan

ActionURL ile ve HTMXEngine olmadan, ana bilgisayarınız Uygula gönderimini DispatchComponentEvent işlevine ve dosya bağlantılarını DispatchComponentFile işlevine yönlendirir. GetReportURL aynı bağlantıları kendi kodunuz için imzalar, örneğin bir dönemin PDF'sine bir bağlantıyı iletide göndermek için.

ASP.NET Core

Bir Razor görünümünde <sgc-report-viewer> Tag Helper'ı görüntüleyiciyi oluşturur. report uzun ömürlü bir TsgcHTMLReport alır ya da onu atlayıp on-get-report kullanın. Uygula bileşen olayları uç noktasına gönderir ve PDF ile Excel bağlantıları UseSgcHtml bileşen dosya rotasından sunulur, bu yüzden hiçbir şeyin eşlenmesi gerekmez.

Demo

Demos\60.HTML\01.RunTime\31.ReportViewer, 8133 numaralı bağlantı noktasında üç raporlu bir sunucu olan sgc Sales Reports'tur: bölge başına çubuk grafikli ve her bölgenin payını gösteren halka grafikli bölgeye göre satışlar, logo, ödeme için QR kod ve Code 128 barkodlu bir fatura ve bir gridin çıktısı. New order düğmesi bir sipariş ekler ve her tarayıcıdaki her açık önizleme, sayfanın WebSocket bağlantısı üzerinden parametrelerini yeniden uygular. Tasarım zamanı, Lazarus ve .NET sürümleri bunu yansıtır.

Keşfetmeye devam edin

Online DeneyinRapor Görüntüleyici demosunda görün, eSeGeCe demo sunucusunda canlı çalışıyor.
Çevrimiçi yardımGörüntüleyici için tam API başvurusu ve kullanım kılavuzu.
TsgcHTMLReport YardımıRapor motorunun bantları, ifadeleri, grafikleri, alt raporları, yazı tipleri ve JSON tanımı.
Report Designer BileşeniBir raporun bantlarını, öğelerini ve parametrelerini tarayıcıda tasarlayın.
PDF Viewer BileşeniRaporun önizlemesini çizen pdf.js görüntüleyicisi.
Tüm sgcHTML Bileşenleri80'den fazla bileşenin tüm özellik matrisine göz atın.
Ücretsiz Deneme Sürümünü İndirin30 günlük deneme sürümü 60.HTML demo projelerini içerir.
FiyatlandırmaTam kaynak kodlu Single, Team ve Site lisansları.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Başlamaya Hazır mısınız?

Ücretsiz deneme sürümünü indirin ve Delphi, C++ Builder ve .NET'te web arayüzleri oluşturmaya başlayın.