打印本文 打印本文 关闭窗口 关闭窗口
在Delphi中动态生成QuickReport报表
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2593  更新时间:2009/4/23 18:38:21  文章录入:mintao  责任编辑:mintao
n

           result:=poPortrait;//0为竖直

           Form_rep.QuickRep.PrinterSettings.Orientation:=poPortrait;

         end;

       1:begin

           result:=poLandscape;//1为水平

           Form_rep.QuickRep.PrinterSettings.Orientation:=poLandscape;

         end;

    end;

end;

 

function  Open_IniFile():Tinifile;//打开临时文件

var Filename:string;

    Ini_Filename:string;

begin

     Filename:=’Report.ini’;

     Ini_Filename:=File_Path+Filename;

     Result:=Tinifile.Create(Ini_Filename);

end;

 

procedure Read_Rep_Summary(Inifile_Name:Tinifile);//读取报表的摘要信息

var  Rep_Page,Rep_Orientation:integer;

begin

    rep_Page:=Inifile_Name.Readinteger(''''rep_detail'''',''''Page'''',1);

    Rep_Orientation:=Inifile_Name.Readinteger(''''rep_detail'''',''''Orientation'''',0);

    with  rep_Summary do

     begin

       Columns:=Inifile_Name.Readinteger(''''rep_detail'''',''''columns'''',0);

       Title:=Inifile_Name.Readstring(''''rep_detail'''',''''Title'''',''''未命名报表'''');

       page:=rep_chanslatepage(Rep_Page);//将打印页尺寸进行转换

       Orientation:=rep_chanslateOrientation(Rep_Orientation);//将打印方式设置进行转换

     end;

end;

 

procedure  Read_Col_Summary(Inifile_Name:Tinifile);//读取报表列的摘要信息

var i_count:integer;

begin

     //将列信息保存在数组中

     with Rep_Col_Sum_store do

     begin

       SetLength(Caption_array,rep_Summary.Columns);

       SetLength(DataFiled_array,rep_Summary.Columns);

       SetLength(Width_array,rep_Summary.Columns);

     end;

     for i_count:=0 to rep_Summary.Columns-1 do

     begin

       with Rep_Col_Summary do

         begin

           Caption:=Inifile_Name.Readstring(''''col_''''+inttostr(i_count),''''Caption'''',''''未命名'''');

           DataFiled:=Inifile_Name.Readstring(''''col_''''+inttostr(i_count),''''DataFiled'''','''''''');

           Width:=Inifile_Name.Readinteger(''''col_''''+inttostr(i_count),''''Width'''',0);

         end;

       with Rep_Col_Sum_store  do

         begin

           Caption_array[i_count]:=Rep_Col_Summary.Caption;

           DataFiled_array[i_count]:=Rep_Col_Summary.DataFiled;

           Width_array[i_count]:=Rep_Col_Summary.Width;

         end;

    end;

end;

 

procedure DynCreat_TQRRichtext(Colum_Num:integer);//动态创建TQRRichtext控件,此控件用来显示报表每列的中文名称

var Colum_Name_list:TStrings;

begin

     Colum_Name[Colum_Num]:=tQRRichtext.Create(application); //创建TQRRichtext控件

     Colum_Name[Colum_Num].Parent:=Form_rep.ColumnHeaderBand1;

     Colum_Name[Colum_Num].Frame.DrawTop:=true;

     Colum_Name[Colum_Num].Frame.DrawBottom:=true;

     Form_rep.ColumnHeaderBand1.Height:=40;

     Colum_Name[Colum_Num].Height:=40;

     Colum_Name[Colum_Num].Font.Height:=-14;

     Colum_Name[Colum_Num].Font.Name:=''''黑体'''';

     Colum_Name[Colum_Num].Top:=0;

     Colum_Name[Colum_Num].Alignment:=taCenter;

     Colum_Name[Colum_Num].AutoStretch:=false;

      //画表格线

     Colum_Name[Colum_Num].Frame.Style:=psSolid;

     Colum_Name[Colum_Num].Frame.Width:=1;

     Colum_Name[Colum_Num].Frame.DrawRight:=true;

     Colum_Name[Colum_Num].Frame.DrawBottom:=true;

     if Colum_Num=0 then

        begin

          Colum_Name[Colum_Num].Frame.DrawLeft:=true;

        end;

     //将记录RRep_Col_Sum_store中的信息赋给Colum_Name

     Colum_Name_list:=TStringList.Create;

     Colum_Name_list.Add(Rep_Col_Sum_store.Caption_array[Colum_Num]);

     Colum_Name[Colum_Num].Lines:=Colum_Name_list;

     Colum_Name[Colum_Num].Width:=Rep_Col_Sum_store.Width_array[Colum_Num];

     Colum_Name[Colum_Num].Visible:=true;

     //计算左边界

     if Colum_Num>0 then

        Colum_Name[Colum_Num].Left:=Colum_Name[Colum_Num-1].Left+Colum_Name[Colum_Num-1].Width

     else

        Colum_Name[Colum_Num].Left:=0;

end;

说明:此处采用TQRRichtext控件是因为当名称过长时,TQRRichtext控件可以自动换行。

    

procedure DynCreat_TQRDBText(Colum_Num:integer;Colum_Height:integer;DataSet_Name:TQuery);//动态创建TQRDBText控件,此控件用来显示每列的值

begin

Colum_Data[Colum_Num]:=tQRDBText.Create(application);

    Colum_Data[Colum_Num].Parent:=Form_rep.DetailBand1;

    //设置数据集

    Colum_Data[Colum_Num].DataSet:=DataSet_Name;

    //将数组Colum_Data.DateField属性设置为C_Rep_Col_Sum_store中的字段名

    Colum_Data[Colum_Num].DataField:=Rep_Col_Sum_store.DataFiled_array[Colum_Num];

    Colum_Data[Colum_Num].Width:=Rep_Col_Sum_store.Width_array[Colum_Num];

    Colum_Data[Colum_Num].Height:=Colum_Height;

    Form_rep.DetailBand1.Height:=Colum_Height;

    Colum_Data[Colum_Num].Top:=0;

    Colum_Data[Colum_Num].AutoSize:=false;

    Colum_Data[Colum_Num].AutoStretch:=false;

    Colum_Data[Colum_Num].WordWrap:=false;

    Colum_Data[Colum_Num].Visible:=true;

    //画表格线

    Colum_Data[Colum_Num].Frame.Style:=psSolid;

    Colum_Data[Colum_Num].Frame.DrawRight:=true;

    Colum_Data[Colum_Num].Frame.DrawBottom:=true;

    if Colum_Num=0 then

      Colum_Data[Colum_Num].Frame.DrawLeft:=true

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口