当前位置:主页   - 电脑 - 程序设计 - VB
VB编程经验之谈----打印篇
来源:网络转载   作者:未知   更新时间:2008-11-20
收藏此页】    【字号    】    【打印】    【关闭
打印多页RichText

  打印对象在处理RichTextBox时由于忽视了RichText代码将不会工作得很好。为了打印RichTextBox,要使用SelPrint命令,但是SelPrint不是非常得友好,它按照自己的方式打印然后产生退纸动作。为了打印多页RichText,要找到每一页的开始和结束点,然后依此设置SelStart和SelLength,最后使用SelPrint打印出每一页。以下是工作的每一个步骤:

  1、使用SaveFile命令保存编辑版本的文件。

  2、转换编辑版本为打印版本:  

  遍历这个文档,修改SelIndent和SelRightIndent的数值,使之适合于打印机(注意:编辑时的缩进数值对于屏幕是合适的,但不适用于打印机)。

  做些其他的修改,比如:添加页眉,消除行号。

  3、使用SelPrint循环一次打印一个页面。这里,计算行数是一个技巧,找到LFCRs是容易的,但是,也必须要计算一下行缠绕,它也算在了行统计中,以及绝对不允许发生的页面溢出情况。

  4、使用SelRTF=""删除打印版本。

  5、使用LoadFile重新启动编辑版本。

  打印MSFlexGrid

  这里有一个快速打印MSFlexGrid控件内容的方法:

  Printer.PaintPictureMSFlexGrid_Name.Picture,0,0

  Printer.EndDoc

  如果想打印满页面的整个长度,请在前面添加下面2个语句:

  Dimold_widthasInteger

  MSFlexGrid_Name.width=printer.width

  然后,再在尾部添加:

  MSFlexGrid_Name.width=old_width  

  快速打印多个拷贝

  当以TrueType字体打印一个文档时,系统将下载打印机需要的字体,这样做将花费很长的时间。你可以通过在一个打印机文档中打印所有的拷贝实现快速打印多个拷贝内容:  

  Fori=1Tonum_copies

  注释:Printthedocumenthere...  

  Printer.NewPage

  Nexti

  Printer.EndDoc

  打印灰色行和区域

  黑白打印机不能打印灰色行,但是能通过发抖处理来创建灰色区域。为了创建围绕一个区域的一个灰色边界,使用DrawStyle=vbInvisible(5)来绘制一个窄灰色框,这样就没有了边界。

  设置打印的边界

  使用打印的scale熟悉来设置边界。设置了这个属性后,坐标(0,0)就映射到你需要加边的地方。比如,下面的代码设置左边界为0.5英寸,上边界为0.75英寸。然后再乘以1440转换为twip。

  Printer.ScaleLeft=-0.5*1440

  Printer.ScaleTop=-0.75*1440

  Printer.CurrentX=0

  Printer.CurrentY=0

  很遗憾,打印机不能精确地按照你所想的进行打印。试一试使用下面的命令在左上角打印一个1英寸大小的方块:

  Printer.Line(1440,1440)-Step(1440,1440)

  看看偏离了多少。试一试多打印几次,如果发现打印机有一定规律的偏离,你就可以按照一定的差额进行增减来达到最佳的效果。

  提供打印预览

  建立打印程序时,先设置一个要绘制的对象做为参数,然后传递给程序一个打印的对象。

  为了实现预览效果,传递给程序一个隐藏PictureBox。然后,根据需要的比例,使用PaintPicture拷贝这个隐藏图形到一个可见的PictureBox。在隐藏PictureBox上按照全尺寸绘制图形,首先允许你按比例决定了字体,并且,也实现了不失真地完成其他图形的描述。->


其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明