fastreport中没有求记录总数的变量或函数,我想加一个这样的变量,应该修改源码的哪些地方

解决方案 »

  1.   

    详细一点:
    在报表中插入一个报表合计栏,里面放一个memo.点击"插入合计",选择函数count,选择你的数据band的名字,然后ok,就成了比如
    [COUNT(MasterData1)]
      

  2.   

    我做了一个每页显示5行的报表,主要是要一个记录总数,我现在是定义了一个变量,在frReport中传
    procedure TForm1.frReport1GetValue(const ParName: String;
      var ParValue: Variant);
    begin
      if ParName = 'nCount' then
        ParValue := ReCount;
    end;
    这样是可以实现,但要写代码,所以我想加一个系统变量,这样就不用写代码了
      

  3.   

    如何定义一个系统变量,关键是要加入变量列表里,即我在fastreport中点变量列表时能看见我加的变量,我定义了一个函数,可以用,但在函数列表里没有,不知为何,是不是这句有问题
    AddFunctionDesc('MONEYCONVERT', 'JEDX', 'MoneyConvert( <Number>)/返回金额的中文大写.');
      

  4.   

    1.我是这样定义一个函数的,通过修改fastreport的源码,在其中增加转换金额大小写的函数,按如下步骤: 
    1)、打开FR目录下的fr_Calss.pas文件,然后找到 
    constructor TfrStdFunctionLibrary.Create 
    看到一个个系统原带函数名称没? 看到了就依样写上一句 Add('AMTINWORD'); 
    然后往下快到End附近的时候,看到添加入口的语句没? 
    加上一句  
    AddFunctionDesc('AMTINWORD', '金额大写', 'AmtInWord( <Number>)/返回金额的中文大写.');  
    这样到时在报表设计器里面就可以看到 有一个金额大写的分类,里面有AMTINWORD函数。 2)、找到procedure TfrStdFunctionLibrary.DoFunction(FNo: Integer; p1, p2, p3: Variant; 
      var val: Variant); 过程 在 Case语句里面加上一句,注意,语句的CASE入口“22” 是 上面的 Add('AMTINWORD')的ItemIndex号码,从0开始数数看,是不是22,否则改成正确的。 
    22: Val := AmtInCnWord(frParser.Calc(p1));    3)、在FR_Utils.pas单元中添加上下面的函数,函数的内容随便你写了。Function AmtInWord(Num:Double):String; 
    按照如此步骤可以在fastreport的源码中加自定义函数,也可以使用,可在fastreport的函数列表中并没有出现我的函数,不知为何