News

06 de maio de 2025

Fast Reports no Brasil com relatórios e descontos de 25%

Fast Reports fará parte da turnê Delphi na Estrada e oferecerá descontos de 25% para todos os clientes nos pacotes de componentes FastReport. NET e FastReport VCL
22 de abril de 2025

Atualização dos produtos Delphi e Lazarus para a versão 2025.2

Prepare-se para a tão esperada atualização de toda a linha de produtos Delphi e Lazarus! Com a versão 2025.2, você desfrutará de novos recursos interessantes, incluindo uma ferramenta fácil de usar para configurar marcas d'água, um conjunto atualizado de componentes de servidor, um novo mecanismo de página de diálogo para relatórios da web e o inovador objeto de relatório TfrxDeviceCommand para etiquetas RFID. Também fizemos melhorias significativas no mecanismo de relatórios, melhoramos as opções de exportação e transporte, adicionamos suporte a temas e muito mais! Atualize seu produto hoje e desbloqueie um mundo de novas possibilidades conosco!     Novos recursos no FastReport VCL Ferramenta De Personalização De Marca D'Água De Fácil Utilização Um recurso de marca d'água personalizável foi adicionado para páginas de relatório. As marcas d'água são frequentemente usadas para proteção de documentos ou para indicar o tipo de Documento. Introduzimos uma ferramenta fácil de utilizar que lhe permite configurar marcas de água para cada página do relatório sem esforço. Qualquer página do relatório pode ter várias marcas d'água, permitindo a personalização individual para impressão, exibição ou exportação. As marcas d'água podem utilizar imagens e texto, com uma ampla gama de parâmetros personalizáveis (rotação de texto, estilo). As marcas de água podem ser configuradas tanto no criador de relatórios como no modo de pré-visualização.   Actualização dos componentes do servidor Com o lançamento do 2025.2, todos os filtros de exportação disponíveis do FastReport VCL agora também estão disponíveis nos componentes do servidor. Tire partido de todos estes formatos na sua aplicação web.   Novo mecanismo para páginas de diálogo de Relatórios WEB O mecanismo completamente renovado permite a utilização de objectos de contentores, tais como PageControl e groups, bem como alargar a funcionalidade dos controlos disponíveis na página de diálogo para os diálogos web. Nesta atualização, expandimos o suporte para novos componentes para páginas de diálogo. Especificamente, adicionamos controles de página de diálogo que não estavam disponíveis anteriormente em WEB. Lista de novos controlos de formulário de diálogo: Date picker — selecionador de data DBComboBox — lista suspensa vinculada a uma fonte de dados List Box — lista de selecção CheckListBox — lista de seleção (com caixas de seleção) MaskEdit (sem máscara) — campo de entrada Password edit — campo de entrada para password PageControl — criação de páginas com separadores GroupControl — painel de agrupamento Panel — painel Agora você também pode aplicar um cabeçalho HTTP personalizado para seus projetos.   Novo Objeto De Relatório TfrxDeviceCommand Este objeto não visual é projetado para enviar comandos para dispositivos (exportações) que podem processar esses comandos. Na versão atual, o objeto contém uma classe settings para etiquetas RFID. As etiquetas RFID transmitem dados não visuais para a exportação ZPL para gravar esses dados no chip usando equipamento especializado. A classe de etiquetas RFID tem o seu próprio editor e conjunto de propriedades para um ajuste preciso da informação que está a ser escrita. Você pode ler mais em nosso artigo. Leia o artigo O objeto de relatório TfrxPDFView agora permite configurar o intervalo de páginas a serem produzidas. Você pode definir valores usando expressões no  TfrxPDFView.PagesRange.  Assim, você tem acesso à filtragem das páginas de saída de um documento PDF.     Alterações no mecanismo de relatório Combinando Técnicas De Saída De Objetos Novas alterações no mecanismo de relatórios permitem combinar diferentes técnicas de saída de objetos, dando a você a liberdade de criar relatórios complexos com uma variedade de opções. O funcionamento do mecanismo de alinhamento do fundo (baBottom) de uma banda em crescimento foi alterado quando um dos objectos da banda é dividido em várias partes (páginas). Na implementação antiga, um objeto com a propriedade baBottom é exibido na primeira parte da quebra de dados. O novo mecanismo de funcionamento desse relatório corrige os objectos com o baBottom, colocando-os na última parte dos dados (no final da banda). Observe que esse comportamento do mecanismo de relatório é considerado correto e deve ser levado em consideração ao desenvolver relatórios.   Suporte para alongamento smMaxHeight para uma tabela estática (apenas linhas AllowSplit) O alongamento smMaxHeight em uma tabela funciona de forma diferente do que em objetos. A altura desejada é definida para toda a mesa da banda. Em seguida, ele é distribuído entre as linhas com a propriedade AllowSplit=True definida e AutoSize=False desativada. As linhas com o valor MaxHeight também são levadas em consideração. Essa abordagem permite que você escolha quais linhas da tabela podem ser esticadas para preencher o espaço vazio e quais não podem.   Novo Comportamento De Divisão De Objetos Do Relatório TfrxRichView O objeto RichText permite que você use tabelas, imagens e outros objetos que não podem ser divididos para um tamanho específico. Tais objetos poderiam, por vezes, criar blocos inteiros de conteúdo não repartíveis que se estendiam para além da página. Na versão actual, a divisão TfrxRichView foi reformulada e funciona selectivamente em função da situação. Encontrar a menor parte divisível. Se um objeto contiver uma parte que não pode caber numa nova página e não é dividível (um objeto ou linha de tabela é maior do que a altura de toda a folha). Em seguida, a menor parte" não dividível " é agora encontrada para essa parte e é exibida como está. A divisão não pára. Se houver outras partes, elas também serão divididas e produzidas. A principal diferença em relação ao mecanismo antigo é a busca do menor valor para a parte não dividível e a continuação da construção. Anteriormente, todo o conteúdo caiu na parte" não dividível " e a separação parou aí, e parte do texto poderia ser perdida. Encontrar a maior parte divisível. Se for encontrada uma parte que não pode caber numa nova página, mas que pode ser dividida, tal como a mesma tabela, então será realizada uma pesquisa para a maior parte que pode ser dividida e o resultado continuará.     Designer De Relatórios Adicionado Suporte A Temas (Temas De Tempo De Execução) O criador do relatório e os seus componentes foram adaptados para apoiar temas, tanto do sistema como do costume. Agora, o designer de relatórios estará sempre no mesmo estilo da sua aplicação!   No RAD Studio 12.3, o trabalho com monitores com alta escala de exibição foi melhorado. Essa mudança visa melhorar a qualidade da visualização e usabilidade da interface no ambiente de desenvolvimento ao trabalhar em monitores com configurações de alta resolução e dimensionamento. Nesta actualização, o editor de diálogo no criador de relatórios foi redesenhado. Agora, este é um espaço de trabalho fixo, assim como a página do relatório. A posição da caixa de diálogo pode ser alterada através do inspector de objectos.   Melhoria do preenchimento de código na janela de edição de código do relatório. Para sua conveniência, foi adicionado um menu pop-up para a janela da lista de observação. Também redesenhámos a janela" Opções de design " para obter o melhor suporte para resoluções de ecrã pequeno.   Exportações e Transportes O suporte para caracteres definidos pelo utilizador foi implementado nas exportações de PDF e SVG (EUDC). Também melhorou o alinhamento do texto RTL com ligaduras. Adicionado suporte para ZUGFeRD 2.3 com os seguintes perfis: "mínimo"," basic WL", "BASIC", "EN 16931", "EXTENDED", "XRECHNUNG". Um exemplo com a inclusão de dados para este formato pode ser encontrado em InvoiceDemo, que acompanha o produto. Na nova versão, os mecanismos de exportação para os formatos XLSX e DOCX foram melhorados. Isso melhorou a qualidade dos documentos gerados e expandiu suas opções de personalização. O transporte de E-mail (SMTP) foi melhorado com suporte nativo para TLS\STARTTLS e suporte para autorização OAUTH. Use canais seguros para enviar seus relatórios.     FastReport Lazarus Além das alterações fundamentais que foram incluídas nas versões VCL e Lazarus, o FastReport for Lazarus recebeu suporte para monitores de alta resolução (HiDPI).     FastCube VCL e FMX Na versão VCL do FastCube, todos os controlos TTreeView foram substituídos por TfrTreeView. Todas as versões receberam indicação de filtro na lista de campos disponíveis. A versão FMX recebeu a capacidade de salvar filtro personalizado e grupo personalizado, bem como uma série de melhorias e correções.     FastQueryBuilder Adicionado suporte para monitores de alta resolução (HiDPI).     FastScript Nesta atualização, implementamos o suporte ao Android. Esta inovação só funciona ao compilar com strings indexadas a partir de uma. Você pode usar todo o poder do mecanismo de script em seus aplicativos móveis para Android. Adicionado suporte para classes para trabalhar com XML e JSON. Você pode ler mais sobre como trabalhar com esses formatos usando o exemplo de carregamento de dados em um relatório neste artigo. Leia o artigo     Controlos FastReport VCL Para o controlo TfrShellTreeView, tornou-se possível criar Nós personalizados e atalhos para outros nós. Você pode ler sobre como configurar TfrShellTreeView e adicionar nós personalizados neste artigo. Leia o artigo     Instalador Agora você pode instalar nossos produtos com suporte para Android. Além disso, foi adicionado suporte para a instalação de pacotes na versão de 64 bits do IDE Embarcadero RAD Studio 12.3.     Lista completa de alterações: versão 2025.2 ========================   VCL.Core [Localization]- Classificação fixa no LocalizationEditor;   VCL.Controls [Engine]+ Adicionado a capacidade de criar uma estrutura personalizada de nó Shell raiz e nó regular;- Suporte HiDPI fixo no smartMemo;- Corrigido o comportamento em que o controle não é dimensionado quando o Pai é atribuído quando csFreeNotification é definido em ComponentState;- Corrigido algumas deficiências na prestação de TfrTreeView e TfrShellTreeView; [UI]- Corrigido renderização de cor personalizada e estado desativado para tfrTreeView; Lazarus.Controls [Engine]+ Adicionado a capacidade de criar uma estrutura personalizada de nó Shell raiz e nó regular;- Suporte HiDPI fixo no smartMemo; [UI]- Corrigido renderização de cor personalizada e estado desativado para tfrTreeView;- Suporte HiDPI implementado para Lazarus;- Corrigido algumas deficiências na prestação de TfrTreeView e TfrShellTreeView;   VCL.FastCube [UI]+ Adicionada indicação de filtro à lista de campos disponíveis;+ Adicionado a capacidade de salvar filtro personalizado e grupo personalizado;* TreeView substituído por TfrTreeView;- Localização fixa da barra de ferramentas FastCube;   FMX.FastCube [UI]+ Adicionada indicação de filtro à lista de campos disponíveis;+ Adicionado remoção de ActivePopup em TfcxSliceGrid.FullUpdate;* TreeView substituído por TfrTreeView;- Localização fixa da barra de ferramentas FastCube;- Corrigido o funcionamento incorrecto do formulário TfcxRangesEditor;- Corrigido o problema de posicionamento e visibilidade dos botões" OK"," Cancelar";- Corrigido o erro FastCube FMX no editor de regras de seleção;- Corrigido o funcionamento da pesquisa incremental em listas suspensas; [Engine]+ Adicionado a capacidade de salvar filtro personalizado e grupo personalizado;- Corrigido um erro ao clicar na área da lista top-n Filtros após zerar TfcxSliceGrid.Slice := nil;   Lazarus.FastCube [UI]+ Indicação de filtragem adicionada à lista de campos disponíveis;* TreeView substituído por TfrTreeView;- Localização da barra de ferramentas FastCube fixa;   VCL.FastQueryBuilder [UI]+ Primeira versão do HiDPI adicionada;   Lazarus.FastQueryBuilder [UI]+ Primeira versão do HiDPI adicionada; VCL.FastScript [Engine]+ Suporte para XML e JSON adicionado ao FastScript;* Melhoria do TfsTree através da substituição do TTreeView pelo TfrTreeView;- Corrigido erro no TfsScript.Destruir que poderia levar a um acidente;   FMX.FastScript [Engine]+ Adicionado suporte para Android;- Erro corrigido no TfsScript.Destruir que poderia levar a um acidente;   Lazarus.FastScript [Engine]+ Adicionado suporte para XML e JSON para FastScript;* Melhoria do TfsTree através da substituição do TTreeView pelo TfrTreeView;- Corrigido erro no TfsScript.Destruir que poderia levar a um acidente;- Pacote fs_ibx fixo para compilação no Lazarus;   VCL.FastReport [Preview]+ Corrigido o colapso quando a aplicação.MainFormOnTaskbar = Verdadeiro; [Engine]+ Adicionado a capacidade de configurar marcas d'água para páginas de relatórios;* Modificou o mecanismo de divisão RichView, acrescentou A definição mínima de peça não quebrável;- HTMLView fixo com Página.EndlessHeight;- Corrigido o erro" classe não encontrada " ao usar a propriedade UseFileCache com páginas vazias no relatório;- Função frxDecompressStream fixa;- Corrigido erro com valor incorreto em macros CopyName;- Data e hora fixas de exportação para XLSX;- Divisão fixa do componente RichView com uma linha vazia no final;- Actualização fixa dos limites SVG;- Ordem de carregamento fixa da tabela 'hmtx' em fontes TTF;- Corrigido erro em que um conjunto de dados renomeado não alterava o nome de usuário padrão;- Corrigido erro em que a caixa de diálogo de impressão redefinia as configurações quando movida para uma tela secundária;- Dimensão fixa da assinatura para componentes não visuais;- Suporte HiDPI fixo para smartMemo;- Comportamento fixo da banda com altura adicional;- Corrigido erro de acesso à memória ao usar conexão DBX externa;- Corrigido erro ao imprimir um relatório aninhado com várias colunas na página;- Corrigido quebra de linha em falta em CellData.Texto;- Corrigido erro Memo AutoWidth com macros como TotalPages;- Corrigido erro onde alguns eventos de tabela foram acionados duas vezes;- Corrigido baBottom quando o objeto quebra em várias páginas e Adicionado suporte para smMaxHeight para tabelas estáticas (apenas linhas AllowSplit);- Erro de altura de arredondamento fixo em quebras de banda;- Fixa coordenada esquerda do sub-relatório quando se deslocam para uma nova página;- Corrigido pacotes AnyDAC no produto FastReport para que eles instalem automaticamente no RAD Studio XE3 e IDEs mais antigos;- Corrigido erro quando as macros são atualizadas no momento do design;- Modo de seleção duplex fixo;- Comportamento baBottom e smMaxHeight fixo no rodapé da página;- Correção que limpa o singleton ParentForm quando o formulário pai é fechado, não do componente report; [Exports]+ Melhoria da exportação de texto RTL para PDF;+ Adicionado exportação de símbolos externos;+ Adicionado suporte para zugferd 2.3 na exportação de PDF;- Aviso do compilador removido;- Exportação fixa de HTMLView longo;- Geração fixa de metadados PDF/a;- Corrigido PDF usando o padrão ZUGFeRD;- Corrigido transição foco entrada incorreta via guia em caixas de diálogo de exportação;- Formato numérico fixo no filtro de exportação XLS;- Tamanho de caracteres fixo nas exportações SVG e PDF;- Removido âncora flutuante para a tabela docx, substituído por uma linha vazia; [Client-server]+ Adicionado novos controles de formulário de diálogo: selecionador de data, DBComboBox, ListBox, CheckListBox, MaskEdit( Sem Máscara), Edição de senha, PageControl, GroupControl, Painel;+ Adicionado a capacidade de usar um cabeçalho HTTP personalizado EM Componentes cliente-servidor;* Redesenhado o mecanismo de geração de diálogo, suportando controles aninhados e a capacidade de estender com controles personalizados;* Exportações actualizadas para componentes cliente-servidor;- Corrigido um erro ao trabalhar com parâmetros e diálogos; [Designer]+ Renderização e funcionalidade aprimoradas de elementos de designer em temas VCL;+ Adicionado menu de contexto para janelas de Lista de observação no designer de relatórios;* Redesenhou a janela "Design - > opções" para resoluções de tela pequena;* Redesenhado o editor de diálogo no designer de relatórios;- Corrigido erro no RichEditor com versões mais antigas do msftedit.dll;- Corrigido dimensionamento de diálogo (TfrxDialogPage);- Comportamento tfrxlabel fixo quando AutoSize = True;- Fixed TfrxDesigner.Funcionalidade DefaultFont com HiDPI;- Comportamento tfrxdialogpage fixo em uma tela secundária;- Corrigido o comportamento de edição de código de barras no designer de relatórios através do inspetor de objetos;- Corrigido o comportamento de autocompletar código em procedimentos e funções aninhados em scripts, bem como em scripts com expressões de concatenação de strings;- Comportamento dica fixo na janela de código;- Estilo de menu fixo para o designer de relatórios no RAD 12.2 em tempo de design; [Other]+ Adicionado a capacidade de substituir o formulário de pesquisa;* Recursos romenos atualizados;- Compilação fixa de InvoiceDemo;- Corrigido exemplo de CustomScrollsDemo; [Report object]+ Adicionado suporte para TIFF de página única no TfrxPictureView;+ Adicionado objeto para etiquetas RFID (TfrxDeviceCommand);+ Implementado uma lista de páginas exibidas em um documento PDF (intervalo) em TfrxPDFView;- Compatibilidade fixa com HTML Viewer;- Renderização de código de barras fixo quando ((rotação > 0) e (WideBarRatio > 2));- Tamanho da fonte padrão fixo para o rótulo superior de códigos de barras com HiDPI;- Corrigido o comportamento do componente HTMLView quando a largura do colgroup substitui as configurações de largura da tag td;- Geração de relatório fixo com RFID;- Corrigido clipping incorreto no RichView;- Etiqueta fixa para códigos de barras bidimensionais;- Etiqueta fixa para códigos de barras bidimensionais;- Configuração fixa "código QR Suíço" para código QR código de barras;   FMX.FastReport [Engine]- Corrigido erro "classe não encontrada" ao usar a propriedade UseFileCache com páginas vazias no relatório;- Transferência de texto rotativa fixa ao exportar para PDF;- Exportação fixa de data e hora para XLSX; [Exports]- Removido o aviso do compilador;- WordWrap fixo na exportação de PDF com visualização de texto simples; [Designer]- Editor de cabeçalho de grupo fixo;   Lazarus.FastReport [Engine]+ Adicionado a capacidade de configurar marcas d ' água para páginas de relatório;- Corrigido HTMLView com Página.EndlessHeight;- Corrigido erro "classe não encontrada" ao usar a propriedade UseFileCache com páginas vazias no relatório;- Função frxDecompressStream fixa;- Corrigido erro com valor incorreto em macros CopyName;- Exportação fixa de data e hora para XLSX;- Corrigida ordem de carregamento da tabela 'hmtx' em fontes TTF;- Corrigido erro em que um conjunto de dados renomeado não alterava o nome de usuário padrão;- Corrigido erro que fazia com que o diálogo de impressão redefinisse as configurações quando movido para uma tela secundária;- Corrigido erro ao criar TfrxComboEdit para Lazarus;- Tamanho fixo da assinatura para componentes não visuais;- Suporte HiDPI fixo para smartMemo;- Comportamento fixo da faixa com altura adicional;- Corrigido vazamento de memória ao exportar PDF no Linux;- Corrigido erro quando as macros são atualizadas em tempo de design;- Modo de seleção duplex fixo;- Corrigido o comportamento baBottom e smMaxHeight no rodapé da página;- Correção que limpa o singleton ParentForm quando o formulário pai é fechado não do componente de relatório; [Exports]+ Exportação aprimorada de texto RTL para PDF;+ Adicionada exportação de símbolos externos;- Removido o aviso do compilador;- Exportação fixa de HTMLView longo;- Geração fixa de metadados PDF/A;- PDF corrigido usando o padrão ZUGFerd;- Exportação fixa de PDF com HiDPI;- Diálogos de exportação fixos com HiDPI;- Inversão de imagem fixa na exportação ZPL; [Client-server]+ Adicionados novos controles de formulário de diálogo: selecionador de data, DBComboBox, ListBox, CheckListBox, MaskEdit (Sem Máscara), Edição de senha, PageControl, GroupControl, Painel;+ Adicionado a capacidade de usar um cabeçalho HTTP personalizado EM Componentes cliente-servidor;* Redesenhado o mecanismo de geração de diálogo, suportando controles aninhados e a capacidade de estender com controles personalizados;* Exportações atualizadas para componentes cliente-servidor;- Corrigido um erro ao trabalhar com parâmetros e diálogos; [Designer]- Corrigido erro no RichEditor com versões mais antigas do msftedit.dll;- Corrigido dimensionamento de diálogo (TfrxDialogPage);- Comportamento tfrxlabel fixo quando AutoSize = True;- Renderização e funcionalidade aprimoradas de elementos de designer em temas VCL; [Other]+ Adicionado a capacidade de substituir o formulário de pesquisa; [Report object]+ Adicionado objeto para etiquetas RFID (TfrxDeviceCommand);- Corrigido o comportamento do componente HTMLView quando a largura do colgroup substitui as configurações da tag "td;- Etiqueta fixa para códigos de barras bidimensionais;- Compatibilidade fixa com HTML Viewer;- Criação fixa de códigos de barras compostos; [Preview]- Visualização fixa com HiDPI.  
17 de abril de 2025

