FastReport

FastReport é uma ferramenta de relatórios amplamente utilizada para Delphi. Para usar o FastReport em uma aplicação uniGUI há certas regras a seguir. O mecanismo do FastReport deve ser ajustado para lidar com o ambiente multithread do uniGUI.

1

1) Ajuste os parâmetros do mecanismo de relatório

Assuma Relatório é um TfrxReport objeto. Defina as opções do mecanismo da seguinte forma:

Opções do mecanismo
Report.EngineOptions.SilentMode := True;
Report.EngineOptions.EnableThreadSafe := True;
Report.EngineOptions.DestroyForms := False;
Report.EngineOptions.UseGlobalDataSetList := False;

Essas opções garantem que o mecanismo de relatórios seja executado silenciosamente e seja seguro para o ambiente multithread do uniGUI.

2

2) Ajuste as configurações do relatório

Desative diálogos e edição na visualização do relatório:

Configurações do relatório
Report.PrintOptions.ShowDialog := False;
Report.ShowProgress := False;
Report.PreviewOptions.AllowEdit := False;
3

3) Configure o componente de exportação (exemplo PDF)

Para exportar para PDF use o TfrxPDFExport componente e defina suas propriedades:

Configurações de exportação para PDF
Exp.Background := True;
Exp.ShowProgress := False;
Exp.ShowDialog := False;

// Atribua um nome de arquivo exportado único
Exp.FileName := UniServerModule.NewCacheFileUrl(False,'pdf','','', AUrl);
Exp.DefaultPath := '';
4

4) Gere e exporte o relatório

Prepare e exporte o relatório programaticamente:

Gerar e exportar
Report.PrepareReport;
Report.Export(Exp);
5

5) Exiba ou envie o relatório gerado

Existem duas formas comuns de apresentar o PDF gerado ao usuário:

  • Exibi-lo dentro do uniGUI usando ou TUniURLFrame ou TUniPDFFrame.

    • Exemplo para TUniURLFrame:

      Uso de TUniURLFrame
      UniURLFrame1.URL := AUrl;
      Visualizador de PDF usando TUniURLFrame
    • Exemplo para TUniPDFFrame:

      Uso de TUniPDFFrame
      UniPDFFrame1.PdfURL := Url;
      Visualizador de PDF usando TUniPDFFrame
  • Ou envie o arquivo para o usuário para download:

Enviar arquivo para o usuário
UniSession.SendFile(Exp.FileName);