用FastReport如何设计连续纸报表(即报表长度由记录长度而定)?

解决方案 »

  1.   

    这个是我用过的一个实例,我没有改过,稍理解一下!
               rquery1.close;
               rquery1.sql.Clear ;
               rquery1.sql.add('select * from vs_pos where (c_code='+quotedstr(master.fieldbyname('c_code').value)+')');
               rquery1.open;
               frReport1.LoadFromFile(posmainform.exepath + 'report\pos.frf');
              //小票设纸张长度************************************
    filename:=ExtractFilePath(paramstr(0))+'setup.ini';
    myinifile:=TInifile.Create(filename);
    frreport1.Pages.pages[0].pgHeight:=frreport1.Pages.pages[0].pgHeight+myinifile.readinteger('printsetup','height',0)*rquery2.RecordCount;
    myinifile.Destroy;
                   frReport1.ShowReport;
                   frPreview1.Clear;
                   frPreview1.Visible:=true;
                   frReport1.ShowReport;
                   frPreview1.Print;
      

  2.   

    可以
    frreport1.Pages.pages[0].pgHeight:=frreport1.Pages.pages[0].pgHeight+myinifile.readinteger('printsetup','height',0)*rquery2.RecordCount;这个就是程序自行动态修改长度的!(运行时,非设计时)
    上面是
    基本长度+ 一个记录的长度(读取INI文件,可以修改)*记录数可以结帐了吧!
      

  3.   

    可不可以不要myinifile,直接把printsetup放在frreport1中?
      

  4.   

    可以啊!随意,你直接赋值也可以啊!frreport1.Pages.pages[0].pgHeight:=frreport1.Pages.pages[0].pgHeight+20*rquery2.RecordCount;
      

  5.   

    minghuisong兄,谢谢了,现在的问题是如何在报表中保存一个常量,如果为0时,报表长度固定,如果不为零,报表长度=常量*RecordCount,但怎样在报表中设一个常量呢,好像只可以设变量啊?
      

  6.   

    那就用我原来的办法,将常量保存在ini文件中啊!