首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔福,FastReport参数

德尔福,FastReport参数
EN

Stack Overflow用户
提问于 2013-08-17 12:36:57
回答 1查看 5.4K关注 0票数 2

我对印刷有问题

代码语言:javascript
复制
procedure Sendparams(const Pparams,pparvalues :array of string);
begin
              for I := 0 to Length(Pparams) - 1 do
              begin
               lpar_name:=Pparams[i];
               lpar_val:=pparvalues[i] ;
               FfrxReport.Variables.AddVariable('Bez', lpar_name, lpar_val);
end;

Sendparams(['buyer','delivery'], ['buyer address', 'delivery address']);

在我尝试打印报表之前,一切都很好;它是:在Memo2上期望的表达式。

代码语言:javascript
复制
Memo1.memo = '[buyer]';
Memo2.memo = '[delivery]';

memo1和memo2所有其他属性都是相同的。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-18 07:26:47

可能有不同的陷阱。

  1. 如果要使用Addvariable (而不是variables.add)类别,则必须在报表中定义Bez,否则将不会添加变量。**
  2. 报表中变量的赋值看起来类似于Memo1.Lines.Text :=<buyer>;
  3. 您必须引用变量的字符串值。 Sendparams(['buyer','delivery'], [QuotedStr('buyer address'), QuotedStr('delivery address')]);

**

另一种尝试可能是这样的:避免打开字符串数组(名称和值的计数可能会意外不同),避免在Sendparams中硬引用报表,并处理已经在报表中定义的变量。

代码语言:javascript
复制
Function PrepareReport(Report:TfrxReport; Variables: TfrxVariables;
                       ReportName: String):Boolean;// -- other parameters
var
 i,k:Integer;
begin
   // ....... other initializations

    if Assigned(Variables) then
      for i := 0 to Variables.Count - 1 do
      begin
        k := Report.Variables.IndexOf(Variables.Items[i].Name);
        if k > -1 then
          Report.Variables.Items[k].Value := Variables.Items[i].Value
        else
        begin
          with Report.Variables.Add do
          begin
            Name := Variables.Items[i].Name;
            Value := Variables.Items[i].Value;
          end;
        end;
      end;
end;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18288908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档