FastReport 4.0。 “找不到Claas TfrxReport”异常(RAD STUDIO XE2)

问题描述 投票:1回答:5

尊敬的Stackoverflow用户。我迫切需要帮助。我一直在为FastReport 4.0的Embarcadero XE2 RAD工作室版本中的嵌入式程序苦苦挣扎。更具体地说,我一遍又一遍地遇到相同的错误,这是错误的“找不到类TfrxReport”错误。下面,我提交导致问题的部分代码

procedure TForm1.buildReport(Sender: TObject);
var
 DevicePic, SymbolPic: TfrxPictureView;
 TitleEntry, xmlField: TfrxMemoView;
 MasterDataBand: TfrxMasterData;

begin
if not ADOConnection1.Connected then
       ShowMessage('Cannot build Report! Please, connect to the DB!')
else

try
 //this is where the Class Not Found Exception is Thrown
 frxReport1.LoadFromFile('LibreportTemplate.fr3',True);
 // frxReport1.LoadFromFile('helloInfineonThree.fr3',True);

 if (frxDBDataset1 = nil) then frxDBDataset1 := TfrxDBDataset.Create(Self);
 // connect the report to the DATA
 frxDBDataset1.DataSource := DataSource1;
 frxReport1.DataSet := frxDBDataset1;
 except
     ShowMessage('Error has Occured! Report Template File Not Found!');
 // exit from this procedure!
     Exit;
 end;
 // If no errors have occured, go on building ur report by actually filling it up with data!

 // attach dataSet to the masterdata band of the report.
 MasterDataBand := frxReport1.FindObject('MasterData1') as TfrxMasterData;
 MasterDataBand.DataSet := frxDBDataset1;
 // prepare textfields
 TitleEntry := frxReport1.FindObject('TitleEntry') as TfrxMemoView;
 TitleEntry.DataSet := frxDBDataset1;
 TitleEntry.DataField := 'LibFName';

 xmlField := frxReport1.FindObject('xmlField') as TfrxMemoView;
 // stretch the field if text too big.
 xmlField.StretchMode := TfrxStretchMode.smActualHeight;
 //get the XML DATA FROM THE DB.
 xmlField.DataSet := frxDBDataset1;
 xmlField.DataField := 'LibFXML';

 // prepare images
 DevicePic := frxReport1.FindObject('ImageEntry') as TfrxPictureView;
 DevicePic.DataSet := frxDBDataset1;
 DevicePic.DataField := 'LIBFIMAGE';

 SymbolPic := frxReport1.FindObject('SymbolEntry') as TfrxPictureView;
 SymbolPic.DataSet := frxDBDataset1;
 SymbolPic.DataField := 'LibFSymbol';

 // build and display report
 frxReport1.PrepareReport();
 frxReport1.ShowPreparedReport;

 end;

[构建并运行程序时,出现以下错误消息“找不到类TfrxReport”,在DebugMode中出现以下警告:

项目“ MyProject.exe”引发异常类EClassNotFound,并显示消息“找不到类TfrxReport”。

如上面的代码中所述,执行frxReport1.LoadFromFile('LibreportTemplate.fr3',True);时引发了有问题的异常;命令。

我尝试了许多种解决问题的方法,包括在线搜索解决方案。这是我所做的:

在表单OnCreate和OnClose期间手动创建和销毁frxReport1对象-错误PERSISTS

如FastReport中的建议(我无法在SO上发布链接,原因为“对不起,帖子中不能包含该内容。”错误)论坛线程,请替换FastReport 4 \ LibD16文件夹中的文件。 -错误PERSISTS

重新编译FastReport 4 RAD STUDIO 32位版本-错误PERSISTS重新编译FastReport 4 RAD STUDIO 64位版本-错误持续重新安装Embarcadero RAD Studio和FastReport 4-错误PERSISTS

在堆栈溢出中询问问题-????

从快速报告论坛中的主题看来,问题和相应的解决方案应该是(I QUOTE):

此错误是由GroupDescendentsWith(TfrxReport,TControl);码。 此代码出于某种原因从FierMonkey隐藏了TfrxReport 您在TfrxReport类中找不到“ FindClass”函数 加载报告(仅在IDE中)。如果您无法加载报告或获得类似报告 出现“找不到TfrxReport”消息的错误,请将此“链接到文件” 文件以“快速 Report \ LibD16“目录(全部替换)。

但是建议的方法不能解决问题!我该怎么办?有人知道吗?

delphi exception fastreport
5个回答
2
投票

我也面临这个问题,并且我已经解决了这个问题,

  • 创建一个新的ProjectGroup并添加适合您的delphi版本的DPK(我使用XE6)。您会看到BPL将分为运行时和设计。
  • 开始编译运行时fsX(X表示版本),fqbX等。如果您在顺序上有误,您会注意到。某些软件包需要添加搜索路径 $(BSDCOMMONDIR)/ DCP
  • 编译并安装设计包,您将看到TfrxReport

一旦安装了设计包,您将看不到结果,我已经重新启动了IDE,它运行的很好;)

延迟2年,希望对您有所帮助!


1
投票

只是一个想法。

在程序启动的某处添加RegisterClass(TfrxReport);。或者,在引发错误的行之前。


1
投票

不确定您是否对这个问题有答案...但是我在Rad Studio XE4中使用Fast Reports 4.0 Pro遇到了同样的问题。

我将报告放置在一个数据模块中,可以在需要时创建/销毁它,并且也可以在其中找到数据集。我可以在报表设计器中放置一个BarCode元素,但是,在运行该应用程序时,我会得到“找不到类TfrxBarCodeView”。

搜索C:\ Program Files(X86)\ Fast Reports \ source \中的Source文件夹后,我打开了一个名为frxBarcode.pas的源文件,其中包含创建类“ TfrxBarCodeView”。

我只是将frxBarCode添加到我的使用列表中,并且一切正常!


0
投票

我将从1

  1. 输入fr3文件的绝对完整路径,和
  2. 将其放置在用户的文档目录中,

只是为了排除文件访问问题。您有FastReport的源代码吗?


0
投票

我知道这很古老,但对某些人来说可能很有用。我只是遇到类似的问题。我从来没有想过有一个快速报告选项板上的组件frxReportTableObject。只需将其放在相关表格上即可。

© www.soinside.com 2019 - 2024. All rights reserved.