QuickReport'tan sgcReports'a Geçiş

sgcReports, sgcUI'nin bant tabanlı rapor motorudur: TsgcReport yerleşimi tutar, TsgcReportEngine veriyi bağlar, TsgcReportPreviewVCL sayfaları gösterir ve PDF dışa aktarma etiketli PDF/UA yazar. Bu set, kullandığınız QuickReport bantlarını ve denetimlerini sgcReports karşılıklarıyla eşleştirir, derlenen bir demodan kodu gösterir ve nelerin eşleşmediğini dürüstçe listeler.

QuickReport ile Oluşturulmuş Delphi VCL Raporları

Bir formda TQuickRep, bantlar, bantlardaki QR denetimleri ve uygulamada bir önizleme, yazdırma veya PDF düğmesi.

QuickReport yeniden sürdürülüyor. Embarcadero, "QuickReport is back" yazısında (Embarcadero blogu, Ian Barker, 14 Kasım 2024) ürünün baş geliştiricisinin vefat etmesiyle bir krize girdiğini, Embarcadero iş ortağı Barnsten ile geri getirildiğini ve artık Delphi 7'den başlayarak Delphi ve C++Builder ile RAD Studio'nun her sürümünü desteklediğini açıklıyor. Barnsten QuickReport sayfası (2026-10-20 tarihinde okundu) gömülü TrueType yazı tipli bir PDF filtresini, PDF/A desteğini ve HTML, XML/XSLT, XLS ve XLSX dışa aktarma filtrelerini listeler ve QuickReport Pro 5 geliştirici sürümünün fiyatını KDV hariç 2.155,00 EUR olarak verir. Dolayısıyla bu sayfa ölü bir ürün ya da eksik bir PDF düğmesi hakkında değildir. O özellik listesinin adını anmadığı şeyleri isteyen ekipler içindir.

sgcReports Neler Ekler

Aşağıdaki her sgcReports iddiası gönderilen kaynakta bulunur. QuickReport tarafı, satıcı sayfasının sessiz kaldığı yerde "desteklenmiyor" değil "listelenmemiş" der.

Erişilebilir PDF/UA

