FastReport---Report inheritance

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2010-10-30 13:04:55

The report inheritance was described in the User's manual. We will describe some

key moments here.

If you store your reports in files, you need to set up the folder name which

FastReport will use to search the base report. This folder's content will be displayed in the

"File|New..." and "Report|Options..." dialogs:

 

The TfrxDesigner.TemplateDir property is used for this purpose. By defalt it is

empty, FastReport will search for base reports in the folder with your project's executable

file (.exe). You can place the absolute or relative path into this property.

If you store your reports in the database, you have to write a code to load the base

report from a DB and to get a list of available base reports. Use TfrxReport.

OnLoadTemplate event to load a base report:

property OnLoadTemplate: TfrxLoadTemplateEvent read FOnLoadTemplate write FOnLoadTemplate;

TfrxLoadTemplateEvent = procedure(Report: TfrxReport; const TemplateName: Stringof This event's handler must load a base report with given TemplateName into

Report object. Here is an example of such handler:

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) begin

BlobStream := TMemoryStream.Create;

TBlobField(ADOTable1.FieldByName('ReportBlob')).SaveToStream(BlobStream);

BlobStream.Position := 0;

Report.LoadFromStream(BlobStream);

BlobStream.Free;

22 FastReport 4.6 Programmer's manual

© 1998-2008 Fast Reports Inc.

break;

end;

ADOTable1.Next;

end;

end;

To get a list of available templates, you should use the

TfrxDesigner.OnGetTemplateList event:

property OnGetTemplateList: TfrxGetTemplateListEvent read FOnGetTemplateList write TfrxGetTemplateListEvent = procedure(List: TStrings) of object;

This event's handler must return a list of available templates into List parameter.

Here is an example of such handler:

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;

Fast Report can inherit already created reports. For that you should use the following

functionTfrxReport.InheritFromTemplate(const templName: String; Inherit Mode:

Tfrx Inherit Mode = imDefault): Boolean.

This function allows to inherit the current loaded report from the indicated report. The

first parameter of the function is a name and path of parent template, the second one

allows to choose inherit mode imDefault - derive the dialogue with offer to rename/delete

the duplicates ,imDelete - delete all backup objects imRename - rename all backup

objects.

Attention!

The search of parent template is done referring the current template, that is necessary to

keep catalogues structure at report storage place. Fast Report uses relative paths that's why

there is no need to worry about application transfer,(the only exception is when the

current pattern and parent template are placed on different carriers or net path is used).

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B