レポートの継承
レポートの継承については、『User Manual』で説明しています。ここでは、いくつかの重要な時機について説明します。
ファイルにレポートを保管している場合は、FastReport が基本レポートを探すために使用するフォルダー名を設定する必要があります。このフォルダーの内容は、[ファイル]>[新規作成]および[レポート]>[オプション]メニューから開くダイアログに表示されます。
TfrxDesigner.TemplateDir
プロパティがこの目的のために使用されます。既定ではこれは空なので、FastReport はプロジェクトの実行可能ファイル(.exe)が存在するフォルダーで基本レポートを検索します。このプロパティには、絶対パスまたは相対パスを設定することができます。
データベースにレポートを保管している場合は、使用可能な基本レポートの一覧を取得し、データベースから基本レポートを読み込むためのコードを記述する必要があります。 TfrxReport.OnLoadTemplate
イベントを使用して基本レポートを読み込みます。
property OnLoadTemplate: TfrxLoadTemplateEvent read FOnLoadTemplate write FOnLoadTemplate;
TfrxLoadTemplateEvent = procedure(Report: TfrxReport; const TemplateName: String) of object;
このイベントのハンドラーで、指定された TemplateName の基本レポートを Report オブジェクトに読み込む必要があります。そのようなハンドラーの例を以下に示します。
procedure TForm1.LoadTemplate(Report: TfrxReport; const TemplateName: String);
var
BlobStream: TStream;
begin
ADOTable1.First;
while not ADOTable1.Eof do
begin
if AnsiCompareText(ADOTable1.FieldByName('ReportName').AsString, TemplateName) = 0 then
begin
BlobStream := TMemoryStream.Create;
TBlobField(ADOTable1.FieldByName('ReportBlob')).SaveToStream(BlobStream);
BlobStream.Position := 0;
Report.LoadFromStream(BlobStream);
BlobStream.Free;
break;
end;
ADOTable1.Next;
end;
end;
使用可能なテンプレートの一覧を取得するには、TfrxDesigner.OnGetTemplateList
イベントを使用する必要があります。
property OnGetTemplateList: TfrxGetTemplateListEvent read FOnGetTemplateList write FOnGetTemplateList;
TfrxGetTemplateListEvent = procedure(List: TStrings) of object;
このイベントのハンドラーは、使用可能なテンプレートの一覧を List パラメーターに返す必要があります。そのようなハンドラーの例を以下に示します。
procedure TForm1.GetTemplates(List: TList);
begin
List.Clear;
ADOTable1.First;
while not ADOTable1.Eof do
begin
List.Add(ADOTable1.FieldByName('ReportName').AsString);
ADOTable1.Next;
end;
end;
FastReport は、作成済みのレポートを継承することができます。そのためには、次の関数を使用する必要があります。
TfrxReport.InheritFromTemplate(const templName: String; InheritMode: TfrxInheritMode = imDefault): Boolean
この関数は、指定されたレポートから、現在読み込まれているレポートを継承できるようにします。関数の最初のパラメーターは親テンプレートのファイル名で、2 番目のパラメーターでは継承モードを選択できます。
- imDefault - 重複項目について名前を変更するか削除するかを提案するダイアログを使用します。
- imDelete - すべてのバックアップ オブジェクトを削除します。
- imRename - すべてのバックアップ オブジェクトの名前を変更します。
注意:親テンプレートの検索は、現在のテンプレートを参照して行われます。これは、レポートの保管場所でカタログ構造を保持するために必要です。アプリケーションの移動について心配する必要がないため、FastReport は相対パスを使用しています(唯一の例外は、現在のパターンと親テンプレートが異なる通信事業者に置かれているか、またはネット パスが使用される場合です)。