News

May 06, 2025

Fast Reports on the “Delphi na Estrada” tour in Brazil

Fast Reports will participate in the "Delphi na Estrada" tour during May, and also launched a website with Portuguese localization.
April 22, 2025

Update of Delphi and Lazarus Products To 2025.2 Version

Get ready for the highly anticipated update for the entire line of Delphi and Lazarus products! With version 2025.2, you’ll enjoy exciting new features, including an easy-to-use tool for configuring watermarks, an updated set of server components, a brand-new dialog page mechanism for web reports, and the innovative TfrxDeviceCommand report object for RFID tags. We've also made significant enhancements to the reporting engine, improved export and transport options, added theme support, and much more! Upgrade your product today and unlock a world of new possibilities with us!     New Features in FastReport VCL User-Friendly Watermark Customization Tool   A customizable watermark feature has been added for report pages. Watermarks are often used for document protection or to indicate the type of document. We have introduced an easy-to-use tool that allows you to configure watermarks for each page of the report effortlessly. Any page in the report can have multiple watermarks, enabling individual customization for print, display, or export. Watermarks can utilize both images and text, with a wide range of customizable parameters (text rotation, style). Watermarks can be set up both in the report designer and in the preview mode.   Update of Server Components   With the release of 2025.2, all available export filters from FastReport VCL are now also available in server components. Take advantage of all these formats in your web application.   New Mechanism for WEB Report Dialog Pages   The completely revamped mechanism allows for the use of container objects such as PageControl and groups, as well as extending the functionality of available controls on the dialog page for web dialogs. In this update, we have expanded support for new components for dialog pages. Specifically, we have added dialog page controls that were not previously available in WEB. List of new dialog form controls: Date picker — date picker DBComboBox — drop-down list linked to a data source List Box — selection list CheckListBox — selection list (with checkboxes) MaskEdit (without mask) —Input field Password edit —input field for password PageControl —creating pages with tabs GroupControl — grouping panel Panel — panel You can now also apply a custom HTTP header for your projects.   New TfrxDeviceCommand Report Object  This non-visual object is designed to send commands to devices (exports) that can process these commands. In the current version, the object contains a settings class for RFID tags. RFID tags transmit non-visual data to the ZPL export to write this data to the chip using specialized equipment. The RFID tag class has its own editor and set of properties for precise adjustment of the information being written. You can read more in our article. Read the article The TfrxPDFView report object now allows you to configure the range of pages to be output. You can set values using expressions in the TfrxPDFView.PagesRange property. Thus, you have access to filtering the output pages for a PDF document.     Changes in the Report Engine Combining Object Output Techniques New changes to the report engine allow you to combine different object output techniques, giving you the freedom to create complex reports with a variety of options. The operation of the bottom alignment mechanism (baBottom) of a growing band has been changed when one of the band's objects is split into several parts (pages). In the old implementation, an object with the baBottom property is displayed on the very first part of the data break. The new mechanism for operating such a report corrects objects with baBottom, placing them on the last part of the data (at the end of the band). Please note that this behavior of the report engine is considered correct and should be taken into account when developing reports.   Support for smMaxHeight Stretching for a Static Table (AllowSplit rows only) The smMaxHeight stretching in a table works differently than in objects. The desired height is set for the entire table on the band. Then it is distributed among the rows with the AllowSplit=True property set and AutoSize=False disabled. Rows with the MaxHeight value are also taken into account. This approach allows you to choose which rows of the table can be stretched to fill the empty space, and which cannot.   New TfrxRichView Report Object Splitting Behavior The RichText object allows you to use tables, images, and other objects that cannot be split for a specific size. Such objects could sometimes create entire non-splittable blocks of content that extended beyond the page. In the current version, TfrxRichView splitting has been reworked and works selectively depending on the situation. Finding the smallest splittable part. If an object contains a part that cannot fit on a new page and is non-splittable (an object or table row is larger than the height of the entire sheet). Then the smallest "non-splittable" part is now found for such a part and is displayed as is. Splitting does not stop. If there are other parts, they will also be split and output. The main difference from the old mechanism is the search for the smallest value for the non-splittable part and the continuation of the build. Previously, all content fell into the "non-splittable" part and the separation stopped there, and some of the text could be lost. Finding the largest splittable part. If a part is encountered that cannot fit on a new page, but it is splittable, such as the same table, then a search for the largest splittable part will be performed and the output will continue.     Report Designer Added Theming Support (Runtime Themes) The report designer and its components have been adapted to support themes, both system and custom. Now the report designer will always be in the same style as your application! In Rad Studio 12.3, work with monitors with high display scaling was improved. This change is aimed at improving the quality of visualization and usability of the interface in the development environment when working on monitors with high resolution and scaling settings. In this update, the dialog editor in the report designer has been redesigned. Now this is a fixed workspace, just like the report page. The position of the dialog can be changed through the object inspector. Improved Code completion in the report code editing window. For your convenience, a pop-up menu has been added for the watch list window. We also redesigned the "Designer Options" window for the best support for small screen resolutions.   Exports and Transports Support for user-defined characters has been implemented in PDF and SVG exports (EUDC). Also improved alignment of RTL text with ligatures. Added support for ZUGFeRD 2.3 with the following profiles: “MINIMUM”,” BASIC WL”, ”BASIC”, ”EN 16931”, ”EXTENDED”, ”XRECHNUNG”. An example with the inclusion of data for this format can be found in InvoiceDemo, which comes with the product. In the new version, the mechanisms for exporting to XLSX and DOCX formats have been improved. This has enhanced the quality of the generated documents and expanded their customization options. The e-mail (SMTP) transport has been improved with native support for TLS\STARTTLS and support for XOAUTH authorization. Use secure channels to send your reports.     FastReport Lazarus In addition to the fundamental changes that have been included in the VCL and Lazarus versions, FastReport for Lazarus has received support for high-resolution monitors (HiDPI).     FastCube VCL and FMX In the VCL version of FastCube, all TTreeView controls have been replaced with TfrTreeView. All versions received filter indication in the list of available fields. The FMX version received the ability to save Custom Filter and Custom Group, as well as a number of improvements and fixes.     FastQueryBuilder Added support for high-resolution monitors (HiDPI).     FastScript In this update, we have implemented Android support. This innovation works only when compiling with strings that are indexed starting from one. You can use all the power of the script engine in your mobile Android applications. Added support for classes for working with XML and JSON. You can read more about how to work with these formats using the example of loading data into a report in this article. Read the article     FastReport VCL Controls For the TfrShellTreeView control, it became possible to create custom nodes and shortcuts to other nodes. You can read about how to configure TfrShellTreeView and add custom nodes in this article. Read the article     Installer You can now install our products with Android support. Also, support for installing packages on the 64-bit version of the IDE Embarcadero RAD Studio 12.3 has been added.     Complete List of Changes: 2025.2 version ========================   VCL.Core [Localization]- Fixed sorting in LocalizationEditor;   VCL.Controls [Engine]+ Added the ability to create a custom structure of root Shell Node and regular Node;- Fixed HiDPI support in smartMemo;- Fixed the behavior in which the control is not scaled when Parent is assigned when csFreeNotification is set in ComponentState;- Fixed some shortcomings in the rendering of TfrTreeView and TfrShellTreeView; [UI]- Fixed custom color rendering and disabled state for tfrTreeView; Lazarus.Controls [Engine]+ Added the ability to create a custom structure of root Shell Node and regular Node;- Fixed HiDPI support in smartMemo; [UI]- Fixed custom color rendering and disabled state for tfrTreeView;- Implemented HiDPI support for Lazarus;- Fixed some shortcomings in the rendering of TfrTreeView and TfrShellTreeView;   VCL.FastCube [UI]+ Added filter indication to the list of available fields;+ Added the ability to save Custom Filter and Custom Group;• TreeView replaced with TfrTreeView;- Fixed localization of the FastCube toolbar;   FMX.FastCube [UI]+ Added filter indication to the list of available fields;+ Added removal of ActivePopup in TfcxSliceGrid.FullUpdate;• TreeView replaced with TfrTreeView;- Fixed localization of the FastCube toolbar;- Fixed incorrect operation of the TfcxRangesEditor form;- Fixed the problem of positioning and visibility of the "OK", "Cancel" buttons;- Fixed FastCube FMX error in the selection rules editor;- Fixed the operation of incremental search in drop-down lists; [Engine]+ Added the ability to save Custom Filter and Custom Group;- Fixed an error when clicking in the Top-N filters list area after zeroing TfcxSliceGrid.Slice := nil;   Lazarus.FastCube [UI]+ Filtering indication added to the list of available fields;* TreeView replaced with TfrTreeView;- Localization of the FastCube toolbar fixed;   VCL.FastQueryBuilder [UI]+ First version of HiDPI added;   Lazarus.FastQueryBuilder [UI]+ First version of HiDPI added; VCL.FastScript [Engine]+ Support for XML and JSON added to FastScript;* Improvement of TfsTree by replacing TTreeView with TfrTreeView;- Fixed error in TfsScript.Destroy that could lead to a crash;   FMX.FastScript [Engine]+Added support for Android;- Error fixed in TfsScript.Destroy that could lead to a crash;   Lazarus.FastScript [Engine]+ Added support for XML and JSON to FastScript;* Improvement of TfsTree by replacing TTreeView with TfrTreeView;- Fixed error in TfsScript.Destroy that could lead to a crash;- Fixed fs_ibx package for compilation in Lazarus;   VCL.FastReport [Preview]+ Fixed collapsing when Application.MainFormOnTaskbar = True; [Engine]+ Added the ability to configure watermarks for report pages;* Modified the RichView splitting mechanism, added minimum non-breakable part definition;- Fixed HTMLView with Page.EndlessHeight;- Fixed "Class not found" error when using the UseFileCache property with empty pages in the report;- Fixed frxDecompressStream function;- Fixed error with incorrect value in CopyName macros;- Fixed date and time export to XLSX;- Fixed splitting of the RichView component with an empty line at the end;- Fixed SVG boundaries updating;- Fixed loading order of 'hmtx' table in TTF fonts;- Fixed error where a renamed dataset did not change the default username;- Fixed error where the print dialog reset settings when moved to a secondary screen;- Fixed size of the signature for non-visual components;- Fixed HiDPI support for smartMemo;- Fixed behavior of the band with additional height;- Fixed memory access error when using external DBX connection;- Fixed error when printing a nested report with multiple columns on the page;- Fixed missing line break in CellData.Text;- Fixed Memo AutoWidth error with macros like TotalPages;- Fixed error where some table events were triggered twice;- Fixed baBottom when the object breaks across multiple pages and added support for smMaxHeight for static tables (only AllowSplit rows);- Fixed rounding height error in band breaks;- Fixed left coordinate of the subreport when moving to a new page;- Fixed AnyDAC packages in FastReport product so they automatically install on RAD Studio XE3 and older IDEs;- Fixed error when macros are updated at design time;- Fixed duplex selection mode;- Fixed baBottom and smMaxHeight behavior in the page footer;- Fix that clears the ParentForm singleton when the parent form is closed not from the report component; [Exports]+ Improved export of RTL text to PDF;+ Added export of external symbols;+ Added support for ZUGfERD 2.3 in PDF export;- Removed compiler warning;- Fixed export of long HTMLView;- Fixed generation of PDF/A metadata;- Fixed PDF using the ZUGFeRD standard;- Fixed incorrect input focus transition via Tab in export dialogs;- Fixed numerical format in XLS export filter;- Fixed character size in SVG and PDF exports;- Removed floating anchor for the docx table, replaced with an empty line; [Client-server]+ Added new dialog form controls: Date picker, DBComboBox, ListBox, CheckListBox, MaskEdit (without mask), Password edit, PageControl, GroupControl, Panel;+ Added the ability to use a custom HTTP header in client-server components;* Redesigned the dialog generation engine, supporting nested controls and the ability to extend with custom controls;* Updated exports for client-server components;- Fixed an error when working with parameters and dialogs; [Designer]+ Improved rendering and functionality of designer elements in VCL themes;+ Added context menu for watch list windows in the report designer;* Redesigned the "Design -> Options" window for small screen resolutions;* Redesigned the dialog editor in the report designer;- Fixed error in RichEditor with older versions of msftedit.dll;- Fixed dialog scaling (TfrxDialogPage);- Fixed TfrxLabel behavior when AutoSize = True;- Fixed TfrxDesigner.DefaultFont functionality with HiDPI;- Fixed TfrxDialogPage behavior on a secondary screen;- Fixed barcode editing behavior in the report designer via the object inspector;- Fixed code completion behavior in nested procedures and functions in scripts, as well as in scripts with string concatenation expressions;- Fixed tooltip behavior in the code window;- Fixed menu style for the report designer in RAD 12.2 at design time; [Other]+ Added the ability to override the search form;* Updated Romanian resources;- Fixed compilation of InvoiceDemo;- Fixed example of CustomScrollsDemo; [Report object]+ Added support for single-page TIFF in TfrxPictureView;+ Added object for RFID Tags (TfrxDeviceCommand);+ Implemented a list of displayed pages in a PDF document (Range) in TfrxPDFView;- Fixed compatibility with HTML Viewer;- Fixed barcode rendering when ((Rotation > 0) and (WideBarRatio > 2));- Fixed default font size for the top label of barcodes with HiDPI;- Fixed behavior of the HTMLView component when colgroup width overrides td tag width settings;- Fixed report generation with RFID;- Fixed incorrect clipping in RichView;- Fixed label for two-dimensional barcodes;- Fixed label for two-dimensional barcodes;- Fixed setting "Swiss QRCode" for QRCode barcode;   FMX.FastReport [Engine]- Fixed "Class not found" error when using the UseFileCache property with empty pages in the report;- Fixed rotating text transfer when exporting to PDF;- Fixed date and time export to XLSX; [Exports]- Removed compiler warning;- Fixed WordWrap in PDF export with simple text visualization; [Designer]- Fixed group header editor;   Lazarus.FastReport [Engine]+ Added the ability to configure watermarks for report pages;- Fixed HTMLView with Page.EndlessHeight;- Fixed "Class not found" error when using the UseFileCache property with empty pages in the report;- Fixed frxDecompressStream function;- Fixed error with incorrect value in CopyName macros;- Fixed date and time export to XLSX;- Fixed loading order of 'hmtx' table in TTF fonts;- Fixed error where a renamed dataset did not change the default username;- Fixed error that caused the print dialog to reset settings when moved to a secondary screen;- Fixed error when creating TfrxComboEdit for Lazarus;- Fixed size of the signature for non-visual components;- Fixed HiDPI support for smartMemo;- Fixed behavior of the band with additional height;- Fixed memory leak when exporting PDF in Linux;- Fixed error when macros are updated at design time;- Fixed duplex selection mode;- Fixed baBottom and smMaxHeight behavior in the page footer;- Fix that clears the ParentForm singleton when the parent form is closed not from the report component; [Exports]+ Improved export of RTL text to PDF;+ Added export of external symbols;- Removed compiler warning;- Fixed export of long HTMLView;- Fixed generation of PDF/A metadata;- Fixed PDF using the ZUGFerd standard;- Fixed PDF export with HiDPI;- Fixed export dialogs with HiDPI;- Fixed image inversion in ZPL export; [Client-server]+ Added new dialog form controls: Date picker, DBComboBox, ListBox, CheckListBox, MaskEdit (without mask), Password edit, PageControl, GroupControl, Panel;+ Added the ability to use a custom HTTP header in client-server components;* Redesigned the dialog generation engine, supporting nested controls and the ability to extend with custom controls;* Updated exports for client-server components;- Fixed an error when working with parameters and dialogs; [Designer]- Fixed error in RichEditor with older versions of msftedit.dll;- Fixed dialog scaling (TfrxDialogPage);- Fixed TfrxLabel behavior when AutoSize = True;- Improved rendering and functionality of designer elements in VCL themes; [Other]+ Added the ability to override the search form; [Report object]+ Added object for RFID Tags (TfrxDeviceCommand);- Fixed behavior of the HTMLView component when the colgroup width overrides the settings for the "td" tag;- Fixed label for two-dimensional barcodes;- Fixed compatibility with HTML Viewer;- Fixed creation of composite barcodes; [Preview]- Fixed preview with HiDPI.  
April 17, 2025

