如:
--------|------------|---------------|--------------
|------------|---------------|
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
怎样动态生成上面的报表?拜托各位了!
--------|------------|---------------|--------------
|------------|---------------|
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
| | | | |
--------|-----|------|-------|-------|--------------
怎样动态生成上面的报表?拜托各位了!
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;