参考一下下列的程序段,根据数据集,自动生成简单的报表,包括多行打印。程序做得比较粗糙。      iLeft:=0;
      iRow:=1;
      iTop:=8;
      //是否打印序号
      if sPrintData.bOrder=true then
      begin
        L:=TQRLabel.Create(ColumnHeaderBand1);
        L.Parent:=ColumnHeaderBand1;
        L.Caption:='序号';
        L.Top:=iTop;
        L.Left:=iLeft;
        L.Width:=40;
        L.AlignToBand:=false;
        L.Alignment:=taCenter;        S:=TQRSysData.Create(DetailBand1);
        S.Parent:=DetailBand1;
        S.Data:=qrsDetailNo;
        S.Top:=iTop-2;
        S.Left:=iLeft+10;
        S.Width:=40;
        S.Alignment:=taLeftJustify;
        S.Transparent:=true;
        iLeft:=50;
      end;      //打印字段
      for i:=0 to Length(sPrintData.sFields)-1 do
        if sPrintData.sFields[i].iWith>0 then
          begin
            L:=TQRLabel.Create(ColumnHeaderBand1);
            L.Parent:=ColumnHeaderBand1;
            L.Caption:=sPrintData.sFields[i].sName;
            L.Top:=iTop;
            L.Left:=iLeft;
            L.Width:=sPrintData.sFields[i].iWith;
            L.AlignToBand:=false;
            L.Alignment:=taCenter;            T:=TQRDBText.Create(DetailBand1);
            T.Parent:=DetailBand1;
            T.DataSet:=ClientDataSet1;
            T.DataField:=sPrintData.sFields[i].sField;
            T.Top:=iTop-2;
            T.Left:=iLeft;
            T.Width:=sPrintData.sFields[i].iWith;
            T.Alignment:=taLeftJustify;
            T.Transparent:=true;
            iLeft:=iLeft+ L.Width;            //计算是否需要多列打印,像素/2.85=毫米
            if ((iLeft/2.85)>=QReport.Page.Width)
              and (i<Length(sPrintData.sFields)-1) then
            begin
              iLeft:=iRow*30;
              ColumnHeaderBand1.Height:=ColumnHeaderBand1.Height+20;
              DetailBand1.Height:=DetailBand1.Height+20;
              iTop:=iTop+20;
              iRow:=iRow+1;
            end;      end;