vb打印条码极简单的方法

上传人:xiao****1972 文档编号:84089657 上传时间:2019-03-02 格式:DOCX 页数:6 大小:43.95KB
返回 下载 相关 举报
vb打印条码极简单的方法_第1页
第1页 / 共6页
vb打印条码极简单的方法_第2页
第2页 / 共6页
vb打印条码极简单的方法_第3页
第3页 / 共6页
vb打印条码极简单的方法_第4页
第4页 / 共6页
vb打印条码极简单的方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《vb打印条码极简单的方法》由会员分享,可在线阅读,更多相关《vb打印条码极简单的方法(6页珍藏版)》请在金锄头文库上搜索。

1、VB打印条码极简单的方法公司接到一个医院病案的软件升级改造任务,在客户的程序中增加打印条码功能,因为客户的程序是VB开发的,因为客户提出需要自行调整打印参数等,一开始就调用word来打印,文字等信息都能够正常打印出,打印参数也能够调整,打印效果很好,但是打印的条码不能识别;于是寻求万能的Internet,搜索后发现网上的许多资料都是于code39为例,要不就是复杂,使用code39的条码原理,使用画图控件画图来实现;要不就是看不懂,不能实现;要不就是很简单,也下载了相关的代码,也有在word中调用barcode控件,但是我一直到没有找到可行或者说看明白的(代码都是没有注释的),也下载多个代码,

2、但是使用barcode在word打印的都没有成功,最后在绿竹小龙的博客中找到可行的方法,并且是说的很明白的(有些细节不详,需要认真思考后才明白!),也是使用mocrosoft的barcode控件,打印form,在这总结了我的经验,给大家参考,避免大家走弯路,在这里特别感谢绿竹小龙,也感谢各位的无私奉献,大家如果不明白可以联系。1、 注册mocrosoft的barcode控件,网上可以找到并下载;2、 使用新form来显示打印的内容,调整form的大小与打印纸的大小一样3、 添加picture控件,为什么要使用picture控件,是在打印后发现,没有picture控件打印的效果很差,字体看不清;

3、在picture控件上添加barcode的控件,在picture控件上添加barcode的控件,STYLE属性控制条形码的类形,当值为6时为CODE39码(仅包含最简单的数值和字符,零售流通领域常用),当值为7时为CODE128码(字符比较齐全,目前比较通用),结合客户的要求,编程中使用CODE128码4、 添加其他的需要打印的控件,设置好字体等,5、 激活from时将需要打印的内容赋值给对应控件,6、 等待1秒后(因为picture控件的关系,赋值后马上打印经常会出现空白内容)7、 打印form8、 关闭form具体的代码见下:使用条码机打印,条码纸规格是6cm*6cm打印的内容有住院号、住

4、院号+住院次数的条码、姓名、性别、出院日期、入院日期、出院科室所以form的内容是:picture控件、text控件、label控件的背景色设为与条码纸一样的颜色(白色),条码是用barcode控件,其他使用text控件。Form激活时的代码:Private Sub Form_Activate()Form激活时的代码Dim ZYH As String 定义住院号为文本类型Dim ZyhTemp As String 定义临时的住院号为文本类型For i = 0 To Me.LblBL.Count 根据标签控件的个数(与text控件的个数相对应,方便赋值)Me.TextBL(i).Text = F

5、rmBLFMPrint.TextBL(i).Text 从其他form将需要打印的控件值赋值过来,准备打印Next去掉住院号前面的0,要求不打印住院号前面的0ZYH = Trim(Me.TextBL(1).Text)ZyhTemp=zyhFor i2 = 1 To 10 住院号是10位的,所以从左边逐一检查住院号,将0全部去掉 If Left(ZYH, 1) = 0 Then 左边第一位是0,则去掉0 ZYH = Right(ZYH, Len(ZYH) - 1) Else当检查到左边第一位非0时,就退出循环,并保存最后的住院号 Me.TextBL(1).Text = ZYH Exit For E

6、nd IfNext住院次数标准为3位数字,不够位数前面补0Dim ZYCS As StringZYCS = Trim(Me.TextBL(0).Text)For i = 0 To 3 - Len(Trim(Me.TextBL(0).Text) - 1 ZYCS = 0 & ZYCSNextMe.BarCodeCtrl1.Value = zyhtemp & zycs 给条码控件赋值Sleep 1000 暂停1秒Me.PrintForm 打印窗体Unload Me 关闭窗体End Sub打印效果:在看了绿竹小龙的博客后,我也尝试的他说的方法,但是条码死活就是不能识别,他的截图能够识别条码,我按照他

7、的方法连截图后不能识别,非常郁闷。最后只能是不是打印窗体的方法来完成任务,缺点是不能在打印时调整打印参数了。在这里附上他的方法:他的一开始的方法是使用windows的API函数,先对条码控件抓图,在贴到picture控件后再打印,也是发现打印出的条码不能识别,最后也是使用打印form方法解决,大家有兴趣可以去看看他的博客http:/ 00:27:32)转载分类:VB前几天公司突然接到客户的要求,需要我们公司在所有的外包装盒上贴上规定的条码,该条码由零件号、供应商代码、生产批次代码共三个部分组成,我公司立即购买了条码打印机,但是销售商提供的Intermec条码打印机并没有随机软件,该公司也不具备