Importing documents from Word is already available in FastReport .NET Ultimate

With the release of 2025.2 subscribe to Ultimate .NET has become even a better deal! All license holders can get an additional plugin that allows you to import Microsoft Word documents (.docx). When you open such a file, it is converted into a report template FastReport .NET (.frx). The subscription price for Ultimate .NET has remained the same. Due to the large differences in formats, it is not always possible to fully match the two documents. However, this plugin allows you to significantly reduce the time needed to create a template based on an existing docx file. At the moment, our plugin does not support: highlighting the background of a part of the string, shapes, as well as nested vector graphics Vector Markup Language (VML) and OLE objects.  To start using this plugin in your business solution right now, update your license to version 2025.2 in your personal account. Then follow the instructions below to register the dll in FastReport, or connect the nuget package FastReport.Plugins.OOXMLImport. You can read about the import features and how to enable the plugin in the article. Read the article
April 14, 2025

50% off FastReport Single license renewal — only until April 30!

Great news for owners of FastReport VCL and FastReport .NET Single licenses! Until April 30, you can renew your license with an impressive 50% discount. It’s a perfect opportunity to regain access to the latest updates, improvements, and technical support. Plus, you’ll save a significant amount — starting from $200!     Why it matters: Back on track — keep using FastReport at full efficiency; Risk-free — renewal ensures correct operation and stability; Maximum value — stay up to date with all the new features and enhancements. Don’t put it off — this special offer is only available for a few weeks! Contact us at sales@fast-report.com to take advantage of it.
April 08, 2025

