电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 邮件系统
基于vb的通用折行打印程序_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
----几乎所有数据库应用软件,都需要打印单证和报表。常见的方法是利用VB的CrystalReports(水晶报表)方式,通过TextBox等数据绑定控件,调用Print方法直接输出。虽然CrystalReport这一个功能强大、样式丰富且无编程方式的报表编制程序能适应大部分单证、报表打印的需要,但是CrystalReports引擎是一个动态链接库,需许多文件支持和调用更多系统资源,大大增加系统负担。

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

----二.编程实现及实例

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

----标准号(文本,17)

----标准名称(文本,255)

----英文名称(文本,255)

----实施日期(日期,8)

----修定日期(日期,8)

----发布日期(日期,8)

----代替标准(文本,50)

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

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

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

PublicrowlabAsInteger   
定义一个公用变量
Functionprnt11(XAsInteger,YAs
Integer,FontAsSingle,TxtAsString,ValAsInteger)
DimstrAsString,str1AsString,
str2AsString,iAsInteger
Printer.CurrentX=X
Printer.CurrentY=Y
Printer.FontBold=False
Printer.FontSize=font
str=txt
str2=str
i=0
rowlab=0
IfLen(Trim(str))=0Then
  rowlab=1 待打印字符串为空的标志
Else
 DoWhileLen(str)>0
  Printer.CurrentX=X
  Printer.CurrentY=Y rowlab*240
  rowlab=rowlab 1
  IfLen(str)>=valThen
    str1=Mid(str,1,val)
    Printer.Printstr1
    i=i 1
    str=Mid(str2,i*val 1)
  Else
   Printer.Printstr
   ExitDo
  EndIf
 Loop
EndIf
EndFunction

----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事件代码实现了对文字串定位折行打印:

PrivateSubCmdPrnt1_Click()
DimstrAsString,str1AsString,txtAsString
DimstrxAsInteger,stryAsInteger,iAsInteger
strx=200
stry=0
txt=Space(20) "中国出入境检验检疫标准目录检索STEMS2000"
Printer.FontName="黑体"
dd=prnt11(strx,stry,10,txt,50)
stry=stry rowlab*240
Printer.Line(0,stry)-(9000,stry)
Printer.FontName="宋体"
txt="标准号:" Space(2) Trim(Text1) Space(3)
"发布日期:" Trim(Text4) Space(3) "实施日期:"
Trim(Text6) Space(3) "修定日期:" Trim(Text5) Chr(13)
stry=stry 240
dd=prnt11(strx,stry,10,txt,70)
stry=stry rowlab*240
txt="代替标准:"
dd=prnt11(strx,stry,10,txt,10)
dd=prnt11(strx 1000,stry,10,Trim(Text7),60)
stry=stry rowlab*240
txt="标准名称:"
dd=prnt11(strx,stry,10,txt,10)
dd=prnt11(strx 1000,stry,10,Trim(Text4),38)
stry=stry rowlab*240
txt="英文名称:"
dd=prnt11(strx,stry,10,txt,10)
dd=prnt11(strx 1000,stry,10,Text5,72)
Printer.EndDoc
EndSub

----注:Prnt11函数原形:prnt11(XAsInteger,YAsInteger,FontAsSingle,TxtAsString,ValAsInteger),其各参数含义如下:

----X、Y为待打印字符串左上角起始座标;

----Font为字体大小;

----Txt为待打印字符串;

----Val为字符串打印折行长度。

----实例2:直接打印表格式窗体显示的多记录多字段,往往因某些字段的字节太多而造成纸张宽度不足。以下CmdPrnt2的Click事件中的代码,实现了对上述MSFGrid1表格记录的打印:

