转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
解决VB中的Grid控件的打印问题         ★★★★

解决VB中的Grid控件的打印问题

作者:闵涛 文章来源:闵涛的学习笔记 点击数:782 更新时间:2009/4/23 14:58:20
 rid控件是VisualBasic最常见控件之一,从VB3.0到VB5.0都有该控件。也是VB爱好者最 喜爱的工具之一。用它可以以表格的形式显示、浏览数据,特别是数据库应用,直接绑定即可显 示浏览数据库信息。然而,美中不足的是Grid没有编辑和打印功能,列与列的位置不能相互交 换。笔者曾尝试着给Grid增添了这些功能,使之锦上添花,功能更强大。下面给出改进方法及源 程序,读者只需按步骤写下源程序即可使你的Grid具有打印功能。该程序笔者在HP5/100Window 95环境下用VB5.0调试通过。

  给Grid控件增加打印方法有三种:1是直接打印控件的方法,2 是过printer来实现打印功能,3是通过调用MS-WORD及MS-EXCEl来实现打印。
首先,打开一个应用,在FORM1中增加DATA控件DATA1,把DATA1的CONNECT属性设为dBASEIII, 再把DATABASENAME属性设为D:\PJXM.DBF。然后再在FORM1中增加MSFLEXGRID空间GRID1,并把GRID1的DATASOURCE 属性设为DATA1。这样数据库PJXM.DBF的信息就会在GRID1中显示出来。

  方法一:直 接打印窗体法,在FORM1中增加命令按钮(command),CAPTION属性设为直接打印,再写入下列 编码:

Subcommand_click
Form1.printform
Endsub

  这样即可通过打印窗体FORM1的方法把GRID1的数据打印出来,遗憾的是只 能打印GRID1中显示的数据部分,显示不出来的则无法打印,而且这种打印方法很象屏幕硬拷 贝把其他控件也打印出来。也不能灵活的控制字体等。

方法二:通过PRINTER实现打印。 这种方法

  1、加入打印命令按钮(command1)、函数(prnt1)即可实现打印功能,写入 下面代码,读者稍加改动可写成标准的函数或过程。

Functionprnt1(xAsInteger, yAsInteger,
fontAsSingle,txtAsString)
printer.CurrentX=x
printer.CurrentY=y
printer.FontBold=False
printer.FontSize=font
printer.Printtxt
EndFunction

Subcommand1_click
DimfntAsSingle
Dimppasinteger
Pp=0设置开始页码0
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
Statica(8)AsInteger定义打印的列数
ss$="内部结算存入款对帐单"定义表头
kan=0
Fori=0To8
a(i)=1500定义每列宽
kan=kan+a(i)计算表格总宽度
Next

page1=50定义每页行数
strx=200
strx1=200定义X方向起始位置
stry=1400
stry1=1400定义Y方向起始位置
linw 0定义行宽
fnt=8定义字体大小
printer.fontname="宋体"定义字体

dd=prnt1(4000,700,18,ss$)打印标题
printer.Line(strx-50,stry-30)
-(strx+kan-10,stry-30)
Forj=0Togridrow-1gridrow为所要打印的行数
grid1.row=j
strx=strx1
printer.Line(strx-50,stry-30)
-(strx+kan-10,stry-30)
p=p+1
Fori=0To8
grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.text)
strx=strx+a(i)
Next

Ifp$#@62;page1Thennextpage
p=0
strx=strx1
linelastline
printer.Line(strx-50,stry+linw)
-(strx+kan-10,stry+linw)
stry=stry1
linecol
Forn=0To8
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$)打印页角码

printer.NewPagenextpage
dd=prnt1(4000,700,18,ss$)打印标题
strx=strx1
stry=stry1
printer.Line(strx-50,stry-30)-
(strx+kan-10,stry-30)printfirstrow
Else
stry=stry+linw
EndIf
Next
st=stry
Ifp$#@60;page1Then在最后页剩余划空行
Foro=pTopage1+1
strx=strx1
printer.Line(strx-50,stry-30)
-(strx+kan-10,stry-30)
stry=stry+linw
Next
EndIf
stry=stry1
strx=strx1
stry=stry1linecol
Forn=0To8
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$)打印页角码

printer.EndDoc打印结束
Endsub

  这种方法通过灵活的编程可以方便地调整字体、字型、线形、页面、纸张大小 等。可打印出比较满意的效果。如果你的计算机上装有MICROSOFTWORD和MICROEXCEL,最精彩 的用法还是把GRID的表格通过VB发送到MICROSOFTWORD及MICROEXCEL。生成MICROSOFTWORD 和MICROEXCEL表格。这样就可以充分利用MICROSOFTWORD和MICROEXCEL的打印、编辑功能 打印出更理想的效果。下面逐一介绍。

  方法三:通过生成MICROSOFTWORD表格打印

  1、在declaration中写入:

DimmswordAsObject

  2、加入打印命令按 钮(command2),CAPTION设为"生成WORD表格",写入下面代码,

PrivateSub command2_Click()

screen.MousePointer=11
Setmsword=CreateObject("word.basic")

DimAppID,ReturnValue
appID=Shell("d:\office97\office\WINWORD.EXE",1)
RunMicrosoftWord.

msword.AppActivate"MicrosoftWord"
msword.AppActivate"MicrosoftWord",1
full
Screen.MousePointer=0
EndSub

  2、写入以下过程full()

Subfull()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Me.Hide
cols=4表格的列数
row=gridrow打印表的行数
msword.filenewdefault
msword.MsgBox"正在建立MS_WORD报表,
请稍候.......","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow表格的行数
grid1.row=j
Fori=1Tocols
Gri1d.col=i
IfIsNull(grid1.text)Then
cellcontent$=""
Else
cellcontent$=grid1.text
EndIf
msword.Insertcellcontent$
msword.nextcell
Nexti
Nextj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"结束","",-1
Me.Show

EndSub

  方法四:通过发送到MICROSOFTEXCEL实现表格打印

  1、加入打印命令按钮(command3),CAPTION设为"生成EXCEL表格",写入下面代 码

PrivateSubcommand3_Click()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.Application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet

SetxlApp=CreateObject("Excel.Application")
xlApp.Visible=True
SetxlBook=xlApp.Workbooks.Add
OnErrorResumeNext
SetxlBook=xlApp.Workbooks.AddOpen("d:\text2.xls")
SetxlSheet=xlBook.Worksheets(1)
xlSheet.Cells(6,1)="i"
Fori=0Togridrow
grid1.Row=i
Forj=0To6
Grid1.Col=j

IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i+5,j+1)=Grid1.Text
EndIf
Nextj
Nexti
ExitSub


[VB.NET程序]GSM短信模块库函数,可以用VB,VC,调用简单实用  [办公软件]PowerPoint做交互课件之弃用VBA
[办公软件]VBA获取U盘、主板、CPU序列号和网卡MAC地址  [办公软件]VBA设置文件属性及加密源代码示例
[办公软件]VBA中初始化ADO连接的几种方法  [网络安全]“VB破坏者变种N”病毒摘要
[Web开发]ASP.NET上传文件到数据库VB版  [办公软件]在Excel中利用VBA实现多表单元格数据的读取与赋值…
[办公软件]使用Vba读取已关闭的Excel工作薄数据到当前工作表…  [办公软件]Excel编程基础之VBA文件操作详解
教程录入: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……
    咸宁网络警察报警平台