如何在delphi代码中编写“fastreport band”事件

时间:2014-11-19 11:16:04

标签: delphi pascal fastreport pascalscript

我的fastreport中有masterdata乐队。我可以在pascal脚本中的“masterdata After print”上编写代码,但我想知道有没有办法以主delphi形式编写这段代码。

Pascal脚本:

procedure MasterDataOnAfterPrint(Sender : TfrxComponent) 
begin
   Sup_Page.Text := 'Cont on Page ' + IntToStr(<Page> + 1);
end;

1 个答案:

答案 0 :(得分:1)

您可以使用不同的选项在打印时干扰报告 您可以使用事件AfterPrint和/或BeforePrint,它们会在每次打印时将组件作为参数提供。
如果要访问事件中提供的另一个组件,可以使用FindComponent为实际打印的页面提供组件。
要访问报告中的功能,您可以使用函数名称作为参数调用Calc 另一个选项取决于您的需求是使用GetValue事件,每次评估变量时都会调用该事件,提供变量的名称和值的var参数,这将使您能够返回你喜欢的价值。
一个简短的例子可能很有用:

procedure TFormOrDM.frxReport1AfterPrint(Sender: TfrxReportComponent);
begin
  // if Sender is TfrxMasterdata then  // Filter out all Masterdatasets
  if Sender.Name = 'Masterdata1' then // Filter out a specific Masterdatasets
  begin
    TFrxMemoView(frxReport1.FindComponent('Sup_Page')).Text := 'Cont on Page ' + FloatToStr(frxReport1.Calc('<Page>') + 1);
  end;
end;

procedure TFormOrDM.frxReport1BeforePrint(Sender: TfrxReportComponent);
begin
  // Another place you might use to acsess components
end;

procedure TFormOrDM.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
  if VarName = 'myValue' then // own variable defined in the report
    Value := 'Cont on Page ' + FloatToStr(frxReport1.Calc('<Page>') + 1);
end;

enter image description here