当前位置: 网学 > 编程文档 > VB > 正文

VB中Grid控件的打印方法

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式

Grid控件是Visual Basic(以下简称VB)最常见控件之一,用它可 以以表格的形式显示、浏览数据。特别是在数据库应用中,直接绑定 即可显示和浏览数据库信息。然而,美中不足的是Grid没有编辑和打 印功能,列与列的位置不能相互交换。笔者曾尝试着给Grid增添了这 些功能,使之功能更强大。下面给出改进方法及源程序,读者可参考使 用。该程序在HP5/100、Window 95环境下用VB5.0调试通过。
  给Grid 控件增加打印方法有三种:一是直接打印控件,二是通过p rinter 来实现打印功能,三是通过调用MS-Word及MS-Excel 来实现打 印。
  首先,打开一个应用,在FORM1中增加DATA控件DATA1,把DATA1的CO NNECT属性设为dBA SEⅢ,再把DATABASENAME属性设为D:\PJXM.DBF。 然后再在FORM1中增加MSFLEXGRID控件GRID1,并把GRID1的DATASOURCE 属性设为DATA1。这样数据库PJXM.DBF的信息就会在GRID1 中显示出 来。下面分析介绍各种打印方法。
  方法一:直接打印窗体
  在FORM1中增加命令按钮(command),CAPTION属性设为直接打印, 再写入下列代码:
  Sub command_click
  Form1.printform
  End sub
  这样即可通过打印窗体FORM1的方法把GRID1的数据打印出来。这 种方法的缺点是只能打印GRID1中显示的数据部分,显示不出来的则无 法打印,而且这种打印方法很像屏幕硬拷贝,而且不能灵活地控制字体 等。
  方法二:通过PRINTER实现打印
  1. 加入打印命令按钮(command1)和函数(prnt1),写入下面代码, 读者稍加改动可写成标准的函数或过程。Function prnt1 (x As Int eger, y As Integer, font As Sing le, txt As String)
  printer.CurrentX = x
  printer.CurrentY = y
  printer.FontBold = False
  printer.FontSize = font
  printer.Print txt End Function Sub command1_click
  Dim fnt As Single
  Dim pp as integer
  Pp=0 ''设置开始页码0
  Dim stry,strx,strx1,stry1,linw,page1,p As Integer
  Static a(8) As Integer ''定义打印的列数
  ss$ = "内部结算存入款对帐单" ''定义表头
  kan = 0
  For i = 0 To 8
  a(i) = 1500'' 定义每列宽
  kan = kan + a(i) ''计算表格总宽度
  Next
  page1 = 50 ’定义每页行数
  strx = 200
  strx1 = 200 ’定义X方向起始位置
  stry = 1400
  stry1 = 1400 ’定义Y方向起始位置
  linw = 240 ’定义行宽
  fnt = 8 ’定义字体大小
  printer.fontname = "宋体" ’定义字体
  dd = prnt1(4000, 700, 18, ss$) ’打印标题
  printer.Line (strx - 50, stry - 30)-(strx +
   kan - 10, stry - 30)
  For j = 0 To gridrow - 1
   ’gridrow为所要打印的行数
   grid1.row = j
   strx = strx1
   printer.Line (strx - 50, stry - 30)-(strx +
  kan - 10, stry - 30)
   p = p + 1
   For i = 0 To 8
   grid1.col = i
   dd = prnt1(strx, stry, fnt, grid1.text)
   strx = strx + a(i)
   Next
  If p > page1 Then ’next page
   p = 0
   strx = strx1
   printer.Line (strx - 50, stry + linw)-(strx + kan - 10, stry + linw)
   stry = stry1
   For n = 0 To 8
   printer.Line (strx - 30, stry - 30)-(strx
   - 30, stry + (page1 + 2) * linw)
   strx = strx + a(n)
   Next
   printer.Line (strx - 30, stry - 30)-(strx -
  30, stry + (page1 + 2) * linw)
   pp=pp+1
   foot$="第 "+cstr(pp)+" 页"
   dd = prnt1(strx - 30-1000, stry + (page1 +
  2) * linw+100, 10, foot$
  • 下一篇资讯: VB程序加密的两种方法
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号