王朝网络
分享
 
 
 

VB中Grid控件的打印方法

王朝厨房·作者佚名  2007-01-04
宽屏版  字体: |||超大  

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$) ’打印页脚码

printer.NewPage ’next page

dd = prnt1(4000, 700, 18, ss$) ’打印标题

strx = strx1

stry = stry1

printer.Line (strx - 50, stry - 30)-(strx +

kan - 10, stry - 30) ’打印第一行

Else

stry = stry + linw

End IfNext

st = stry

If p < page1 Then ’在最后页剩余划空行

For o = p To page1 + 1

strx = strx1

printer.Line (strx - 50, stry - 30)-(strx +

kan - 10, stry - 30)

stry = stry + linw

Next

End If

stry = stry1

strx = strx1

stry = stry1’line col

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$)’打印页脚码

printer.EndDoc’打印结束

End sub

这种方法通过灵活的编程可以方便地调整字体、字型、线形、页 面、纸张大小等,可打印出比较满意的效果。

如果计算机上装有Microsoft Word和Microsoft Excel,则可把GR ID的表格通过VB发送到这些应用程序中去,生成Microsoft Word和Mic rosoft Excel表格。这样可以充分利用它们的打印、编辑功能,打印 出更理想的效果。下面逐一介绍。

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

1. 在declaration 中写入:

Dim msword As Object

2. 加入打印命令按钮(command2),CAPTION设为"生成Word表格", 写入下面代码:Pri vate Sub command2_Click()

screen.MousePointer = 11

Set msword = CreateObject("word.basic")

Dim AppID, ReturnValue

appID = Shell("d:\office97\office\WIN-

WORD.EXE", 1) ’运行Word

msword.AppActivate "Microsoft Word"

full

Screen.MousePointer = 0End Sub

3. 写入以下过程full()Sub full()

Dim i As Integer, j As Integer, col As Integer,

row As Integer

Dim cellcontent As String

Me.Hide

cols = 4’表格的列数

row = gridrow ’打印表的行数

msword.filenewdefault

msword.MsgBox "正在建立MS_WORD报表,请稍候

……", "", -1

msword.leftpara

msword.screenupdating 0

msword.tableinserttable , col, row, , , 16, 167

msword.startofdocument

for j=0 to gridrow ’表格的行数

grid1.row=j

For i = 1 To cols

Gri1d.col=i

If IsNull(grid1.text) Then

cellcontent$ = ""

Else

cellcontent$ = grid1.text

End If

msword.Insert cellcontent$

msword.nextcell

Next i

Next j

msword.tabledeleterow

msword.startofdocument

msword.tableselectrow

msword.tableheadings 1

msword.centerpara

’msword.startdocument

msword.screenrefresh

msword.screenupdating 1

msword.MsgBox "结束", "", -1

Me.ShowEnd Sub

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

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

Dim i As Integer

Dim j As Integer

Dim xlApp As Excel.Application

Dim xlBook As Excel.Workbook

Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")

xlApp.Visible = True

Set xlBook = xlApp.Workbooks.Add

Set xlSheet = xlBook.Worksheets(1)

xlSheet.Cells(6, 1) = "i"

For i = 0 To gridrow

grid1.Row = i

For j = 0 To 6

Grid1.Col = j

If IsNull(Grid1.Text) = False Then

xlSheet.Cells(i + 5, j + 1) = Grid1.Text

End If

Next j

Next iEnd Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有