在涉及到财务会计模块时,对报表的要求很多并且要求报表的动态设计,而动态报表的设计一向是一个不是很容易的问题,大家来谈一下动态报表的设计,给彼此提供一些思路,谢谢踊跃发言!

解决方案 »

  1.   

    你好,我们专门用F1book做动态报表.
    可以一起探讨的. 欢迎访问我的主页 http://zhangxzh.diy.163.com
     可以使用微软的msn (下载地址http://zhangxzh.diy.163.com\dowm\mmssetup.EXE )将[email protected] 加为好友一起讨论
      

  2.   

    我作动态报表是这么做的
    首先用qrshape动态的画线,然后动态的填写数据
    不如给你我的实例吧!
    var
      frmqcarcoderep: Tfrmqcarcoderep;
      qrlabel:array of array of tqrlabel;
      qrshape:array of array of tqrshape;
      fieldlen:integer;implementation{$R *.dfm}
    uses
    dayrep,mainform, qcarcode;
     procedure Tfrmqcarcoderep.FormCreate(Sender: TObject);
    var i,j:integer;
    begin
    fieldlen:=frmqcarcode.Query2.FieldCount;
    setlength(qrlabel,fieldlen,9);
    setlength(qrshape,fieldlen,9);
    if  (2*fieldlen*24+20 )<902 then
    frmqcarcoderep.DetailBand1.Height :=fieldlen*24+20;
    for i:=0 to fieldlen-1 do
    for j:=0 to 8 do
    begin
    qrshape[i,j]:=tqrshape.create(quickrep1);
     with qrshape[i,j] do
          begin
          parent:=detailband1;
          left:=j*79;
          top:=i*24;
          height:=25;
          width:=80;
          enabled:=true;
          visible:=true;
          end;
          qrlabel[i,j]:=tqrlabel.create(quickrep1);
     with qrlabel[i,j] do
          begin
          parent:=detailband1;
          left:=j*79+2;
          top:=i*24+6;
          height:=16;
          width:=76;
          alignment:=tacenter;
          autosize:=false;
          caption:='';
          enabled:=true;
          visible:=true;
          end;
     end;end;procedure Tfrmqcarcoderep.QuickRep1NeedData(Sender: TObject;
      var MoreData: Boolean);
    var i,j:integer;
    begin
     with frmqcarcode.Query2 do
          begin
           if EOF then
               begin
               moredata:=false;
               exit;
               end;
            moredata:=true;
            for i:=0 to fieldlen-1 do
            for j:=0 to 8          do
            qrlabel[i,j].caption:='';
            for i:=0 to fieldlen-1 do
            qrlabel[i,0].caption:=fields[i].fieldname;
            for j:=1 to 8 do
            begin
                 if eof then break;
                 for i:=0 to fieldlen-1 do
                    begin
                    qrlabel[i,j].caption:=fieldbyname(fields[i].fieldname).asstring;
                    end;
                    next;
             end;
        end;
    end;