首页 / 软件开发 / VB / 基于VB-PRINTER对象的动态报表打印
基于VB-PRINTER对象的动态报表打印2010-01-15 comprg.com.cn 叶建良0 引言在笔者开发的“学籍管理系统”中,有一数据查询模块,其任务是查询与浏览设定条件的学生或班级数据,其中的“打印”按钮功能是将显示在表格中的内容打印出来。由于查询结果中表与字段的是不固定的,使得利用VB本身自带的数据库报表难以实现动态打印,笔者经过对MSHFlexGrid控件、Printer对象的较深入学习、研究,遵循WINDOWS“所见即所得”的思想,有机结合二者编写程序,实现了既能显示查询数据,又能根据MSHFlexGrid控件中的内容的实际大小进行快捷输出,总体效果良好。1 控件与打印技术简介1.1 MSHFlexGrid控件Microsoft Hierarchical FlexGrid (MSHFlexGrid) 控件提供了类似EXCEL电子表格的功能,控件可对表格中数据进行显示和操作,并且在对包含字符串和图片的表格进行分类、合并以及格式化时,具有很强的灵活性。MSHFlexGrid 控件中的 Cols 和 Rows 属性决定了MSHFlexGrid 控件中的列数和行数,Row 和 Col 属性指定了当前单元格,使用鼠标或者方向键可改变单元格的位置,TextMatrix(i, j)属性为显示网格中i行j列位置的文本内容,可进行读写赋值,表中单元格的列宽、行高分别由ColWidth 和RowHeight 属性进行设定。MSHFlexGrid控件可用鼠标拖动实现对选中的行列进行行高、列宽的调整,也可通过编写过程对表进行行高与列宽的统一设置。1.2 打印技术VB提供了三种技术用于打印正文和图形:①在窗体中建立所需要的输出,然后调用 PrintForm 方法打印窗体。②先设置 Printers 集合中的缺省打印机,再传送正文和图形到打印机。③先传送正文和图形给Printer对象,再进行打印输出。因为Printer 对象是一个与设备无关的图片空间,支持用Print、PSet、Line、PaintPicture和Circle方法来创建文本和图形,并将文本和图形与打印机的分辨率、功能进行了最佳的匹配,所以针对不同类型的打印机,Printer对象提供最好的打印质量。采用 Printer 对象打印输出,主要需设置 CurrentX 和 CurrentY 属性,这两个属性决定 Printer 对象当前页中的输出位置,如果打印文档内容较多时,则用NewPage方法进行换页处理,最后用EndDoc方法结束文档的打印。