From 6d83bd8487a151d983f2b8a4d350c68faa83a9bd Mon Sep 17 00:00:00 2001 From: Nick Volynkin Date: Mon, 30 Mar 2026 15:03:34 +0300 Subject: [PATCH 1/3] readme: Deprecate the Parameters.LoadFromLayout method Parameters are now loaded from layout on first access. --- Delphi/PDFReportGenerator.dpr | 1 - Delphi/PDFReportGenerator.res | Bin 26908 -> 96 bytes README.md | 8 +------- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/Delphi/PDFReportGenerator.dpr b/Delphi/PDFReportGenerator.dpr index 3e8a0ac..2bf1a51 100644 --- a/Delphi/PDFReportGenerator.dpr +++ b/Delphi/PDFReportGenerator.dpr @@ -39,7 +39,6 @@ begin AConnection.ConnectionString := 'XpoProvider=SQLite; Data Source=nwind.db; Mode=ReadOnly'; // Step 3: Define Report Parameter Values - AReport.Parameters.LoadFromLayout; // Set the "OrderIdParameter" value in the report layout AReport.Parameters['OrderIdParameter'].Value := AOrderID; diff --git a/Delphi/PDFReportGenerator.res b/Delphi/PDFReportGenerator.res index cf4b026489eb52a04bdeff82bf51766e0b2991dd..08cdae7a01be19dfee966980299f844b91e97d76 100644 GIT binary patch delta 10 RcmbPpi7{bi9^yWD@ZdAI-F917 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 J|JR77;s42sqtgHY diff --git a/README.md b/README.md index 344164e..38ce150 100644 --- a/README.md +++ b/README.md @@ -106,12 +106,10 @@ Parameters allow you to modify database queries and generate different reports based on the same report template and underlying data. For example, [Order.repx] includes a single `OrderIDParameter` that filters data by order ID. -To modify parameters, load them using the [TdxReport.Parameters.LoadFromLayout] method -and assign values to [TdxReport.Parameters] list members as follows: +To modify parameters, assign values to [TdxReport.Parameters] list members as follows: **Delphi:** ```delphi -AReport.Parameters.LoadFromLayout; // Set the "OrderIdParameter" value in the report layout AReport.Parameters['OrderIdParameter'].Value := AOrderID; ``` @@ -147,8 +145,6 @@ and repeat steps 3 and 4 for each parameter. **Delphi:** ```delphi // ... -AReport.LoadParametersFromReport; - for AOrderID in AOrderIDList: AReport.Parameters['OrderIdParameter'].Value := AOrderID; @@ -187,7 +183,6 @@ end; - [TdxReport.ExportToPDF], [TdxReport.ExportTo][TdxReport.ExportTo] - [TdxReport.Layout](https://docs.devexpress.com/VCL/dxReport.TdxReport.Layout) - [TdxReport.Parameters] - - [TdxReport.Parameters.LoadFromLayout] - [TdxBackendDatabaseSQLConnection](https://docs.devexpress.com/VCL/dxBackend.ConnectionString.SQL.TdxBackendDatabaseSQLConnection) @@ -196,7 +191,6 @@ end; [TdxReport.ExportToPDF]: https://docs.devexpress.com/VCL/dxReport.TdxReport.ExportToPDF(System.Classes.TStream) [TdxReport.ExportTo]: https://docs.devexpress.com/VCL/dxReport.TdxReport.ExportTo%28dxBackend.TdxReportExportFormat-System.Classes.TStream%29#available-export-formats [TdxReport.Parameters]: https://docs.devexpress.com/VCL/dxReport.TdxReport.Parameters -[TdxReport.Parameters.LoadFromLayout]: https://docs.devexpress.com/VCL/dxReport.Parameters.TdxReportParameters.LoadFromLayout ## More Examples From c56c75f586d63c536488be619742f862af522f5b Mon Sep 17 00:00:00 2001 From: Nick Volynkin Date: Tue, 31 Mar 2026 10:01:03 +0300 Subject: [PATCH 2/3] readme: Add links to more DevExpress Reports examples --- README.md | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 38ce150..5b381a6 100644 --- a/README.md +++ b/README.md @@ -175,32 +175,44 @@ end; ## Documentation -- [Introduction to VCL Reports](https://docs.devexpress.com/VCL/405469/ExpressReports/vcl-reports) -- [Tutorial: Create a table report using the Report Wizard](https://docs.devexpress.com/VCL/405760/ExpressReports/getting-started/create-table-report-using-report-wizard) -- [Use SQLite as a data source for reports (as demonstrated in the current example)](https://docs.devexpress.com/VCL/405750/ExpressCrossPlatformLibrary/vcl-backend/database-engines/vcl-backend-sqlite-support) +- [Introduction to VCL Reports][reports-intro] +- [Tutorial: Create a table report using the Report Wizard][wizard-tutorial] +- [Use SQLite as a data source for reports (as demonstrated in the current example)][sqlite-data-source] - API reference: - - [TdxReport](https://docs.devexpress.com/VCL/dxReport.TdxReport) - - [TdxReport.ExportToPDF], [TdxReport.ExportTo][TdxReport.ExportTo] - - [TdxReport.Layout](https://docs.devexpress.com/VCL/dxReport.TdxReport.Layout) + - [TdxReport] + - [TdxReport.ExportToPDF], [TdxReport.ExportTo] + - [TdxReport.Layout] - [TdxReport.Parameters] - - [TdxBackendDatabaseSQLConnection](https://docs.devexpress.com/VCL/dxBackend.ConnectionString.SQL.TdxBackendDatabaseSQLConnection) - + - [TdxBackendDatabaseSQLConnection] + [designer]: https://docs.devexpress.com/VCL/405469/ExpressReports/vcl-reports [supported-dbms]: https://docs.devexpress.com/VCL/405703/ExpressCrossPlatformLibrary/vcl-backend/vcl-backend-supported-database-systems +[reports-intro]: https://docs.devexpress.com/VCL/405469/ExpressReports/vcl-reports +[wizard-tutorial]: https://docs.devexpress.com/VCL/405760/ExpressReports/getting-started/create-table-report-using-wizard-tutorial +[sqlite-data-source]: https://docs.devexpress.com/VCL/405750/ExpressCrossPlatformLibrary/vcl-backend/database-engines/vcl-backend-sqlite-support + + +[TdxReport]: https://docs.devexpress.com/VCL/dxReport.TdxReport +[TdxReport.Layout]: https://docs.devexpress.com/VCL/dxReport.TdxReport.Layout [TdxReport.ExportToPDF]: https://docs.devexpress.com/VCL/dxReport.TdxReport.ExportToPDF(System.Classes.TStream) [TdxReport.ExportTo]: https://docs.devexpress.com/VCL/dxReport.TdxReport.ExportTo%28dxBackend.TdxReportExportFormat-System.Classes.TStream%29#available-export-formats [TdxReport.Parameters]: https://docs.devexpress.com/VCL/dxReport.TdxReport.Parameters +[TdxBackendDatabaseSQLConnection]: https://docs.devexpress.com/VCL/dxBackend.ConnectionString.SQL.TdxBackendDatabaseSQLConnection ## More Examples - [Store Report Layouts in REPX Files][file-example] - [Store Report Layouts in a Database][database-example] +- [Filter data records in a report][filter-data-records] +- [Localize the Report Viewer and Report Designer][localize] - + [file-example]: https://github.com/DevExpress-Examples/vcl-reports-store-layout-template-file [database-example]: https://github.com/DevExpress-Examples/vcl-reports-store-layout-template-database +[filter-data-records]: https://github.com/DevExpress-Examples/vcl-filter-report-preview-based-on-grid-selected-rows +[localize]: https://github.com/DevExpress-Examples/vcl-reports-localize ## Does This Example Address Your Development Requirements/Objectives? From f145e920d769eaadaead39828961a3ca9b130627 Mon Sep 17 00:00:00 2001 From: Nick Volynkin Date: Wed, 1 Apr 2026 13:27:31 +0300 Subject: [PATCH 3/3] readme: Apply standard code formatting --- README.md | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 5b381a6..930a79c 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,9 @@ You can [import a report layout from a REPX file][file-example] or [load a layou This example imports a report layout from the [Order.repx] file. -**Delphi:** + +#### Delphi + ```delphi AReport := TdxReport.Create(nil); // AReport: TdxReport; try @@ -73,6 +75,7 @@ finally AReport.Free; end; ``` + ### Step 2: Create a Database Connection @@ -80,7 +83,9 @@ end; Create a database connection component to supply data to the report. This example uses a SQLite sample database ([nwind.db]). -**Delphi:** + +#### Delphi + ```delphi // AConnection: TdxBackendDatabaseSQLConnection; AConnection := TdxBackendDatabaseSQLConnection.Create(nil); @@ -94,6 +99,7 @@ finally AConnection.Free; end; ``` + For detailed information on data source management and supported database engines, refer to the following help topic: [VCL Backend: Supported Database Systems][supported-dbms]. @@ -108,18 +114,23 @@ For example, [Order.repx] includes a single `OrderIDParameter` that filters data To modify parameters, assign values to [TdxReport.Parameters] list members as follows: -**Delphi:** + +#### Delphi + ```delphi // Set the "OrderIdParameter" value in the report layout AReport.Parameters['OrderIdParameter'].Value := AOrderID; ``` + ### Step 4: Export Report Content to a File This example exports a report to a PDF file using the [TdxReport.ExportToPDF] method: -**Delphi:** + +#### Delphi + ```delphi AStream := TMemoryStream.Create; // AStream: TMemoryStream; try @@ -131,6 +142,8 @@ finally AStream.Free; end; ``` + + For detailed information on available export formats, refer to the following help topic: [TdxReport.ExportTo]. @@ -142,7 +155,9 @@ using a list of parameters. You need to initialize the report layout and data connection once (steps 1 and 2) and repeat steps 3 and 4 for each parameter. -**Delphi:** + +#### Delphi + ```delphi // ... for AOrderID in AOrderIDList: @@ -159,6 +174,7 @@ for AOrderID in AOrderIDList: end; end; ``` + ## Files to Review