8、条码打印软件的开发能力,所以他们推荐我们使用一款通用的条码编辑打印软件的破解版本LABLEVIEW进行打印,通过使用过后发现使用这个软件对本公司的适用性不够、数据库连接处理能力较差,每一个数据都需要人工输入,出错的机率较大。为此,领导要求公司计算机室拿出一个好的办法来。我们经过一段时间的研究,发现通过VB编程调用微软OFFICE自带的条形码控件Microsoft Barcode Control 9.0进行条形码的编辑并打印,这样做一是可以按需定制需打印的条形码,另一个软件短小精干,实用性强,占用系统资源也低,实用效果不错。考虑到刚开始的时候在网上查找资料很多都不实用而有这种需求的人很多,所以特

9、把自己的设计经验拿出来与大家共享。希望能对有这方面需求的人有所帮助。1、程序设计思路首先要简要了解一下BARCODE9控件,这是微软自带的一个条形码控件,其中的STYLE属性控制条形码的类形,当值为6时为CODE39码(仅包含最简单的数值和字符,零售流通领域常用),当值为7时为CODE128码(字符比较齐全,目前比较通用),结合客户的要求,编程中使用CODE128码。编程思路为:针对客户的条码三段式要求,第一段为零件号,第二段为供应商编码(固定),第三段为基本由日期生成的生产批次号,窗体中设置可选择的组合框控件用于选择不同的零件号,文本框控件用于设置供应商编码,另一文本框用于读取系统日期并按要

10、求输出生产批次。再设置一条形码控件,由条码确定按钮使条码的VALUE赋值为前面的三段式条码各段的累加。由于条形码控件没有打印属性,还得设置一个图片控件用于条形码的转贴打印。再通过按钮控件打印。选择零件号、供应商编码、生产批次号条形码控件条码输出条码确定按钮条码控件VALUE属性赋值条码-剪贴板-图片控件-打印图片条码打印按钮2、程序设计步骤21窗体设计根据流程设定,能很快设计出程序主窗体:如下图22代码编写:对按钮控件编写代码条码确定及预览:Private Sub Command1_Click()BarCodeCtrl1.Value = combox1.Text + Text2.Text +

11、Text3.TextEnd Sub条码打印:(这段代码网络上一般都有,但是有的经试验不能用,这个能用,而且该代码的确能实现条码的打印,但是扫描枪读取还有问题,我是经过N久才摸索出原因并想办法加以解决的,在打印结果中将进行说明)Private Sub Command2_Click()Dim hScrDC As LonghScrDC = GetDC(Picture1.hwnd)Dim hMemDC As LonghMemDC = CreateCompatibleDC(hScrDC) Dim xScrn As IntegerDim yScrn As IntegerPicture1.ScaleMode

12、 = vbPixelsxScrn = Picture1.ScaleWidth + 200yScrn = Picture1.ScaleHeight + 200Dim hBitmap As LonghBitmap = CreateCompatibleBitmap(hScrDC, xScrn, yScrn)Dim hOldmap As LonghOldmap = SelectObject(hMemDC, hBitmap)BitBlt hMemDC, 0, 0, xScrn, yScrn, hScrDC, 0, 0, SRCCOPYhBitmap = SelectObject(hMemDC, hOld

13、map)OpenClipboard hwndEmptyClipboardSetClipboardData CF_BITMAP, hBitmapCloseClipboardDim picturex As PictureSet picturex = Clipboard.GetData()Printer.Print Printer.PaintPicture picturex, 0, 0Printer.EndDocEnd SubPrivate Sub Form_Load()End Sub由于条码打印中应用到部分函数,故在模块中需进行如下定义:Option ExplicitPrivate Const H

14、ORZRES = 8Horizontal width in pixelsPrivate Const VERTRES = 10 Vertical width in pixelsPrivate Const CF_BITMAP = 2Dim scrndc As LongPrivate Const SRCCOPY = &HCC0020 (DWORD) dest = sourcePrivate Declare Function GetDC Lib user32 (ByVal hwnd As Long) As LongPrivate Declare Function CreateCompatibleDC

15、Lib gdi32 (ByVal hdc As Long) As LongPrivate Declare Function GetDeviceCaps Lib gdi32 (ByVal hdc As Long, ByVal nIndex As Long) As LongPrivate Declare Function CreateCompatibleBitmap Lib gdi32 (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As LongPrivate Declare Function SelectObject Lib gdi32 (ByVal hdc As Long, ByV

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号