A importação de documentos do Word já está disponível no FastReport .NET Ultimate

Com o lançamento do 2025.2 assinar o Ultimate .NET se tornou um negócio ainda melhor! Todos os titulares de licenças podem obter um plugin adicional que permite importar documentos do Microsoft Word (.docx). Quando você abre esse arquivo, ele é convertido em um modelo de relatório FastReport .NET (.frx). O preço da assinatura do Ultimate .NET permaneceu o mesmo. Devido às grandes diferenças de formatos, nem sempre é possível combinar totalmente os dois documentos. No entanto, este plugin permite reduzir significativamente o tempo necessário para criar um modelo baseado em um arquivo docx existente. No momento, nosso plugin não suporta: destacar o fundo de uma parte da string, formas, bem como gráficos vetoriais aninhados linguagem de marcação vetorial (VML) e objetos OLE.  Para começar a usar este plugin em sua solução de negócios agora mesmo, atualize sua licença para a versão 2025.2 em sua conta pessoal. Em seguida, siga as instruções abaixo para registrar a dll no FastReport, ou conecte o pacote NuGet FastReport.Plugins.OOXMLImport. Você pode ler sobre os recursos de importação e como habilitar o plugin no artigo. Leia o artigo
14 de abril de 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.
08 de abril de 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.
07 de abril de 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  
07 de abril de 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.
02 de abril de 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.