PrivateSubCmdPrnt2_Click()
DimfntAsSingle
DimppAsInteger
DimstryAsInteger,strxAsInteger
Dimstry1AsInteger,
strx1AsInteger,linwAsInteger
Dimpage1AsInteger,pAsInteger,
gridrowAsInteger,iiAsInteger
p=0
ii=1 ii记录MSFGRID1表格同一记录内字段最大打印行
pp=0开始页码
ss$="中国出入境检验检疫标准目录检索STEMS2000"表头
Statica(4)AsInteger
kan=0
a(2)=1680
a(3)=2800
a(4)=5300
page1=46定义每页行数
 strx=200
 strx1=200
 stry=1400
 stry1=1400
 linw=240定义行宽
 fnt=10定义字体大小
 Fori=2To4
   kan=kan a(i)
 Next
 gridrow=Datdatact1.Recordset.RecordCount
 Ifgridrow=0Then
  MsgBox"无满足条件记录打印!"
  ExitSub
EndIf
 Printer.FontName="黑体"
 dd=prnt11(3300,700,fnt,ss$,26)打印标题
 dd=prnt11(500,stry-250,fnt,"标准号",26)
 dd=prnt11(2690,stry-250,fnt,"标准名称",26)
 dd=prnt11(6690,stry-250,fnt,"英文名称",26)
 Printer.Line(strx-20,stry-30)-(10460,stry-30)
 Printer.FontName="宋体"
 Forj=1Togridrow 打印gridrow条记录
   MSFGrid1.Row=j
   strx=strx1
   Fori=2To4假设只打印2-3列
    MSFGrid1.Col=i
    dd=prnt11(strx,stry,fnt,
MSFGrid1.Text,IIf(i=3,13,55))
    Ifii<rowlabThen
ii记录同一记录内字段最大打印行
     ii=rowlab
    EndIf
    strx=strx a(i)
   Next
   p=p ii
   rowlab=ii
   ii=1重新初始化
   Ifp>page1Then
     p=0
     strx=strx1
     Forn=2To4
      strx=strx a(n)
     Next
     pp=pp 1
     stry=stry rowlab*linw
     foot$="第" CStr(pp) "页"
     dd=prnt11(strx/2,stry 3*linw,10,foot$,26)
     stry=stry1
     Printer.NewPage
     Printer.FontName="黑体"
     dd=prnt11(3300,700,fnt,ss$,26)
     dd=prnt11(500,stry-250,fnt,"标准号",26)
     dd=prnt11(2690,stry-250,fnt,"标准名称",26)
     dd=prnt11(6690,stry-250,fnt,"英文名称",26)
     Printer.Line(-20,stry-30)-(10460,stry-30)
     打印起始线
     Printer.FontName="宋体"
     strx=strx1
    Else
     stry=stry rowlab*linw
    EndIf
   Next
   Ifp<page1Then
     Forp=0Topage1 1
      strx=strx1
     Next
   EndIf
   strx=strx1
   Forn=2To4
     strx=strx a(n)
   Next
   pp=pp 1
   foot$="第" CStr(pp) "页"
   dd=prnt11(strx/2,stry 3*linw,10,foot$,26)
   Printer.EndDoc
 EndSub

----以上程序在简体中文Windows98、VB5.0环境中调试通过。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·用photoshop蒙板给灰暗的照片调色_photoshop教程
·彩虹初现 photoshop设计奇幻风格的壁纸_photoshop教程
·photoshop蒙板全攻略_photoshop教程
·教你用photoshop绘制诱人的哈密瓜_photoshop教程
·photoshop婚纱照片处理及美化_photoshop教程
·ubuntu下安装php5+pdo_php教程
·photoshop古铜色效果制作方法_photoshop教程
·photoshop可选色与蒙板打造偏色人像艺术特效_photoshop教程
·photoshop制作网站流程图解揭密_photoshop教程
·photoshop绘制矢量风格美女插画_photoshop教程

最新文章
·分析邮件服务器发送海外不成功的原因
·尴尬的被告:谁为电子邮件安全买单
·专家浅析海外邮件收发不成功的原因
·深度剖析:中小网络公司经营之谜局
·企业是否需要企业邮局 有什么好处?
·重新审视:从道德视角看邮件泄露案
·走进反垃圾邮件研究 透视最新技术动向
·如何预防和减少“垃圾邮件”的到来
·华南双线IDC能否突破南北互联瓶颈?
·IDC邮件安全网关方案提高带宽效率


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号