帐号: 密码:
// 设为首页 // 收藏本站 // 请您留言 // 网址导航
远方教程-满足你的求知欲!
站内搜索:
HTML ASP PHP CSS DIV Dreamweaver Photoshop Word Excel PPT SEO技巧
您当前位置:网站首页 >> 统计之窗 >> VB专区 >> 阅读文章

VB应用举例14:基于VB的通用折行打印程序

来源:远方教程 作者:VBFans 发布时间:2014-12-20 查看次数:4420 访问[新版]

   一. 概述

   几乎所有数据库应用软件,都需要打印单证和报表。常见的方法是利用VB的Crystal Reports(水晶报表)方式,通过TextBox等数据绑定控件,调用Print方法直接输出。虽然Crystal Report这一个功能强大、样式丰富且无编程方式的报表编制程序能适应大部分单证、报表打印的需要,但是Crystal Reports引擎是一个动态链接库,需许多文件支持和调用更多系统资源,大大增加系统负担。

   另一种解决办法是通过Printer对象的Print方法,直接打印字符串。这虽然减少了系统资源的开销,但它不能直接用于打印复杂的单证和报表。本文通过两个实例,阐述一个通用折行打印程序的编程和在单证及报表的应用。

   二. 编程实现及实例

   为便于阐述的方便,我们先建立一个Access数据库Standards.mdb,其内SN表由以下几个字段组成:

   标准号(文本,17)

   标准名称(文本,255)

   英文名称(文本,255)

   实施日期(日期,8)

   修定日期(日期,8)

   发布日期(日期,8)

   代替标准(文本,50)

   通用折行打印程序编制操作如下:

   1.在VB5.0编程环境中,新建一个工程Project1;

   2. 在Project1中添加Moduel,在Moduel模块中定义一个记录最大折行数的公用变量Rowlab和Function函数(以下程序都经过实际运行测试,可以原样复制使用);

Public rowlab As Integer        
'定义一个公用变量 
Function prnt11(X As Integer, Y As  
Integer,Font As Single, Txt As String, Val As Integer) 
Dim str As String, str1 As String,  
str2 As String ,i As Integer 
Printer.CurrentX = X 
Printer.CurrentY = Y 
Printer.FontBold = False 
Printer.FontSize = font 
str = txt 
str2 = str 
i = 0 
rowlab = 0 
If Len(Trim(str)) = 0 Then 
     rowlab = 1   ’待打印字符串为空的标志 
Else 
  Do While Len(str) > 0 
     Printer.CurrentX = X 
     Printer.CurrentY = Y + rowlab * 240 
     rowlab = rowlab + 1 
     If Len(str) >= val Then 
        str1 = Mid(str, 1, val) 
        Printer.Print str1 
        i = i + 1 
        str = Mid(str2, i * val + 1)  
     Else 
       Printer.Print str 
       Exit Do 
     End If 
   Loop 
End If 
End Function 
第1页 第2页 第3页
感谢VBFans投稿查看TA的其他文章>>
打印 打印 | 关闭 关闭 评论
相关文章
图片新闻
站内搜索  
搜索
猜您喜欢  
最新更新  
阅读排行  
关于我们 | 联系方式 | 大事记 | 免责声明 | | 给我留言
部分广告源自金山联盟2345联盟 QQ咨询 站长之家QQ群:232617873
Copyright 2024 远方教程 © All Rights Reserved.

回顶部