亲爱的 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”目录(全部替换)。
但是建议的方法不能解决问题!我该怎么办?有谁有想法吗?