Updating .NET products to version 2025.2

Meet the new release 2025.2  for supply options FastReport .NET: WinForms, WPF, Avalonia, Mono, WEB, Ultimate. Support is waiting for you in this update .NET 9, a library for executing scripts in C#, a plugin for importing documents from Word, a connector to Apache Ignite, improvements to the designer and exports, as well as new features in WebReport. Don't miss the opportunity to update FastReport .NET and expand your capabilities!     Import of Word documents The FastReport .NET Ultimate component set now includes a plug-in that allows you to import Microsoft Word (.docx) documents. When you open such a file, it is converted into a FastReport .NET report template (.frx). Due to the large differences in formats, it is not always possible to completely match two documents. However, this plugin allows you to significantly reduce the time required to create a template based on an existing docx file. At the moment our plugin does not support: background highlighting of part of a line, Shapes, as well as nested vector graphics Vector Markup Language (VML) and OLE objects. You can read about the peculiarities of import and how to connect the plugin in the article. Read the article     .NET 9 Support This platform improves application performance and adds many new features for your projects. There is more support in this update .NET 9 for: FastReport .NET, FastReport.Core, FastReport.Core.Skia, FastReport.WPF, FastReport.Avalonia, FastReport.Web, FastReport.Web.Skia, FastReport.Blazor.Wasm. We have done away with binary serialization. BinaryFormatter caused a number of security issues and Microsoft in .NET 9 dropped its use. Our team has also removed the BinaryFormatter class from the source code. You can read more about it at this link. Learn more     Report Designer Improvements Also in this version, several useful features have been introduced to simplify work with reports. In the Object Inspector, you can now quickly copy data from the list of object properties using the Ctrl + C hotkeys. This will help you easily transfer object properties between different parts of the document or even between different reports. In addition, it is now possible to copy totals and parameters while preserving the nesting hierarchy. This means that when copying complex data structures, their original organization will be preserved, avoiding      Connection to Apache Ignite With this update, a new plugin has been added that greatly simplifies the process of working with Apache Ignite databases when creating reports. This plugin allows you to directly connect reports to the specified databases, providing convenient access to the necessary data for analysis and visualization.  The Apache Ignite connector is implemented based on the .NET Thin Client Ignite.NET. It provides the ability to connect to Apache Ignite clusters, work with caches (including SQL tables) and process various types of data. In addition, the connector supports connecting to one or more Apache Ignite nodes. Node addresses are specified in host:port format and separated by commas. Connection is possible with or without authentication (if authenticationEnabled is used in the configuration). The connector supports working with caches created as key-value and SQL tables. For caches with QueryEntity metadata, operations of getting the list of fields and their data types are supported. Read more in the article. Read the article     Improvements of the preview window In OutlineControl we have added handy buttons with icons for minimizing and maximizing. These buttons were there before, but without icons. In addition, properties have been added that allow you to change the width and height of the scrollbars in the preview window.     Export Improvements Added export of number, currency, date, time and percent formats to OpenOffice Calc (.ods).  This update also introduces a new paragraph export mode for OpenOffice Writer (.odt) format files. This makes it easier to edit generated documents and makes them more visually understandable to humans. The new export mode does not replace but complements the existing mode and extends its capabilities.   In addition, an “Autosize width” option for MS Excel export has been added. Will only work with certain values of text object properties: AutoWidth and AutoShrink properties are enabled; HorzAling property value is any except Justify.     Changes in WebReport   Search across the entire report Added text search for the entire report, similar to the desktop version of the Viewer, if a word is found on another page, the viewer will automatically switch to it. Search is available in WebReport with FastReport.Core, in WebReport for Blazor Server and WebReport for Blazor Wasm. You can control the display of the search button by using the property:  WebReport.Toolbar.ShowSearchButton = false; The highlighting color of the words found can be changed using the property: WebReport.Toolbar.SearchHighlight = Color.Red;   Improvements in caching configuration for WebReport With the release of the new version, WebReport now has additional options for caching configuration. First, you can now set individual caching parameters for each specific instance of WebReport. Previously, only general settings applied to all reports were available, which could be inconvenient, especially if you needed to keep certain reports in memory longer. With the webReport.CacheOptions property, you can customize the cache retention time for a specific report. Secondly, there is more flexibility in setting the report cache retention time thanks to the AbsoluteExpirationDuration and AbsoluteExpiration options. Previously, only the CacheDuration option was used, which was based on a sliding principle: if the report was used for a given amount of time, the timer would reset and the report would remain in memory. This could result in a report never being removed from the cache. The new parameters allow you to specify the exact time when a report should be permanently deleted from the cache, regardless of its usage. In this case, CacheDuration and the new parameters AbsoluteExpiration and AbsoluteExpirationDuration can be used together.   // Global settings for all WebReports services.AddFastReport(options => { options.CacheOptions.CacheDuration = TimeSpan.FromMinutes(10); options.CacheOptions.AbsoluteExpirationDuration = TimeSpan.FromMinutes(20); });   // Individual WebReport settings, which take precedence webReport.CacheOptions = new WebReportCacheOptions() { CacheDuration = // ..., AbsoluteExpiration = DateTime.Now.AddMinutes(30), // or AbsoluteExpirationDuration = // ... };     Updated demo web application on ASP .NET Core We have updated our demo application to ASP.NET Core, so that the product pleases you not only with its functionality, but also with its appearance. The updated application is available at the link. Online demo     Updated Online Designer Demo In addition, we have updated the Online Designer demo application, where you can view more examples of our reports, export them, and try the updated online designer on them. The updated application is available at the link. Try the demo     Support of FastScript .NET Added ability to use FastScript .NET to run report scripts. FastScript .NET is a library for running C# scripts. It does not depend on CodeDOM/Roslyn and can be used in environments where code generation is restrictedя (Native AOT, iOS, WASM).  FastScript .NET is included in the following supply options FastReport .NET: WinForms, WPF, Avalonia, Mono, WEB, Ultimate. To use FastScript .NET in the FastReport .NET: in your application, add the FastReport.Plugins.FastScript nuget package; run the following code before the first use of the Report class: FastReport.Code.CodeProvider.DefaultProvider = typeof(FastReport.Code.FastScript.FastScriptCodeProvider); Now, all the reports will utilise FastScript .NET to calculate expressions and run the report script. FastScript .NET does not support VB.NET script language. The dynamic type is not supported too, some of "Advanced Matrix" functions will not work. Detailed documentation on how to work with FastScript .NET is available at this link. Online documentation     Full list of changes [Engine]+ added new scripting engine - FastScript .NET;+ added support for vertical tabulation;+ added import of DOCX files to FRX report template;+ added support of encoding for Chinese (simplified) language when converting RTF;+ added the ability to disable integration with FastReport Cloud;+ added GS1 Datamatrix barcode;+ added the conversion of SkBitmap to a Bitmap and Image in FastReport.SkiaDrawing;- fixed error with RichObject (zh-tw codepage);- fixed a bug with simultaneous compilation of a report script when preparing reports in multiple threads;- fixed a bug when printing an empty matrix;- fixed bug when passing null value to a MS SQL query parameter;- fixed errors when compiling libraries under .NET 9;- fixed a bug leading to infinite loop when child band of "Page Header" or "Column Header" has "StartNewPage" property turned on;- fixed a bug leading to System.ArgumentException when connecting to MySQL;- fixed calculation of PrintableExpression of page;- fixed a bug leading to System.NullReferenceException in the Report.GetParameterValue method; [Designer]+ added a possibility to copy data from the list of properties of an object using the keyboard shortcut Ctrl + C;+ added the ability to copy totals and parameters, preserving their hierarchy;* in the window for opening the report page, it is still possible to select only a *.frx file;* in the Mono designer settings, the tab "Code page" with inaccessible settings was hidden;* changed the logic of style processing for .rtf files when opened in the designer;- fixed a bug where the image of PictureObject disappeared after canceling changes in the designer when editing a prepared page;- fixed a bug with the search filter in the data tree that reset the current search state;- removed the "New Dialog" context menu item in the Community version, which when selected resulted in an unhandled exception;- fixed a bug when running preview from a designer;- fixed System.InvalidOperationException when deleting a data source column when that column no longer exists in the database;- fixed reading the GS1 DataMatrix barcode as a DataMatrix;- fixed a bug with selecting layout of band columns in "Data Band Column Editor" window;- fixed deleting objects and categories from the sidebar in the designer;- fixed a bug with displaying icons that appeared in version AvaloniaUI 11.1;- fixed deleting objects and categories from the sidebar in the designer;- fixed a bug when adding IsNull function via "Text editor" added an extra comma; [Preview]+ added a button to send a report by email when using MAPI in a preview in WPF;+ added collapse and expand buttons with icons in OutlineControl;+ added the ability to change the width and height of the scroll bar through the code;- fixed disabling the button to save the prepared report in the preview;- fixed disabling the "Storage" tab in the report saving menu in the preview;- fixed bug with "Advanced Matrix" when filters are missing;- fixed a bug where the print form did not appear in the preview when pressing Ctrl + P;- fixed a bug with incorrect paper size for printers without "Auto paper size" option, when clicking "Settings" and then "Advanced" buttons in "Print" window; [Exports]+ added export of "Author" property in export to PDF/A;+ added support for HTML non-breaking space tag when exporting to Excel;+ added export of number, currency, date, time, and percentage formats to OpenOffice Calc (.ods);+ added "Shrink to fit" option for export to MS Excel;+ added paragraph export mode in OpenOffice Writer export (.odt files)* now, when exporting Pages with ExportAlias property to Excel, suffix "-n" will not be added to sheet name if it's possible;- fixed a bug where the font name was exported without quotes to HTML;- fixed a bug in FR.Core with some user fonts;- fixed a bug in HTML-export when the barcode border was not displayed;- fixed the error of opening files when exporting a report with special characters to ODT and ODS formats;- fixed incorrect display and export of some unicode symbols in Skia/Avalonia;- fixed export of TableObject fills to PDF;- fixed export of TableObject and page fills to HTML;- added export of height for the merged cells in Excel export; [WebReport]+ added WebReport search;+ added WebReport WASM search;+ added .NET 9 support for FastReport.Blazor.Wasm;+ added the ability to create a connection to a stored procedures in WebReport;+ added the ability to configure caching for a single WebReport using the WebReport.CacheOptions property;- fixed an issue that made it impossible to change the DataConnection after it was created in OnlineDesigner;- fixed converting of TextObject to SVG when preview in Blazor;- fixed support for the Size of the CommandParameter;- fixed rendering of page toggle buttons in Blazor when they are disabled;- fixed a bug when the value of the RouteBasePath parameter was not taken into account when setting up WebReport; [.NET Core]+ added a filter for connection tables;+ added a JsonConnectionType class for use in the JsonDataConnection.GetConnectionType method and GetConnectionType() and GetParameterType() methods;- fixed a bug with encoding when connecting of CSV data file for report in .NET Core; [Common]* changed width of "About..." window; [Extras]+ added connection to Apache Ignite; [Demos]+ added UsedPackages.version file for WPF packs;- fixed Avalonia and WPF name in demo.
April 07, 2025

