转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
在Delphi中动态生成QuickReport报表         ★★★★

在Delphi中动态生成QuickReport报表

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2087 更新时间:2009/4/23 18:38:21
;

    //计算左边界

     if Colum_Num>0 then

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

     else

        Colum_Data[Colum_Num].Left:=0;

end;

 

procedure DynCreat_TQuery(Inifile_Name:Tinifile);//动态设置TQuery控件的SQL语句

var

    Sql_command:string;

begin

     Flag_CreatQuery:=false;

     Sql_command:=Inifile_Name.Readstring(''''QureyData'''',''''Sql_Command'''','''''''');

     Form_rep.REP_QUERY.Close;

     Form_rep.REP_QUERY.SQL.Clear;

     Form_rep.REP_QUERY.SQL.Append(Sql_command);

     if not Form_rep.REP_QUERY.Prepared then

       Form_rep.REP_QUERY.Prepare;

     try

       Form_rep.REP_QUERY.ExecSQL;

       Form_rep.REP_QUERY.Active:=true;

       Form_rep.REP_QUERY.AutoCalcFields:=true;

       Flag_CreatQuery:=true;

     except

       Application.MessageBox(''''SQL语句错误!'''',''''系统提示'''',MB_ICONWARNING);

       Flag_CreatQuery:=false;

     end;

end;

 

procedure Form_rep_init();

var  i_count:integer;

     Rep_IniFile:Tinifile;//打开的INI文件名

     Col_Height:integer;

     Flag_Sum:boolean;

begin

   Rep_IniFile:=Open_IniFile);//打开临时文件文件

   Read_Rep_Summary(Rep_IniFile);//读取报表的摘要信息

   Read_Col_Summary(Rep_IniFile);//读取报表列的摘要信息

   //根据读取的报表的各项参数,动态创建报表控件

   with   Form_rep  do

   begin

      Flag_CreatTQRExpr:=false;//表示现在还没有创建TQRExpr控件

      DynCreat_TQuery(Rep_IniFile);

         if  Flag_CreatQuery then

            begin

             QRLabel_title.Caption:=rep_Summary.Title;

             QRLabel_Header.Caption:=rep_Summary.Title;

             //设置页面信息

             QuickRep.Page.Orientation:=rep_Summary.Orientation;

             QuickRep.Page.PaperSize:=rep_Summary.Page;

             SetLength(Colum_Data,rep_Summary.Columns);

             SetLength(Colum_Name,rep_Summary.Columns);

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

               begin

                  DynCreat_TQRRichtext(i_count);//动态创建TQRRichtext控件

                                 DynCreat_TQRDBRichText(i_count,Col_Height,Form_rep.REP_QUERY)//动态创建TQRDBText控件

               end;

              //关闭rep_x.ini文件

              Rep_IniFile.Destroy();

            end

          else

             Form_rep.Close;

    end;

end;

 

procedure TForm_rep.QuickRepAfterPreview(Sender: TObject);//浏览完毕,释放所有创建的组件

var i_count:integer;

begin

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

   begin                         ;

     Colum_Name[i_count].free;

     Colum_Data[i_count].free;

   end;

end;

end.

 

三、需要注意的问题

----QuickReport中绘制表格线,除了文中提到的方法外,还可以使用QRShape控件。但不管使用那种方法,都要仔细计算,要根据打印的效果反复调整,才能保证表格线不产生偏差。

----所有动态创建的控件使用过后,一定要释放掉。

----临时文件在使用过后,也要清空。

 

----上文所示程序仅仅是笔者为了说明思路而简化的例程。在笔者实际的应用中,所有用到的控件(包括表单Form),都是动态生成的。而且在生成报表时,还可以动态生成统计信息,插入图表等,有兴趣的朋友可以发信到 chief_marshal@sina.com 和我一起讨论细节。

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


[Delphi程序]QUICKREPORT SAVE AS  [Web开发]在asp.net中动态生成web控件
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台