秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
lazreport对报表变量赋值使用GetValue方式,这方式不直观简便。
procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant
  );
begin
  if ParName='aa' then
    Parvalue:='测试';
end;

一、修改步骤:
对lazreport增加SetCustomVariables功能。
打开lr_class.pas
在1283行增加:

    procedure SetVariables(vName:string;V: Variant);

在10704行增加:

procedure TfrReport.SetVariables(vName:string;V: Variant);
var
 i,k:Integer;
 s:String;
begin
  for k:=0 to Pages.Count-1 do
  begin
    for i:=0 to Pages[k].Objects.Count-1 do
    Begin
      s:=trim(TfrObject(Pages[k].Objects[i]).Memo.Text);
      if pos(vName,s)>0 then
      begin
        s:=s.Replace('['+vName+']',VartoStr(v),[rfReplaceAll, rfIgnoreCase]);
        if v.Types
        TfrObject(Pages[k].Objects[i]).Memo.Text:=s;
        Break;
      end;
    end;
  end;
end;

保存并重新编译lazreport就可以。
二、使用方法:

procedure TForm1.Button1Click(Sender: TObject);
begin
  frReport1.SetVariables('aa','客运中心');
  frReport1.ShowReport;
end;

报表模板:
QQ_1754357995313

报表预览:

QQ_1754358074246

 

posted on 2025-08-05 09:44  秋·风  阅读(131)  评论(2)    收藏  举报