Stackoverflow ユーザーの皆様。助けが必要です。私は、FastReport 4.0 の Embarcadero XE2 RAD スタジオ エディションに組み込まれていることに苦労しています。より具体的には、同じエラーが何度も何度も発生しています。これは、不思議な「Class TfrxReport Not found」エラーです。以下に、問題を引き起こすコードの一部を提出します
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 が発生し、"Class TfrxReport not Found" というメッセージが表示されました。
上記のコードでコメントされているように、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 で質問する - ????
fast-reports フォーラムのスレッドから、問題とそれぞれの解決策は次のように思われます (引用します):
このエラーは、GroupDescendentsWith(TfrxReport, TControl); によって発生します。コード。このコードは、FierMonkey から TfrxReport を非表示にし、何らかの理由で、レポートをロードしているときに "FindClass" 関数が TfrxReport クラスを見つけることができません (IDE のみ)。レポートをロードできない場合、または「Couldn't find TfrxReport」メッセージで同様のエラーが発生する場合は、この「ファイルへのリンク」ファイルを「Fast Report\LibD16」ディレクトリに置きます (すべて置き換えます)。
ただし、提案されたアプローチは問題を解決しません! 私は何をすべきか?誰にもアイデアはありますか?