当前位置:编程学习 > VB >>

基于VB的通用折行打印程序

 

 

---- 几乎所有数据库应用软件,都需要打印单证和报表。常见的方法是利用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

 

---- 3. 在Project1中新建一个窗体Form1,窗体上添加一个Data控件Data1,一个MSFlexGrid控件MSFGrid1,7个TextBox和两个命令按钮CmdPrnt1、CmdPrnt2。设置Data控件的属性:

 

.. DatabaseName="Standards.mdb"

..RecordSourse="SN"

  MSFGrid1属性:

    .DataSource="Data1"

  Text1属性:

    .DataSource="Data1"

    .DataField="标准号"

  Text2~Text7类同。

 

---- CmdPrnt1、CmdPrnt2分别为打印单条记录和多条记录的按钮。

 

---- 实例1:文字串定位折行打印在口岸联检部门中应用非常广泛。下述例子是用CmdPrnt1的Click事件代码实现了对文字串定位折行打印:

 

Private Sub CmdPrnt1_Click()

Dim str As String, str1 As String ,txt As String

Dim strx As Integer, stry As Integer,i As Integer

strx = 200

stry = 0

txt = Space(20) + "中国出入境检验检疫标准目录检索STEMS 2000"

Printer.FontName = "黑体"

dd = prnt11(strx, stry, 10, txt, 50)

stry = stry + rowlab

补充:软件开发 , Vb ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,