Release the new version of FastCube .NET 2025.2

In this update, we focused on speeding up calculations, improving compatibility with .NET 9, and making changes easier to understand.     Transition to invariant mathematics – up to 2 times faster! One of the most significant improvements was the abandonment of the "variant" type in favor of invariant mathematics. This change led to a significant acceleration of the make and recalculation of the cube, in some cases - more than 2 times! In addition, the cube now works correctly in various localizations, including non-standard ones (other than Latin), which expands its application for international users.     Splitting changes by product FastCube .NET updates are now split into different products (WinForms, Web, Mono, and general FastCube .NET). This makes the update process more transparent – you can immediately see what changes affect the version you need.     Fixed error reading stream from compressed file Previously, in some cases, compressed files were not processed correctly, which could cause data to load incorrectly or not load at all. Now this bug is fixed and the mechanism for working with compressed files is completely fixed. This means: Correct reading of data from archive files. More stable performance when loading large files. No errors in multithreaded mode, which is especially important for Web applications. If your project makes heavy use of data compression, we recommend upgrading to version 2025.2 to avoid potential issues.     The file signature for the cube is now immutable (const instead of static) Previously, the file signature was declared as static, which allowed it to be changed during program execution. In some cases, this could lead to errors related to data structure changes or even file corruption. New version: The signature is now declared as const, making it immutable at the code level. The integrity of the file structure is guaranteed, regardless of changes in the program code. Improved stability of working with cube files in different environments, including Web and Mono. This is especially important for developers who work in multi-user and distributed systems.     Compatibility with .NET 9   One of the key improvements was the addition of .NET 9 support. FastCube .NET is now fully compatible with the latest version of the platform, allowing you to take advantage of new features and improvements offered by Microsoft. This is an important update for developers who are port to .NET 9 or planning to use it in their projects. We would like to point out that support for new versions ensures stable operation of the product and integration with the latest technologies.     Updating supported versions of .NET The main version is now .NET 8, which is the current standard for most enterprise projects. However, support for .NET 6 is retained, which is a long-term version with extended support. Additionally, as mentioned, .NET 9 support has been added, giving you flexibility in choosing the platform to work with FastCube .NET, whether it's stability (via .NET 6) or the latest features and performance improvements (.NET 9).     Fixes and improvements in the demo example In the demo for the boolean format, a bug was fixed that caused the data to be displayed incorrectly. Now this format works correctly and does not cause errors, which improves the experience of users working with demo examples. In the "Sales by months" demo cube, there were previously situations where the headers were displayed incorrectly. Now this error has been fixed, and the field names are displayed correctly, ensuring accuracy and ease of working with data.     Improving data serialization One of the important improvements is the optimization of the data serialization process. New methods have been added and properties have been set, due to which default values are now serialized less frequently. Reducing the amount of serialized data reduces the load on the system when saving and loading information. In addition, these changes contribute to improved performance, which will be especially noticeable when working with large data sets.     List of changes FastCube .NET WinForms [Common]- fixed a bug where the stream from a compressed file was read incorrectly;* the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET Web [Common]- fixed a bug where the stream from a compressed file was read incorrectly;* the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET Mono [Common]- fixed a bug where the stream from a compressed file was read incorrectly;* the file signature for the cube now has a const modifier instead of static and cannot be changed; FastCube .NET [Common]+ added compatibility with .NET 9;+ .NET versions have been updated, the main version is now .NET 8, and supported target platforms include .NET 6, .NET 8, and .NET 9;* some properties are hidden from the user in the WinForms editor;* the "variant" type was replaced by variant mathematics;* improved serialization, added methods and set properties, due to which default values are serialized less often;- corrected display of the field name in the "Sales by months" demo cube;- fixed bug in demo example for boolean format.     Other critical changes General changes for FastCube Web, FastCube WinForms and FastCube Mono Deprecated delegates. They were replaced with compatible ones, because the Variant type was removed and now boxing via Object is used instead: Click here to expand   FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], FastReport.Olap.Utils.Variant[], System.Int32)   Deprecated fields. The following fields have been replaced with the corresponding properties: Click here to expand   FastReport.Olap.Types.BoolValue -> public System.Boolean Value FastReport.Olap.Types.ByteValue -> public System.Byte Value FastReport.Olap.Types.DateTimeValue -> public System.DateTime Value FastReport.Olap.Types.DecimalValue -> public System.Decimal Value FastReport.Olap.Types.DoubleValue -> public System.Double Value FastReport.Olap.Types.FloatValue -> public System.Single Value FastReport.Olap.Types.IntValue -> public System.Int32 Value FastReport.Olap.Types.LongValue -> public System.Int64 Value FastReport.Olap.Types.SByteValue -> public System.SByte Value FastReport.Olap.Types.ShortValue -> public System.Int16 Value FastReport.Olap.Types.StringValue -> public System.String Value FastReport.Olap.Types.TimeSpanValue -> public System.TimeSpan Value FastReport.Olap.Types.UIntValue -> public System.UInt32 Value FastReport.Olap.Types.ULongValue -> public System.UInt64 Value FastReport.Olap.Types.UShortValue -> public System.UInt16 Value FastReport.Olap.Slice.MeasureCell -> public FastReport.Olap.Utils.Variant Value   Deprecated methods. Replaced with compatible methods, but instead of the Variant type, data boxing is now used via Object, which allows passing not values with memory copying, but a reference to an object. Click here to expand   FastReport.Olap.Types.BoolDTP -> public FastReport.Olap.Types.BoolValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ByteDTP -> public FastReport.Olap.Types.ByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public T VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DateTimeDTP -> public FastReport.Olap.Types.DateTimeValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DecimalDTP -> public FastReport.Olap.Types.DecimalValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.DoubleDTP -> public FastReport.Olap.Types.DoubleValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.FloatDTP -> public FastReport.Olap.Types.FloatValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.IntDTP -> public FastReport.Olap.Types.IntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.LongDTP -> public FastReport.Olap.Types.LongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Range -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.Ranges -> public System.Boolean Match(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.SByteDTP -> public FastReport.Olap.Types.SByteValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ShortDTP -> public FastReport.Olap.Types.ShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.StringDTP -> public FastReport.Olap.Types.StringValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.TimeSpanDTP -> public FastReport.Olap.Types.TimeSpanValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UIntDTP -> public FastReport.Olap.Types.UIntValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.ULongDTP -> public FastReport.Olap.Types.ULongValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Types.UShortDTP -> public FastReport.Olap.Types.UShortValue VariantToValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.AxisContainer -> public FastReport.Olap.Utils.Variant GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, FastReport.Olap.Utils.Variant) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(FastReport.Olap.Utils.Variant, System.Boolean) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(FastReport.Olap.Utils.Variant) FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public FastReport.Olap.Utils.Variant GetDetailValue(System.Int32, System.String)   Deprecated properties. The following properties have been replaced by using boxing instead of the Variant type: Click here to expand   FastReport.Olap.Types.BoolValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DateTimeValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DecimalValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.DoubleValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.FloatValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.IntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.LongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant HighRange { public get; public set; } FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.StringValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UIntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.ULongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Types.UShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> FastReport.Olap.Utils.Variant Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> FastReport.Olap.Utils.Variant Value { public get; public set; } FastReport.Olap.Slice.SliceField -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.ContainerFieldItem -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimension -> FastReport.Olap.Utils.Variant CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> FastReport.Olap.Utils.Variant DetailValue { public get; } FastReport.Olap.Code.Measure -> FastReport.Olap.Utils.Variant CurrentValue { public get; }   Deprecated Types. The following types are deprecated and have been removed entirely because they are no longer used. FastReport.Olap.Utils.Variant FastReport.Olap.Types.IVariantable FastReport.Olap.Types.UnAssigned   The new delegates replace the old ones, which used the Variant type. FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, System.Object, System.Object, System.Int32) FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, System.Object, System.Int32) FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], System.Object[], System.Int32)   The new field replaces the existing ones, now boxing via Object is used instead of the Variant type. FastReport.Olap.Slice.MeasureCell -> public System.Object Value   The new methods replaced the old ones, which used the Variant type. Now, boxing is used instead, and data is transferred by reference, not by value, which has significantly increased the speed. Click here to expand   FastReport.Olap.Types.Range -> public System.Boolean Match(System.Object) FastReport.Olap.Types.Ranges -> public System.Boolean Match(System.Object) FastReport.Olap.Slice.AxisContainer -> public System.Object GetValue(System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, System.Object) FastReport.Olap.Slice.Slice -> public System.Object CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection) FastReport.Olap.Slice.Slice -> public System.Object GetMeasureValue(System.Int32, System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValue(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValueFromRecord(System.Int32) FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, System.Object&) FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(System.Object, System.Boolean) FastReport.Olap.Cube.BaseDataReaderDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.BaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, System.Int32) FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, System.Object&) FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, System.Object&) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, System.Object) FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, System.Object) FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.IBaseDataSet -> public System.Object GetValue(System.Int32) FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByOrder(System.Int32) FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByValueId(System.Int32) FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(System.Object) FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetValue(System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetTotalValueForDims(System.Int32, System.String) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Int32) FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Object) FastReport.Olap.Code.Measure -> public System.Object GetTotalValueForDims(System.String) FastReport.Olap.Code.Measures -> public System.Object GetDetailValue(System.Int32, System.String)   New properties have replaced or expand the deprecated ones: Click here to expand   FastReport.Olap.Types.BoolValue -> System.Boolean Value { public get; public set; } FastReport.Olap.Types.ByteValue -> System.Byte Value { public get; public set; } FastReport.Olap.Types.DateTimeValue -> System.DateTime Value { public get; public set; } FastReport.Olap.Types.DecimalValue -> System.Decimal Value { public get; public set; } FastReport.Olap.Types.DoubleValue -> System.Double Value { public get; public set; } FastReport.Olap.Types.FloatValue -> System.Single Value { public get; public set; } FastReport.Olap.Types.IntValue -> System.Int32 Value { public get; public set; } FastReport.Olap.Types.LongValue -> System.Int64 Value { public get; public set; } FastReport.Olap.Types.Range -> System.Object HighRange { public get; public set; } FastReport.Olap.Types.Range -> System.Object LowRange { public get; public set; } FastReport.Olap.Types.SByteValue -> System.SByte Value { public get; public set; } FastReport.Olap.Types.ShortValue -> System.Int16 Value { public get; public set; } FastReport.Olap.Types.StringValue -> System.String Value { public get; public set; } FastReport.Olap.Types.TimeSpanValue -> System.TimeSpan Value { public get; public set; } FastReport.Olap.Types.UIntValue -> System.UInt32 Value { public get; public set; } FastReport.Olap.Types.ULongValue -> System.UInt64 Value { public get; public set; } FastReport.Olap.Types.UShortValue -> System.UInt16 Value { public get; public set; } FastReport.Olap.Slice.CalculateMeasureEventArgs -> System.Object Data { public get; public set; } FastReport.Olap.Slice.CalculateValueEventArgs -> System.Object Value { public get; public set; } FastReport.Olap.Slice.SliceField -> System.Object CurrentValue { public get; } FastReport.Olap.Format.CustomFormat -> System.String DefaultFormatValue { public get; public set; } FastReport.Olap.Code.ContainerFieldItem -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimension -> System.Object CurrentValue { public get; } FastReport.Olap.Code.Dimensions -> System.Object DetailValue { public get; } FastReport.Olap.Code.Measure -> System.Object CurrentValue { public get; }   New types: FastReport.Olap.Utils.VMath - replaced the Variant type, now mathematics occurs through invariant calculations using boxing and type conversion. FastReport.Olap.Types.IValueStruct``1<T> - interface for implementing own boxing type. FastReport.Olap.Types.SimpleCompareAction - enumeration for types of invariant mathematics actions.   Changes for FastCube WinForms and FastCube Mono The deprecated field has been replaced with a technically compatible one. FastReport.Olap.Controls.SizingInfo -> public FastReport.Olap.Utils.Variant Data New field: FastReport.Olap.Controls.SizingInfo -> public System.Int32 Data  
April 07, 2025

