【问题标题】:FastReport 4.0. "Claas TfrxReport Not Found" exception ( RAD STUDIO XE2 )快速报告 4.0。 “未找到 Claas TfrxReport”异常 (RAD STUDIO XE2)
【发布时间】:2012-12-18 22:42:14
【问题描述】:

尊敬的 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); 时会抛出有问题的异常。命令。

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

在表单 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 并且出于某种原因 TfrxReport 类的“FindClass”功能找不到 加载报告(仅在 IDE 中)。如果您无法加载报告或获得类似报告 “找不到 TfrxReport”消息的错误,把这个“链接到文件” 文件到“快速 Report\LibD16" 目录(全部替换)。

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

【问题讨论】:

  • 快速报告论坛包含此讨论,可能与您的问题有关:http://www.fast- report.com/en/forum/index.php?showtopic=8520。 (对不起,它不会让我在不以某种方式混淆链接的情况下发表评论。)
  • 您是将所有内容构建到单个可执行文件中还是使用 BPL 链接?搜索路径中会不会有不同的DLL?
  • 我在单个可执行文件中构建所有内容,因此缺少 dll 应该不是问题。从预定义的 xml 文件中读取 frxReport1 对象时会发生一些奇怪的事情。调用 frxReport1.LoadFromFile('LibreportTemplate.fr3',True);但问题不在于它找不到指定的文件,因为我正在使用 try except 块处理那个文件。
  • 我认为我的问题与stackoverflow.com/questions/7287204/… 这里的人的问题相似。
  • 您是否使用了报告继承?如果您这样做了,请尝试从设计器中取消链接基本报表,保存它,然后重试。

标签: delphi exception fastreport


【解决方案1】:

我会从 1

  1. 将绝对的完整路径放入 fr3 文件,然后
  2. 放在用户的文档目录下,

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

【讨论】:

  • 不,很遗憾我没有来源。至于你的建议,我做到了。不工作。感谢您的建议。
【解决方案2】:

只是一个想法。

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

【讨论】:

  • 我按照你的建议做了,添加了 'RegisterClass(TfrxReport);'抛出类未找到异常的行前面和 TForm1.OnCreate 过程中的行。仍然是相同的持续错误。
【解决方案3】:

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

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

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

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

【讨论】:

  • #kenny 这是正确的答案,只需将frxBarCode 添加到您的uses 列表即可。
【解决方案4】:

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

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

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

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多