TsgcReportPDFExport varsayılan olarak etiketli PDF/UA yazar (PDFUA True'dur, PDFUAPart 1. veya 2. bölümü seçer); okuma sırası, öğenin TagRole değerinden başlık rolleri, AltText değerinden alternatif metinler ve belgenin Language ve Title değerleri ile birlikte. PDFA arşivler için PDF/A-3b, PDF/A-3a veya PDF/A-4 ekler. Community dahil her sürümdedir. PDF/UA ve etiketli PDF, Barnsten özellik sayfasında listelenmemiştir. Erişilebilir belgeler, e-kitaplar, e-ticaret ve bankacılık hizmetleri gibi ürün ve hizmetleri kapsayan 2019/882 sayılı AB Yönergesi olan Avrupa Erişilebilirlik Yasası'ndan beri daha da önemlidir.

Son kullanıcı tasarımcısı, VCL ve FireMonkey

Kullanıcılarınız yeni bir derleme olmadan bir raporu değiştirebilir: sgcShowReportDesigner(Engine) VCL tasarımcısını açar veya TsgcVCLReportDesigner panelini gömebilirsiniz; sgcShowReportDesignerFMX(Engine) aynısını FireMonkey'de yapar (Delphi XE6 ve sonrası, masaüstü). VCL tasarımcısı formun DPI değişikliklerini izler (denetçisi, simgeleri ve tasarım yüzeyi ChangeScale içinde yeniden ölçeklenir). Yalnızca Registered sürümlerinde. Barnsten özellik sayfası bir son kullanıcı tasarımcısı listelemez; tarihsel olarak bu, QRDesign adlı ayrı bir üçüncü taraf üründü. Yüksek DPI konusunda bir 4 Nisan 2022 tarihli Delphi-PRAXiS yanıtı, QuickReport 6'nın Delphi 11.1 ile derlendiğini ama Yüksek DPI'yı desteklemediğini söyledi; güncel sürümü satıcıdan denetleyin.

Set için tek motor

Çapraz tablolar, barkodlar, alt raporlar ve zengin metin aynı bant motorunun öğe türleridir. Köprü birimleriyle bir rapor, bir sgcCharts grafiğini ve bir sgcPivotGrid pivot tablosunu da öğe olarak yazdırır, PDF'te vektör içerik olarak çizilir (Registered sürümleri). Dışa aktarmalar: her sürümde PDF, XLSX, CSV, HTML ve PNG, Registered sürümlerinde DOCX.

JSON tanımları ve bir .NET karşılığı

Bir rapor JSON olarak kaydedilir ve yüklenir (TsgcReport.SaveToFile, LoadFromFile), böylece yerleşimler bir veritabanında veya sürüm denetiminde durabilir. Aynı tanım .NET için sgcReports'ta yüklenir (NuGet esegece.sgcReports, .NET Standard 2.0, .NET Framework 4.7.2 ve .NET 6 ve sonrası), böylece bir Delphi raporu bir .NET hizmeti tarafından yeniden kullanılabilir.

Raporlar içe aktarılmaz, yeniden oluşturulur. sgcReports bir QuickReport .dfm dosyasını açamaz: QuickReport içe aktarıcısı yoktur. Her rapor, aşağıdaki demonun yaptığı gibi kodla ya da sgcReports tasarımcısında (Registered sürümleri) yeniden oluşturulur. Bu sayfadaki eşleştirme ve adımlar bunu bant bant mekanik bir işe dönüştürür. sgcReports, tam kaynak kodu ve bir yıllık güncellemeyle geliştirici başına €199 fiyatından lisanslanır ve ayrıca sgcUI'nin parçasıdır.

QuickReport Sınıfları, sgcReports Karşılıkları

Aşağıdaki her sgcReports adı gönderilen kaynakta bulunur ve demonun kullandıkları onunla derlenir. QuickReport adları yön göstermek için verilmiştir; bu sayfa denetlenirken QuickReport kurulu değildi.

QuickReport sgcReports Sürüm
TQuickRepTsgcReport (Pages, Styles, Units, Title) ve TsgcReportEngine (Report, AddDataSource, Prepare, Variables, OnGetVariable)Tümü
TQuickRep.DataSetAddDataSource ile kaydedilen TsgcReportDataSetSource (SourceName, DataSet); banttaki DataSourceName onu adlandırırTümü
TQuickRep.Page (kağıt, kenar boşlukları)TsgcReportPage.PaperSize (rpsA3, rpsA4, rpsA5, rpsLetter, rpsLegal, rpsCustom), Margins.Left, Top, Right, BottomTümü
TQuickRep.ReportTitleTsgcReport.Title ve PDF üst verisi için TsgcReportPDFExport.TitleTümü
BandType değeri rbTitle, rbPageHeader, rbColumnHeader olan TQRBandBandType değeri rbtReportTitle, rbtPageHeader, rbtColumnHeader olan TsgcReportBandTümü
rbDetailDataSourceName ana kaynağa ayarlı rbtMasterDataTümü
rbGroupHeader, rbGroupFooterrbtGroupHeader, rbtGroupFooterTümü
rbSummary, rbPageFooterrbtReportSummary, rbtPageFooterTümü
TQRChildBandTsgcReportBand.ChildBandName ile rbtChildTümü
TQRSubDetailBir rbtDetailData bandı (DataSourceName = ayrıntı kaynağı) ve ayrıntı TsgcReportDataSetSource üzerinde MasterSource, MasterFields, DetailFieldsTümü
TQRGroup.ExpressionGroupExpression ile rbtGroupHeaderTümü
TQRGroup.ReprintOnNewPageTsgcReportBand.RepeatOnEveryPageTümü
TQRGroup.FooterBandSonraki rbtGroupFooter bandı; ilk alt bilgi en içteki grubu kapatırTümü
TQRBand.ForceNewPageTsgcReportBand.StartNewPageTümü
TQRLabel (Caption)Kind = rikText ve düz Text.Text içeren bir öğeTümü
TQRDBText (DataField, Mask)Text.Text = '[Source.Field]' ile rikText; Mask, Text.DisplayFormat olurTümü
TQRExpr (Expression)'[expression]' ile rikText, örneğin '[Lines.Qty * Lines.Price]'; IIF, FormatFloat, FormatDateTime, Round, Upper gibi işlevlerTümü
SUM, COUNT, AVERAGE, MIN, MAX ile TQRExpr[Sum(x)], [Count()], [Avg(x)], [Min(x)], [Max(x)]; grup alt bilgilerinde grup başına sıfırlanır, sayfa alt bilgilerinde sayfa kapsamıTümü
TQRSysData qrsPageNumber[Page] ve "Sayfa X / Y" için [TotalPages]Tümü
TQRSysData qrsDate, qrsTime, qrsDetailNoText.DisplayFormat ile [Date], [Time]; [Line] veya [RecNo]Tümü
TQRShape (qrsRectangle, qrsCircle, qrsRoundRect)Shape.ShapeKind değeri rskRectangle, rskEllipse, rskRoundRect olan rikShape; Shape.PenColor, FillColor, PenWidthTümü
TQRShape qrsHorLineHeight = 0 ile rikLineTümü
TQRImage, TQRDBImageImage.FileName veya Image.Picture ya da Image.DataField ile rikImage; Stretch, KeepAspectRatioTümü
TQRRichText, TQRDBRichTextRichText.Markup ile rikRichText: RTF değil HTML benzeri işaretleme, [expressions] içerebilirTümü
Çalışma zamanında ayarlanan Enabled, BeforePrint olaylarıBantlarda ve öğelerde VisibleExpression; TsgcReportEngine.OnBeforePrintBandTümü
Prepare, PreviewTsgcReportEngine.Prepare bir TsgcReportPreparedPages döndürür; TsgcReportPreviewVCL.Prepare bunları formdaki bir denetimde gösterirTümü
Print, PrinterSetupStandart bir TPrintDialog sonrasında TsgcReportPreviewVCL.Print(aTitle)Tümü
PDF filtreli ExportToFilterTsgcReportPDFExport.SaveToFile(aPages, aFileName) veya SaveToStreamTümü
PDF/ATsgcReportPDFExport.PDFA = rpaA3b, rpaA3a veya rpaA4Tümü
ListelenmemişPDF/UA: TsgcReportPDFExport.PDFUA (varsayılan True), PDFUAPart, Language, Title; öğenin TagRole ve AltText değerleriTümü
Listelenmemiş (QRDesign üçüncü taraf bir eklentiydi)Son kullanıcı tasarımcısı: sgcShowReportDesigner, TsgcVCLReportDesigner; FireMonkey'de sgcShowReportDesignerFMXRegistered

Kod, Derlenen Demodan

Her alıntı, Delphi 7 ve Delphi 13 ile (Win32 ve Win64) ve Community sürümünde derlenen MigrateFromQuickReport demosundan kopyalanmıştır. Yorumlar, yerine geçtikleri QuickReport kodunu belirtir.

TQuickRep, bir rapor ve bir motor olur

Önce: formda, raporu ve verisini tek bileşende tutan bir TQuickRep. Sonra: yerleşim, motor ve önizleme ayrı bileşenlerdir.

frmMain.dfm
object sgcPreview: TsgcReportPreviewVCL
  Left = 0
  Top = 44
  Width = 900
  Height = 676
  Align = alClient
  TabOrder = 1
  Engine = sgcEngine
end
object sgcReport: TsgcReport
  Left = 40
  Top = 80
end
object sgcEngine: TsgcReportEngine
  Report = sgcReport
  Left = 120
  Top = 80
end

TQuickRep.DataSet ve TQRSubDetail veri kaynakları olur

Önce: faturalar için TQuickRep.DataSet ve satırlar için kendi DataSet değerine sahip bir TQRSubDetail. Sonra: veri kümesi başına bir kaynak, ayrıntı ana kayda alanlarla bağlanır. FormCreate ikisini de sgcEngine.AddDataSource ile kaydeder.

frmMain.dfm
object srcInvoices: TsgcReportDataSetSource
  SourceName = 'Invoices'
  DataSet = cdsInvoices
  Left = 40
  Top = 208
end
object srcLines: TsgcReportDataSetSource
  SourceName = 'Lines'
  MasterSource = srcInvoices
  MasterFields = 'Number'
  DetailFields = 'Invoice'
  DataSet = cdsLines
  Left = 120
  Top = 208
end

TQRLabel, TQRDBText ve TQRExpr yerine geçen bir yardımcı

Demo, aşağıdaki alıntılar kısa kalsın diye her metni formunun bu küçük yöntemiyle ekler.

frmMain.pas
function TformMain.AddText(aBand: TsgcReportBand; const aText: string;
  aLeft, aTop, aWidth: Double; const aStyle: string): TsgcReportItem;
var
  oStyle: TsgcReportStyle;
begin
  // one item replaces TQRLabel (literal text), TQRDBText ([Source.Field])
  // and TQRExpr ([expression]); literal text and [expressions] can be mixed
  Result := aBand.Items.Add;
  Result.Kind := rikText;
  Result.Name := aBand.Name + IntToStr(aBand.Items.Count);
  Result.Text.Text := aText;
  Result.Left := aLeft;
  Result.Top := aTop;
  Result.Width := aWidth;
  Result.Height := 14;
  Result.StyleName := aStyle;
  oStyle := sgcReport.Styles.FindStyle(aStyle);
  if Assigned(oStyle) and (oStyle.Font.Size * 1.25 > Result.Height) then
    Result.Height := oStyle.Font.Size * 1.25;
end;

Sayfa kurulumu, başlık bandı ve TQRSysData

Önce: TQuickRep.Page, bir başlık bandı ve tarihli bir TQRSysData. Sonra: TagRole, başlığı PDF/UA etiket ağacında bir başlık olarak işaretler.

frmMain.pas
// QuickReport: TQuickRep.Page (PaperSize, LeftMargin, TopMargin, ...)
oPage := sgcReport.Pages.Add;
oPage.Name := 'Invoices';
oPage.PaperSize := rpsA4;
oPage.Margins.Left := 40;
oPage.Margins.Top := 40;
oPage.Margins.Right := 40;
oPage.Margins.Bottom := 40;

// TQRBand BandType = rbTitle: printed once, on the first page
oBand := AddBand(oPage, rbtReportTitle, 'Title', 40);
AddText(oBand, 'Invoices by customer', 0, 0, 350, 'Title').TagRole :=
  rtrHeading1;
AddText(oBand, 'Printed on', 315, 6, 120, 'Right');
// TQRSysData Data = qrsDate
oItem := AddText(oBand, '[Date]', 440, 6, 75, 'Right');
oItem.Text.DisplayFormat := 'yyyy-mm-dd';

TQRGroup, ayrıntı bandı ve TQRSubDetail

Önce: müşteri üzerinde bir TQRGroup, TQRDBText denetimlerinden oluşan bir ayrıntı bandı ve satır tutarı için TQRExpr içeren bir TQRSubDetail. Sonra:

frmMain.pas
// TQRGroup Expression = 'Invoices.Customer', ReprintOnNewPage = True.
// The column titles are TQRLabel components in QuickReport
oBand := AddBand(oPage, rbtGroupHeader, 'CustomerHeader', 42);
oBand.GroupExpression := 'Invoices.Customer';
oBand.RepeatOnEveryPage := True;
AddText(oBand, '[Invoices.Customer]', 0, 4, 515, 'Group').TagRole :=
  rtrHeading2;
AddText(oBand, 'Invoice / product', 0, 24, 200, 'Bold');
AddText(oBand, 'Date / qty', 210, 24, 120, 'Bold');
AddText(oBand, 'Price', 345, 24, 70, 'BoldRight');
AddText(oBand, 'Amount', 425, 24, 90, 'BoldRight');
AddLine(oBand, 40);

// TQRBand BandType = rbDetail: one band per record of TQuickRep.DataSet.
// Each [Source.Field] text item replaces a TQRDBText with DataField set
oBand := AddBand(oPage, rbtMasterData, 'Invoice', 18);
oBand.DataSourceName := 'Invoices';
AddText(oBand, '[Invoices.Number]', 0, 3, 200, 'Bold');
oItem := AddText(oBand, '[Invoices.InvoiceDate]', 210, 3, 120, 'Bold');
oItem.Text.DisplayFormat := 'yyyy-mm-dd';
oItem := AddText(oBand, '[Invoices.Amount]', 425, 3, 90, 'BoldRight');
// TQRDBText.Mask
oItem.Text.DisplayFormat := '#,##0.00';

// TQRSubDetail DataSet = Lines, linked to the invoice: the link is
// MasterSource / MasterFields / DetailFields of srcLines (see the form)
oBand := AddBand(oPage, rbtDetailData, 'Line', 14);
oBand.DataSourceName := 'Lines';
AddText(oBand, '[Lines.Product]', 15, 1, 195);
AddText(oBand, '[Lines.Qty]', 210, 1, 40, 'Right');
oItem := AddText(oBand, '[Lines.Price]', 345, 1, 70, 'Right');
oItem.Text.DisplayFormat := '#,##0.00';
// TQRExpr Expression = 'Lines.Qty * Lines.Price'
oItem := AddText(oBand, '[Lines.Qty * Lines.Price]', 425, 1, 90, 'Right');
oItem.Text.DisplayFormat := '#,##0.00';

Grup alt bilgisi toplamları

Önce: grup alt bilgi bandında COUNT ve SUM içeren TQRExpr bileşenleri. Sonra:

frmMain.pas
// TQRBand BandType = rbGroupFooter (TQRGroup.FooterBand). Aggregates are
// reset for every group, like TQRExpr with ResetAfterPrint = True
oBand := AddBand(oPage, rbtGroupFooter, 'CustomerFooter', 30);
AddLine(oBand, 2);
// TQRExpr Expression = 'COUNT' and 'SUM(Lines.Qty)'
AddText(oBand, '[Count()] invoices, [Sum(Lines.Qty)] items', 0, 8,
  250, 'Bold');
AddText(oBand, 'Customer total', 260, 8, 155, 'BoldRight');
// TQRExpr Expression = 'SUM(Invoices.Amount)'
oItem := AddText(oBand, '[Sum(Invoices.Amount)]', 425, 8, 90, 'BoldRight');
oItem.Text.DisplayFormat := '#,##0.00';

Özet bandı, TQRShape ve TQRRichText

Önce: TQRShape, genel toplamlar ve TQRRichText içeren bir özet bandı. Sonra: zengin metin HTML benzeri işaretlemedir.

frmMain.pas
// TQRBand BandType = rbSummary: printed once, after the last record
oBand := AddBand(oPage, rbtReportSummary, 'Summary', 90);
oBand.KeepTogether := True;
// TQRShape Shape = qrsRectangle, Brush.Color and Pen.Color
oItem := oBand.Items.Add;
oItem.Kind := rikShape;
oItem.Name := 'SummaryBox';
oItem.Top := 10;
oItem.Width := 515;
oItem.Height := 30;
oItem.Shape.ShapeKind := rskRectangle;
oItem.Shape.PenColor := $00A0A0A0;
oItem.Shape.FillColor := $00EEF3FA;
// TQRExpr Expression = 'COUNT' and 'SUM(Invoices.Amount)' in the summary
AddText(oBand, 'Grand total, [Count()] invoices', 10, 17, 300, 'Group');
oItem := AddText(oBand, '[Sum(Invoices.Amount)]', 315, 17, 190,
  'GroupRight');
oItem.Text.DisplayFormat := '#,##0.00';
// TQRRichText: the text is HTML-like markup instead of RTF
oItem := oBand.Items.Add;
oItem.Kind := rikRichText;
oItem.Name := 'SummaryNote';
oItem.Top := 50;
oItem.Width := 515;
oItem.Height := 36;
oItem.StyleName := 'Base';
oItem.RichText.Markup := '<b>Migrated from QuickReport.</b> Each band of ' +
  'this report replaces a <i>TQRBand</i>, each text item a <i>TQRLabel</i>, '
  + '<i>TQRDBText</i> or <i>TQRExpr</i>.';

Sayfa X / Y içeren sayfa alt bilgisi

frmMain.pas
// TQRBand BandType = rbPageFooter
oBand := AddBand(oPage, rbtPageFooter, 'PageFooter', 20);
AddLine(oBand, 2);
// TQRLabel with a literal caption
AddText(oBand, 'Invoices by customer', 0, 6, 300);
// TQRSysData Data = qrsPageNumber; [TotalPages] is resolved after the
// last page is laid out
AddText(oBand, 'Page [Page] of [TotalPages]', 315, 6, 200, 'Right');

Önizleme ve yazdırma

Önce: QuickRep1.Preview, PrinterSetup ve Print. Sonra:

frmMain.pas
procedure TformMain.btnPreviewClick(Sender: TObject);
begin
  // QuickReport: QuickRep1.Preview (or Prepare + a TQRPreview). sgcReports:
  // the preview control on the form runs the engine and shows the pages
  sgcPreview.Prepare;
  lblStatus.Caption := Format('%d pages prepared', [sgcPreview.PageCount]);
end;

procedure TformMain.btnPrintClick(Sender: TObject);
begin
  // QuickReport: QuickRep1.PrinterSetup + QuickRep1.Print. The print dialog
  // selects the printer, Print sends the prepared pages to it
  if dlgPrint.Execute then
    sgcPreview.Print(sgcReport.Title);
end;

ExportToFilter, TsgcReportPDFExport olur

Önce: PDF filtreli ExportToFilter. Sonra: tek bir anahtar düz bir PDF veya etiketli bir PDF/UA dosyası yazar.

frmMain.pas
procedure TformMain.SavePDF(aPDFUA: Boolean; const aFileName: string);
var
  oPages: TsgcReportPreparedPages;
  vFileName: string;
begin
  // QuickReport: QuickRep1.ExportToFilter(TQRPDFDocumentFilter.Create(...))
  vFileName := ExtractFilePath(ParamStr(0)) + aFileName;
  // PDF/UA: a tagged PDF (headings, reading order, alternate texts); Title
  // and Language are set on pdfExport in the form
  pdfExport.PDFUA := aPDFUA;
  oPages := sgcEngine.Prepare;
  try
    pdfExport.SaveToFile(oPages, vFileName);
  finally
    oPages.Free;
  end;
  lblStatus.Caption := Format('Saved %s (%d warnings)',
    [vFileName, pdfExport.Warnings.Count]);
end;

Rapor Başına Sekiz Adım

Veri kümeleri olduğu gibi kalır. Rapor bant bant yeniden oluşturulur.

1

TQuickRep'i değiştirin

Normal bir forma bir TsgcReport, bir TsgcReportEngine (Report = rapor) ve bir TsgcReportPreviewVCL (Engine = motor) bırakın.

2

Veriyi kaydedin

Veri kümesi başına bir TsgcReportDataSetSource ekleyin (SourceName, DataSet) ve AddDataSource çağırın. Her TQRSubDetail için MasterSource, MasterFields ve DetailFields ayarlayın.

3

Sayfayı ayarlayın

TQuickRep.Page değerlerindeki kağıt boyutu ve kenar boşluklarıyla bir TsgcReportPage ekleyin ve koordinatlar öngörülebilir olsun diye TsgcReport.Units değerini ayarlayın (demoda ruPoints).

4

Bantları yeniden oluşturun

Her TQRBand için rapor sırasında bir TsgcReportBand, eşleşen rbt bant türüyle; ana ve ayrıntı bantlarında DataSourceName, grup başlıklarında GroupExpression.

5

Denetimleri yeniden oluşturun

TQRLabel, TQRDBText ve TQRExpr, düz metinle [expressions] ifadelerini karıştıran rikText öğeleri olur. Mask, Text.DisplayFormat olur, yazı tipleri adlandırılmış stiller olur.

6

İfadeleri çevirin

Toplamlar [Sum(x)], [Count()], [Avg(x)], [Min(x)] ve [Max(x)] olur; TQRSysData, [Page], [TotalPages], [Date] ve [Time] olur.

7

Önizleme, yazdırma, dışa aktarma

Preview, TsgcReportPreviewVCL.Prepare olur, Print, Print olur ve PDF filtresi TsgcReportPDFExport.SaveToFile olur. Erişilebilir bir PDF için PDFUA, Title ve Language ayarlayın.

8

Kullanıcılarınıza verin

İsteğe bağlı, Registered sürümleri: yeniden oluşturulan raporu TsgcReport.SaveToFile ile JSON olarak kaydedin ve kullanıcıların onu sgcShowReportDesigner ile düzenlemesine izin verin.

Birebir Eşleşmeyenler

Geçişi planlamadan önce bunu okuyun.

MigrateFromQuickReport

Tipik bir QuickReport ana-ayrıntı fatura listesi, müşteriye göre gruplanmış: 4 müşterinin 18 faturası ve satırları, kodla doldurulan iki TClientDataSet'ten.

Nerede

sgcUI yükleyicisi bunu Demos\Reports\Delphi\MigrateFromQuickReport klasörüne koyar: sgcReports_Demo_MigrateFromQuickReport.dpr, frmMain.pas, frmMain.dfm ve bir readme.html. Community sürümünde de vardır.

Nasıl çalıştırılır

.dpr dosyasını sgcReports ve sgcPDF kurulu olan 7 ile 13 arasındaki herhangi bir Delphi'de açın, Win32 veya Win64 için derleyin ve çalıştırın. Rapor başlangıçta hazırlanır, "Sayfa X / Y" ile üç sayfa.

Neler denenir

Print... bir yazdırma iletişim kutusu gösterir ve yazdırır. Save PDF invoices.pdf dosyasını, Save PDF/UA ise etiketli invoices_pdfua.pdf dosyasını exe'nin yanına yazar; bir PDF/UA doğrulayıcıyla denetlemeye hazırdır.

Her iki motora da adil olmak gerekirse: QuickReport yeniden sürdürülüyor, Delphi 7'den itibaren destekliyor ve raporları Delphi form tasarımcısında tasarlanıyor. Özellik sayfası, sgcReports'ta bulunmayan XML/XSLT gibi dışa aktarma filtrelerini listeler ve onu korumak hiçbir raporun yeniden oluşturulmasına gerek kalmaması demektir. Erişilebilir PDF/UA çıktısına, kullanıcılarınız için bir tasarımcıya, sgcCharts, sgcPivotGrid veya bir .NET hizmetiyle paylaşılan raporlara ihtiyacınız varsa ve her raporu bir kez yeniden oluşturmayı kabul ediyorsanız yol sgcReports'tur. Özelliklerin tam listesi için sgcReports ürün sayfasına bakın.

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

İlk Raporunuzu Bugün Yeniden Oluşturun

sgcReports ve MigrateFromQuickReport demosunu içeren sgcUI deneme sürümünü indirin ve ilk raporunuzu taşıyın.