Release of FastReport Business Graphics .NET 2025.2

We are pleased to announce the release of FastReport Business Graphics .NET! In this update, we focused on increasing compatibility, improving support for modern platforms, and preparing for future versions of .NET.     Compatibility with .NET 9 One of the key changes was the addition of the necessary attributes to the components to ensure full compatibility with .NET 9. This means that FastReport Business Graphics .NET now works correctly in the most latest environments, maintaining stability, performance and support for new features of the framework. If you are planning to port to .NET 9 or are already using it in your projects, you can be sure that our components are ready to work without any additional modifications!     Updating supported .NET versions We have updated the list of target platforms, focusing on modern developer requirements: The main version is now considered to be .NET 8 – it is a stable and productive framework that is recommended for most projects. Support for .NET 6 is also retained for those who haven't upgraded yet but are using long-term support (LTS). Added support for .NET 9 – for developers who want to use the latest technologies and features. Thanks to these changes, FastReport Business Graphics .NET remains a relevant tool for working with business graphics in your projects.     List of changes [Common] + added attributes to components required for compatibility with .NET 9; + .NET versions have been updated, the main version is now .NET 8, and supported target platforms include .NET 6, .NET 8, and .NET 9.
April 02, 2025

More flexibility with the new "Business" license type

Since April 1, 2025, there will be a licensing option available for FastReport .NET and FastReport VCL. The "Business" license is designed for teams of developers from 5 to 12 people, which is a perfect fit when the "Team" license is too small and the "Site" is excessive. What else is included in the new license option? Personal manager Priority support Build server Access to knowledge base and products webinars Early access to special offers Personal discount and preferential terms for the subscription renewal Access for up to 12 developers at one geographic address Available in 32 languages Documentation in 2 languages: English and German   Choose the one that suits you the best Full price list
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.