最近做了一个简单的数据库查询小软件,是老板一个项目的配套软件。需要将查询到的数据显示出来,然后打印。
开始使用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 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|