CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

巨好答的问题之二(如何打印一个dbgrid网格显示出来的所有记录)

楼主x7913()2001-06-29 11:11:45 在 Delphi / VCL组件开发及应用 提问

准备只把分给一个人,所以请答详细点  
   
  用什么控件,主要程序? 问题点数:50、回复次数:16Top

1 楼alwssoan(巧克力)回复于 2001-06-29 11:20:11 得分 0

好问题,提前,我也等结果,呵呵Top

2 楼x7913()回复于 2001-06-29 11:29:51 得分 0

这是找到的另一个朋友的答案  
  在一窗体中加入quickrep组件,quickrep.dataaet:=table;  
  再加入几个qrband(视情况而定),将第一个qrband.bandtype:=rbpageheader,做页眉,在其中加入qrtext.caption:='aaa'  
  将第二个qrband.bandtype:=rbtitle,作报表标题,在其中加入qrtext.caption:='标题';  
   
  将第三个qrband.bandtype:=rbcolumnhead,作报表标题栏,即列名,更具需要在其中加入数个qrtext,设置号caption  
   
  将第四个qrband.bandtype:=rbdetail,作数据栏,更具需要加入数个qrdbtext,将这几个qrdbtext.dataset:=table.字段名,  
   
  现在点击鼠标右键,选择弹出菜单中的perview命令可以预览,  
   
  在程序中预览,打印:  
  procedure   button.onclick;  
  begin  
      quickrep1.preview;/*预览*/  
      quickrep1.print;/*打印*/  
  end  
   
   
  quickrep.dataset设置好了,table.active为true,数据库有记录    
  但我在quickrep1.preview时什么都没有,只有最上面那一排按钮Top

3 楼Jiao_he(◆〓◆)回复于 2001-06-29 11:31:02 得分 0

用QuickReports报表呗!Top

4 楼x7913()回复于 2001-06-29 11:32:59 得分 0

我最怕csdn这个了  
  如果哪位真有心帮忙,请好好答  
  谢谢Top

5 楼x7913()回复于 2001-06-29 11:33:30 得分 0

灌水肯定没分  
   
  谢谢Top

6 楼x7913()回复于 2001-06-29 11:36:38 得分 0

我一向雷厉风行,答好我又懂了就马上给分  
  不超过30分钟,但前提是一定要答好Top

7 楼Crob(Take Everything Easy!)回复于 2001-06-29 12:02:42 得分 25

下面是我打印StringGrid的例子,DBGrid差不多的  
   
  uses   Printer;  
   
   
  procedure   TmForm.BitBtn1Click(Sender:   TObject);  
  var  
      I,   Start,   Stop:   Integer;  
      pointX,pointY   :   Double;  
  begin  
  PrintDialog1.Options   :=   [poPageNums,   poSelection];  
  PrintDialog1.FromPage   :=   1;  
  PrintDialog1.MinPage   :=   1;  
  PrintDialog1.ToPage   :=   PageControl1.PageCount;  
  PrintDialog1.MaxPage   :=   PageControl1.PageCount;  
  if   PrintDialog1.Execute   then  
      begin  
          with   PrintDialog1   do   begin  
                  Start   :=   1;  
                  Stop   :=   1;  
          end;  
         
          with   Printer   do  
          begin  
              BeginDoc;  
              for   I   :=   Start   to   Stop   do  
              begin  
                  //GetDeviceCaps(Handle,   1);  
                  StrintGrid1.PaintTo(Handle,   10,   10);  
                  if   I   <>   Stop   then  
                        NewPage;  
              end;  
              EndDoc;  
            end;  
      end;  
  end;Top

8 楼m_leaner(和日本鬼子势不两立)回复于 2001-06-29 12:53:35 得分 25

