当前位置:首页 » 多媒体相关

怎样把DBGrid当前显示的记录打印出来!?


用printdialog!不行的话用rave  
  谢谢!!!

推荐阅读

  • 肉搏引发价格雪崩 品牌电脑血战成都磨子桥 [详细内容]
  • Borland发布Delphi.NET [详细内容]
  • 修改开关机动画,让你的手机与众不同 [详细内容]
  • 疑对手非东芝 日立硬盘正准备“危机公关” [详细内容]
  • 用Delphi客户端访问EJB组件 [详细内容]
  • W109另一种制作满屏图片的方法 [详细内容]
  • 微软提醒:SP2最终期限临近 系统将自动升级 [详细内容]
  • 网友回答:
    网友:smallhand

    使用相同的数据集和报表控件相关联就可以了!  
      或者使用fastreport的frprintgrid控件直接打印!

    网友:fcyxhome

    procedure   tform1.button2click(sender:   tobject);  
      var  
          pl,pr,pt,pb:integer;//页边距  
          px,py:integer;//打印机分辨率  
          ps:integer;//打印机与显示器分辨率之比  
          lh:integer;//行高  
          i:integer;  
          x,y:integer;//打印坐标  
          rowb,colb:integer;   //行距、行距  
      begin  
          //初始化页面  
          pl:=spinedit1.value;  
          pr:=spinedit2.value;  
          pt:=spinedit3.value;  
          pb:=spinedit4.value;  
          rowb:=spinedit6.value;//行距  
          colb:=spinedit7.value;//列距  
          //将获得的打印机分辨率由厘米转换为英寸  
          px:=trunc(getdevicecaps(printer.handle,logpixelsx)/2.54);  
          py:=trunc(getdevicecaps(printer.handle,logpixelsy)/2.54);  
          //将屏幕分辨率转换为打印机的比例   
          ps:=trunc(getdevicecaps(printer.handle,logpixelsx)  
          /screen.pixelsperinch);  
          //设置打印方向  
          if   combobox1.text=横向打印   then  
              printer.orientation:=poportrait;  
          else  
              printer.orientation:=polandscape;  
          //获得打印的字体和大小  
          printer.canvas.font.name:=combobox2.text;  
          printer.canvas.font.size:=spinedit5.value;  
          printer.canvas.font.color:=clred;  
          printer.canvas.pen.color:=clblue;  
          //设置行高  
          lh:=printer.canvas.textheight(dbgrid1.font.name);  
          //打印的起始位置(打印机画布上的位置)  
          x:=px*pl;  
          y:=py*pt;  
          //打印dbgrid1中的内容  
          if   (table1.active=true)   and   (table1.recordcount>0)   then  
              begin  
                  //设置一打印机任务标题  
                  printer.title:=dbgrid内容打印;  
                  with   printer   do  
                  begin  
                      begindoc;  
                      table1.first;  
                      while   not   table1.eof   do  
                          begin  
                              for   i:=0   to   dbgrid1.fieldcount-1   do  
                                  begin  
                                  //设定打印的宽度  
                                      if   (x+dbgrid1.columns.items[i].width*ps)  
                                            <=(pagewidth-ps*pr)   then  
                                          begin  
                                              //画出表格线  
                                              printer.canvas.rectangle(x,y,x+dbgrid1.columns.items[i].width*ps,y+lh);  
                                              //如果为第一行时,打印dbgrid1确的标题  
                                              if   y=py*pt   then  
                                                  canvas.textout(x+rowb,y+colb,  
                                                  dbgrid1.columns[i].title.caption)  
                                              else  
                                              //其它行,打印每行的内容  
                                                  printer.canvas.textout(x+rowb,y+colb,  
                                                  dbgrid1.fields[i].asstring);  
                                          end;  
                                            //下一列的横坐标,下一列的纵坐标不变  
                                        x:=x+dbgrid1.columns.items[i].width*ps;  
                                      end;  
                                      //打印下一记录  
                                      if   not   (y=py*pt)   then  
                                        table1.next;  
                                          x:=px*pl;   //打印下一行时,横坐标回到行首  
                                          y:=y+lh;  
                                    //打印满一页时,新建一页  
                                    if   (y+lh)>(pageheight-py*pb)   then  
                                        begin  
                                            newpage;  
                                            x:=px*pl;  
                                            y:=py*pt;  
                                        end;  
                                  end;  
                      enddoc;  
                  end;  
                  table1.first;//回到dbgrid1首行  
                  application.messagebox(已打印完成,打印,32);  
            end;  
      end;  
       
      procedure   tform1.formactivate(sender:   tobject);  
      begin  
      //获得打印可选字体,并设置初始字体为dbgrid1的字体,字号  
      combobox2.items:=printer.fonts;  
      combobox2.text:=dbgrid1.font.name;  
      spinedit5.value:=dbgrid1.font.size;  
      table1.databasename:=extractfilepath(application.exename);  
      table1.open;  
      end;  
      end.  
       
       
     

    .

    讨论区

    Login