Datawindow中如何快捷方便地使用二维码、条码

Datawindow中如何快捷方便地使用二维码、条码

二维码、条码在生活中使用相当普遍,PB开发中不可避免地也大量使用该项技术。可惜,原生PB没有自带这些功能。

在PB里显示并打印二维码、条码,我们通常的做法是:1.生成二维码、条码图片文件,2.把图片放入datawindow。这种方法不是很方便,需要做额外处理,尤其是daawindow直接从数据库取数据时,数据查询检索完成后,需要循环生成一遍图片文件,然后设置图片文件名称,还要记得在窗口关闭时去删除这些图片。

另外还有free-datawindow 里的方法,可以直接显示二维码、条码,但因为使用了HOOK技术,会被360报病毒,或者偶尔在打印时会打印不出来。

这次,介绍一下PbIdea里一种新的显示和打印二维码、条码的方法。这个方法比较简单,方便使用。

步骤一:设置datawindow,存为d_code

步骤二:将d_code拖放到窗口上,并进行初始化

int i

dw_1.reset()

for i = 1 to 10

      dw_1.InsertRow(0)

      dw_1.setItem(i,"text",string(i) + "1234567890")

next

这里是插入10条记录,当然你也可以从数据库查询并检索数据。

步骤三:写数据字段也码字段绑定代码。使用uo_json作为参数传递对象。

uo_json json

json = create uo_json

json.set("type",20) //或"code128",显示条码

//以下参数,参考uo_image对象的 instance variables 声明的条码相关定义

json.set("vers",5)

json.set("secure",3)

json.set("show_hrt",1)

json.set("scale",1.0)

uo_image img

img = create uo_image

img.SetDatawindowCoder(dw_1,"barcode","text",json) //计算字段名称barcode,数据字段名称text

json.set("type",58) //或"qrcode",显示二维码

json.set("logo","..\demores\images\logo.png")

img.SetDatawindowCoder(dw_1,"qrcode","text",json) //计算字段名称barcode,数据字段名称text

destroy img

destroy json

经过以上三个步骤设计与绑定,功能就完成了。Datawindow具备了显示和打印二维码、条码的功能。

简单介绍一下实现原理:

SetDatawindowCoder函数的功能,是为计算字段设置表达式,借助于 bitmap(…)表达式函数,从图片文件中生成显示图片。

Pbidea实现了根据相应字段内容,表达式字段的宽度和高度生成图片,提交给bitmap函数显示,生成的图片文件在datawindow销毁时会自动删除。

绑定后的datawindow关键部分语法如下:

release 9;

……

text(name=text_t visible="1" band=header font.charset="134" font.face="宋体" font.family="0" font.height="-10" font.pitch="2" font.weight="400" background.mode="1" background.color="536870912" color="14474460" alignment="2" border="0" x="9" y="8" height="60" width="521" text="Text" )

column(name=text …… )

compute(name=qrcode visible="1" …… expression="bitmap(CodeMaker(getrow(),~"{~~~"type~~~":58,~~~"vers~~~":5,~~~"secure~~~":3,~~~"show_hrt~~~":1,~~~"scale~~~":1.0,~~~"dw~~~":{~~~"obinstid~~~":94622604,~~~"hwnd~~~":11011140,~~~"expr~~~":~~~"qrcode~~~",~~~"value~~~":~~~"text~~~"},~~~"logo~~~":~~~"..~\~\demores~\~\images~\~\logo.png~~~"}~"))" alignment="0" border="0" crosstab.repeat=no )

compute(name=barcode visible="1" …… expression="bitmap(CodeMaker(getrow(),~"{~~~"type~~~":20,~~~"vers~~~":5,~~~"secure~~~":3,~~~"show_hrt~~~":1,~~~"scale~~~":1.0,~~~"dw~~~":{~~~"obinstid~~~":94622604,~~~"hwnd~~~":11011140,~~~"expr~~~":~~~"barcode~~~",~~~"value~~~":~~~"text~~~"}}~"))" alignment="0" border="0" crosstab.repeat=no )

最后,我们看一下显示效果与打印效果:

 

                                                                   大自在 于2022/1/17

                                                      QQ:781770213 QQ群:624409252

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值