电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 图形图象-> FIREWORKS教程
解决visualbasic的grid控件的打印问题_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
----Grid控件是VisualBasic最常见控件之一,从VB3.0到VB5.0都有该控件。也是VB爱好者最喜爱的工具之一。用它可以以表格的形式显示、浏览数据,特别是数据库应用,直接绑定即可显示浏览数据库信息。然而,美中不足的是Grid没有编辑和打印功能,列与列的位置不能相互交换。笔者曾尝试着给Grid增添了这些功能,使之锦上添花,功能更强大。下面给出改进方法及源程序,读者只需按步骤写下源程序即可使你的Grid具有打印功能。该程序笔者在HP5/100Window95环境下用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=240定义行宽
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>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<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表
格",写入下面代码,

PrivateSubcommand2_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->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·photoshop用美女大头像制作超级海报_photoshop教程
·photoshop cs2完美打造绚丽极光_photoshop教程
·vbcom基础讲座之activexexes_visualbasic教程
·导出excel/foxpro/prodox格式表_visualbasic教程
·关于visualbasic6.0类开发(上)_visualbasic教程
·使vb的网格控件具有输入功能_visualbasic教程
·用vb实现鼠标的隐藏_visualbasic教程
·用数据库保存vb程序的用户设置_visualbasic教程
·ado控件和data控件的冲突(不能共存)的解决方法_visualbasic教程
·hierarchicalflexgrid控件的使用三_visualbasic教程

最新文章
·photoshop抠出复杂背景下的飞扬秀发_photoshop教程
·夏天到啦!用photoshop造一把折叠扇_photoshop教程
·为php5定做 zendbox 将明年初发布_php文摘
·惊艳!photoshop创意彩妆变变变_photoshop教程
·photoshop四小工具巧修旧损照片_photoshop教程
·photoshop液化滤镜“恶搞”朋友照片_photoshop教程
·photoshop综合实例:绿色原野上的蒲公英_photoshop教程
·photoshop将照片快速处理为宝丽来快照特效_photoshop教程
·命令行下配置windows xp防火墙_windows xp
·php环境搭建最新方法_php教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号