如:
--------|------------|---------------|--------------
        |------------|---------------|
--------|-----|------|-------|-------|--------------
        |     |      |       |       | 
--------|-----|------|-------|-------|--------------
        |     |      |       |       |
--------|-----|------|-------|-------|--------------
        |     |      |       |       | 
--------|-----|------|-------|-------|--------------
怎样动态生成上面的报表?拜托各位了!

解决方案 »

  1.   

    以前的代码,给你参考
    procedure TfrmMonthReport.PaintReport(Houses:TStrings);
    var
      i,j,w,h:integer;
      line,lined:TfrLineView;
      memo:TfrMemoView;
      fields:TStrings;
    begin
      fields:=TStringList.Create;
      fields.Add('鸡数量');
      fields.Add('耗料');
      fields.Add('死亡');
      fields.Add('产蛋量');
      //根据记录集画报表
      w:= round((TfrLineView(frmonth.FindObject('Line8')).dx ) / (Houses.Count*4));
      h:= (TfrLineView(frmonth.FindObject('Line11')).dy-TfrLineView(frmonth.FindObject('Line11')).y);
      for i := 0 to Houses.Count-1 do
      begin
        for j := 1 to 3 do
        begin
          //页头竖线
          line:=TfrLineView.Create;
          line.y := TfrLineView(frmonth.FindObject('LineH')).y;
          line.dy := TfrLineView(frmonth.FindObject('LineH')).dy;
          line.SetBounds(TfrLineView(frmonth.FindObject('Line7')).x + (j+4*i) * w,line.y,0,line.dy);
          frMonth.Pages[0].Objects.Add(line);
          //数据部分竖线
          line:=TfrLineView.Create;
          line.y := TfrLineView(frmonth.FindObject('Line11')).y;
          line.dy := TfrLineView(frmonth.FindObject('Line11')).dy;
          line.Visible:=true;
          line.SetBounds(TfrLineView(frmonth.FindObject('Line11')).x + (j+4*i) * w,line.y,0,line.dy);
          frMonth.Pages[0].Objects.Add(line);
        end;
        if i <> Houses.Count -1 then
        begin
          //页头长竖线
          line:=TfrLineView.Create;
          line.y := TfrLineView(frmonth.FindObject('Line7')).y;
          line.dy := TfrLineView(frmonth.FindObject('Line7')).dy;
          line.FrameWidth :=2;
          line.Visible:=true;
          line.SetBounds(TfrLineView(frmonth.FindObject('Line7')).x + (j+4*i) * w,line.y,0,line.dy);
          frMonth.Pages[0].Objects.Add(line);
          //数据部分竖线
          line:=TfrLineView.Create;
          line.y := TfrLineView(frmonth.FindObject('Line11')).y;
          line.dy := TfrLineView(frmonth.FindObject('Line11')).dy;
          line.FrameWidth :=2;
          line.Visible:=true;
          line.SetBounds(TfrLineView(frmonth.FindObject('Line11')).x + (j+4*i) * w,line.y,0,line.dy);
          frMonth.Pages[0].Objects.Add(line);
        end;
        //鸡舍标题
        memo:=TfrMemoView.Create;
        memo.Memo.Add(Houses.Strings[i]);
        memo.Font := TfrMemoView(frMonth.FindObject('Memo6')).Font;
        memo.Alignment:=frtaMiddle;    memo.SetBounds(TfrLineView(frmonth.FindObject('Line7')).x + (4 * i) * w+ w div 2+w,TfrLineView(frmonth.FindObject('Line7')).y,2*w,TfrLineView(frmonth.FindObject('Line11')).dy);
        frMonth.Pages[0].Objects.Add(memo);
        for j := 0 to 3 do
        begin
          //加标题模块(鸡舍部分)
          memo:=TfrMemoView.Create;
          memo.Memo.Add(fields.Strings[j]);
          memo.Font:= TfrMemoView(frMonth.FindObject('Memo6')).Font;
          memo.Alignment:=frtacenter+frtaMiddle;
          memo.SetBounds(TfrLineView(frmonth.FindObject('Line7')).x + (j+4*i) * w,TfrLineView(frmonth.FindObject('LineH')).y,w,TfrLineView(frmonth.FindObject('LineH')).dy);
          frMonth.Pages[0].Objects.Add(memo);
          //加数据模块(鸡舍部分)
          memo:=TfrMemoView.Create;
          memo.Flags := (memo.Flags and not flHideZeros) + Word(true) * flHideZeros;
          memo.Alignment:=frtacenter+frtaMiddle;
          memo.Font := TfrMemoView(frMonth.FindObject('Memo6')).Font;
          memo.SetBounds(TfrLineView(frmonth.FindObject('Line11')).x + (j+4*i)*w,TfrLineView(frmonth.FindObject('Line11')).y,w,TfrLineView(frmonth.FindObject('Line11')).dy);
          memo.Memo.Add('[dstDayRecord."'+dstDayRecord.FieldDefs.Items[1+j+i*4].Name + '"]');
          frMonth.Pages[0].Objects.Add(memo);
        end;  end;   //for .. end
      frMonth.Dictionary.Variables.Variable['Year'] := yearof(dtpend.DateTime);
      frMonth.Dictionary.Variables.Variable['Month'] := monthof(dtpend.DateTime);
    end;
      

  2.   

    添加的MEMO上显示外边框就有网格了啊,在工具栏上的