您的位置:首页 > 编程语言 > VB

在VB下使用Printer对象使用心得

2010-03-28 22:07 225 查看
最近做了一个简单的数据库查询小软件,是老板一个项目的配套软件。需要将查询到的数据显示出来,然后打印。

开始使用Printer 对象是出于无奈,因为数据显示到viewlist后,无法进行直接打印(也许有方法,没有查到)。觉得Printer对象使用还要自己确定各种打印格式和位置等,不方便(本来VB使用就是为了方便)。

使用后了解到的东西:

1.每一次使用Print方法后,Printer对象都会自动换行,即currentY会自动增加,增加的距离就是打印前一行的高度。

2.如果一列要打印多个字符串,可以单独指定currentX和currentY,以确保它们保持在同一行上。

3.在运行时可以修改的属性有:纸大小的设定,打印方向,字体和颜色等。

4.在打印结束后,不要忘记用EndDoc结束打印。

5.其他:很多东西可以在MSDN上查到,反而是有些网上发布的东西不太可信,有的拿来完全就是错的,对自己发的东西一点都不负责任,联想到最近都在批斗的“学术腐败”……

最后,附上一点最简单的打印代码,有需要的朋友可以自己在上面修改,增加自己需要的功能

--数据定义就没有写上去了,个别部分加了点注释,方便阅读

Printer.FontSize = 19.2
DataTitle = "XXXXXXXX"
Pageheader = 25
Pagefooter = 25
Pageleft = 20
Pageright = 20

With Printer
.PaperSize = vbPRPSA4 ' 设置为A4纸
.ScaleMode = vbMillimeters
.FontBold = True
.ScaleLeft = -20
.ScaleTop = -25
.ScaleWidth = 210
.ScaleHeight = 297
UseWidth = .ScaleWidth - Pageleft - Pageright
UseHeight = .ScaleHeight - Pageheader - Pagefooter
.CurrentX = 0
.CurrentY = 0
.DrawWidth = 5
End With

'打印标题
With Printer
.FontSize = 20
.CurrentX = (UseWidth - .TextWidth(DataTitle)) / 2
.CurrentY = Pageheader + .ScaleTop
End With

Printer.Print DataTitle
Printer.FontSize = 10
Printer.CurrentX = Pageleft + Printer.ScaleLeft
startyline = Printer.CurrentY

DataRow = ""
With Printer
'打印字段名
.CurrentY = .CurrentY + 15
Y = .CurrentY
For N = 0 To RS.Fields.Count - 2
.CurrentX = (UseWidth / RS.Fields.Count) * N + Pageleft
.CurrentY = Y
SectionPos(N) = .CurrentX
Printer.Print IIf(IsNull(RS.Fields(N + 1).Name), "", RS.Fields(N + 1).Name)
Next
.CurrentX = SectionPos(0)
Printer.Print DataRow

'打印每行数据
Do While .CurrentY <= .ScaleHeight - Pagefooter
DataRow = ""
Y = .CurrentY
For N = 0 To RS.Fields.Count - 2
.CurrentX = SectionPos(N)
.CurrentY = Y
Printer.Print IIf(IsNull(RS.Fields(N + 1).Value), "", RS.Fields(N + 1).Value)
Next

RS.MoveNext
If RS.EOF <> True Then

Else
Exit Do
End If
Loop

.EndDoc
End With

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/superbert/archive/2006/03/13/623305.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: