1

亲爱的 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;

在构建和运行程序时,我收到以下错误消息“Cannot Find class TfrxReport”,并且在 DebugMode 中我收到以下警告:

项目“MyProject.exe”引发异常类 EClassNotFound,并带有消息“未找到类 TfrxReport”。

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

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

在 Form OnCreate 和 OnClose 期间手动创建和销毁 frxReport1 对象 - 错误仍然存​​在

正如 FastReport 中的建议(我无法在 SO 上发布链接,原因是“抱歉,帖子不能包含该内容。”错误)论坛主题,替换 FastReport 4\LibD16 文件夹中的文件。- 错误仍然存​​在

重新编译 FastReport 4 RAD STUDIO 32 位版本 - 错误仍然存​​在 重新编译 FastReport 4 RAD STUDIO 64 位版本 - 错误仍然存​​在 重新安装 Embarcadero RAD Studio 和 FastReport 4 - 错误仍然存​​在

在 StackOVERFLOW 中提问 - ????

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

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

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

4

5 回答 5

2

我也遇到过这个问题,我已经解决了这个问题,

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

安装设计包后,您将看不到结果,我重新启动了 IDE,一切顺利;)

延迟2年,我希望这可以帮助!

于 2015-11-03T16:52:07.653 回答
1

只是一个想法。

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

于 2013-01-06T04:13:20.673 回答
1

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

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

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

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

于 2013-10-21T18:41:06.433 回答
0

我会从 1 开始

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

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

于 2013-01-04T19:46:47.743 回答
0

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

于 2020-06-18T00:59:52.087 回答