更多信息请看DELPHI帮助TDBGRID的METHOD的PAINTO  
  procedure   TForm1.Button1Click(Sender:TObject);  
   
  var  
      I,   Start,   Stop:   Integer;  
  begin  
  PrintDialog1.Options   :=   [poPageNums,   poSelection];  
  PrintDialog1.FromPage   :=   1;  
  PrintDialog1.MinPage   :=   1;  
  PrintDialog1.ToPage   :=   PageControl1.PageCount;  
  PrintDialog1.MaxPage   :=   PageControl1.PageCount;  
  if   PrintDialog1.Execute   then  
      begin  
          {   determine   the   range   the   user   wants   to   print   }  
          with   PrintDialog1   do    
          begin  
              if   PrintRange   =   prAllPages   then  
   
                  begin  
                  Start   :=   MinPage   -   1;  
                  Stop   :=   MaxPage   -   1;  
              end  
              else   if   PrintRange   =   prSelection   then  
              begin  
                  Start   :=   PageControl1.ActivePage.PageIndex;  
                  Stop   :=   Start;  
                  end  
              else     {   PrintRange   =   prPageNums   }  
              begin  
                  Start   :=   FromPage   -   1;  
                  Stop   :=   ToPage   -   1;  
              end;  
          end;  
          {   now,   print   the   pages   }  
   
          with   Printer   do  
          begin  
              BeginDoc;  
              for   I   :=   Start   to   Stop   do  
              begin  
                  PageControl1.Pages[I].PaintTo(Handle,   10,   10);  
                  if   I   <>   Stop   then  
                      NewPage;  
              end;  
              EndDoc;  
          end;  
      end;  
   
  end;Top

9 楼m_leaner(和日本鬼子势不两立)回复于 2001-06-29 13:00:51 得分 0

还可以DOWN一个LIBEH.PBL他能实现你要的,我的现在由于重新安装机器丢了。下载网址也忘了,不过你可以去www.bruce_zhao.163.net.jdyj.htm看看Top

10 楼zou5655(周围)回复于 2001-06-29 14:15:08 得分 0

用FASTREPORT,它有现成的控件TfrPrintGrid.Top

11 楼cobi(我是小新)回复于 2001-06-29 15:57:31 得分 0

gzTop

12 楼3nt(更浅的蓝)回复于 2001-06-29 17:16:00 得分 0

不是LIBEH.PBL   是ehlib。用devExpress也可。很多地方都能找到。Top

13 楼wolf_cyj(中山之兰)回复于 2001-06-30 00:48:41 得分 0

你自己从DBGrid继承一个类,加入Print方法.  
  我以前实现过的,代码很简单的.Top

14 楼colacoca(我是一瓶倒过来的可口可乐)回复于 2001-06-30 10:44:47 得分 0

gzTop

15 楼x7913()回复于 2001-07-01 16:35:45 得分 0

m_leaner(m_kk)和Crob(我干嘛这么帅)的我试了好多次,搞不明白  
   
  我再试试看Top

16 楼lpf78(lpf)回复于 2001-08-03 17:30:40 得分 0

x7913()   请问问题解决了吗?我和你同病相怜,如有好的解决方案请告诉我email:lpf78@163.com     不胜感激!!!!!!1Top

相关问题

  • 简单问题啊!!!如何获取一个DBGrid网格中的一条记录???就是特定记录!!!!!
  • QuickRep打印DBGrid多条记录问题?
  • 如何使用activereports打印任意的查询结果记录集(要带有网格线)??
  • 改变DBGRID网格线的颜色?我要没有记录时也改变网格线的颜色,请问怎样写????
  • 如何用Tprint把DBGrid上显示的网格和数据打印出来?谢谢!
  • 如何将DBGrid中选中的若干条记录打印?
  • 用dbgrid控件,想捕获用键盘方向键在网格内上下移动使不同记录得到焦点的动作?怎么办?
  • DBGRID网格中可以使用 “√”?
  • 请问一下,如何打印DBGrid中所有的数据记录?
  • quickReport中怎么样打印出带网格线的表格?

关键词

  • 打印
  • 预览
  • start
  • qrband
  • bandtype
  • quickrep
  • printdialog
  • printrange
  • qrtext
  • pagecontrol

得分解答快速导航

  • 帖主:x7913
  • Crob
  • m_leaner

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo