delphi7制作一个条形码。。。

zhaoxiaozhao1 2011-07-28 05:11:51
RT: 我有一个输入框输入字符后点击按钮生成图片jpg格式。
将输入的字符信息转换为条码并显示在图片位置;
录入字符长度不得长于20字符,且必须为数字、字母、半角符号;
点击保存文件可在应用程序根目录下生成以字符命名的jpg文件(注意某些字符不支持作为文件名);
生成的条码必须是Code-128的一维条码
另外附上ASP源码。欢迎各位高手进行讨论
--------------------------------------------------------------------------------------------------------------
<%
'网站
Dim barcode(106)
barcode(0)="||_||__||__" ' 空格
barcode(1)="||__||_||__" ' !
barcode(2)="||__||__||_"
barcode(3)="|__|__||___"
barcode(4)="|__|___||__"
barcode(5)="|___|__||__"
barcode(6)="|__||__|___"
barcode(7)="|__||___|__"
barcode(8)="|___||__|__"
barcode(9)="||__|__|___"
barcode(10)="||__|___|__" '*
barcode(11)="||___|__|__"
barcode(12)="|_||__|||__"
barcode(13)="|__||_|||__"
barcode(14)="|__||__|||_"
barcode(15)="|_|||__||__"
barcode(16)="|__|||_||__" '0
barcode(17)="|__|||__||_"
barcode(18)="||__|||__|_"
barcode(19)="||__|_|||__"
barcode(20)="||__|__|||_"
barcode(21)="||_|||__|__"
barcode(22)="||__|||_|__"
barcode(23)="|||_||_|||_"
barcode(24)="|||_|__||__"
barcode(25)="|||__|_||__" '9
barcode(26)="|||__|__||_"
barcode(27)="|||_||__|__"
barcode(28)="|||__||_|__"
barcode(29)="|||__||__|_"
barcode(30)="||_||_||___"
barcode(31)="||_||___||_"
barcode(32)="||___||_||_"
barcode(33)="|_|___||___" 'A
barcode(34)="|___|_||___"
barcode(35)="|___|___||_"
barcode(36)="|_||___|___"
barcode(37)="|___||_|___"
barcode(38)="|___||___|_"
barcode(39)="||_|___|___"
barcode(40)="||___|_|___"
barcode(41)="||___|___|_"
barcode(42)="|_||_|||___"
barcode(43)="|_||___|||_"
barcode(44)="|___||_|||_"
barcode(45)="|_|||_||___"
barcode(46)="|_|||___||_"
barcode(47)="|___|||_||_"
barcode(48)="|||_|||_||_"
barcode(49)="||_|___|||_"
barcode(50)="||___|_|||_"
barcode(51)="||_|||_|___"
barcode(52)="||_|||___|_"
barcode(53)="||_|||_|||_"
barcode(54)="|||_|_||___"
barcode(55)="|||_|___||_"
barcode(56)="|||___|_||_"
barcode(57)="|||_||_|___"
barcode(58)="|||_||___|_" 'Z
barcode(59)="|||___||_|_"
barcode(60)="|||_||||_|_"
barcode(61)="||__|____|_"
barcode(62)="||||___|_|_"
barcode(63)="|_|__||____"
barcode(64)="|_|____||__"
barcode(65)="|__|_||____" 'a
barcode(66)="|__|____||_"
barcode(67)="|____|_||__"
barcode(68)="|____|__||_"
barcode(69)="|_||__|____"
barcode(70)="|_||____|__"
barcode(71)="|__||_|____"
barcode(72)="|__||____|_"
barcode(73)="|____||_|__"
barcode(74)="|____||__|_"
barcode(75)="||____|__|_"
barcode(76)="||__|_|____"
barcode(77)="||||_|||_|_"
barcode(78)="||____|_|__"
barcode(79)="|___||||_|_"
barcode(80)="|_|__||||__"
barcode(81)="|__|_||||__"
barcode(82)="|__|__||||_"
barcode(83)="|_||||__|__"
barcode(84)="|__||||_|__"
barcode(85)="|__||||__|_"
barcode(86)="||||_|__|__"
barcode(87)="||||__|_|__"
barcode(88)="||||__|__|_"
barcode(89)="||_||_||||_"
barcode(90)="||_||||_||_" 'z
barcode(91)="||||_||_||_"
barcode(92)="|_|_||||___"
barcode(93)="|_|___||||_"
barcode(94)="|___|_||||_"
barcode(95)="|_||||_|___"
barcode(96)="|_||||___|_"
barcode(97)="||||_|_|___"
barcode(98)="||||_|___|_"
barcode(99)="|_|||_||||_"
barcode(100)="|_||||_|||_"
barcode(101)="|||_|_||||_"
barcode(102)="||||_|_|||_"
barcode(103)="||_|____|__"
barcode(104)="||_|__|____"
barcode(105)="||_|__|||__"
barcode(106)="||___|||_|_"

Dim numid(9)
numid(0)=16
numid(1)=17
numid(2)=18
numid(3)=19
numid(4)=20
numid(5)=21
numid(6)=22
numid(7)=23
numid(8)=24
numid(9)=25

'----------------------------------------------------------------------------
Function hascode(odrid)
dim u
str=odrid
if trim(str)="" then
str=""
exit function
end if
For i=1 to Len(odrid)
u=asc(mid(odrid,i,1))
if u>=48 and u<=57 then str=Replace(str,mid(odrid,i,1),barcode(u-32))
if u=32 then str=Replace(str,mid(odrid,i,1),barcode(u-32))
if u>=65 and u<=90 then str=Replace(str,mid(odrid,i,1),barcode(u-32))
Next
str="||_|____|__" & str & barcode(gethaxstr(odrid)) &"||___|||_|_||"
hascode=str
End Function
'----------------------------------------------------------------------------
Function gethaxstr(odrid)
'odrid=1234567890
s=odrid
Dim t
Dim u
For i=1 To Len(s)
u=Asc(Mid(s,i,1)) '0=48
if u>=48 and u<=57 then t=t+(i*(u-32)) 't=t+(i*numid(Mid(s,i,1)))
if u=0 then t=t+(i*(u-32))
if u>=65 and u<=90 then t=t+(i*(u-32))
Next
t=t+103
t=t Mod 103
gethaxstr=t '
End Function
'----------------------------------------------------------------------------
Function setcolor(odrstr,w)
response.write "<br>"
code_H=50
code_W=w
c = odrstr
c = replace(c,"_","<SPAN STYLE='BACKGROUND-COLOR:#FFFFFF;WIDTH:"&code_w&";HEIGHT:"&code_H&";'></SPAN>")
c = replace(c,"|","<SPAN STYLE='BACKGROUND-COLOR:#000000;WIDTH:"&code_w&";HEIGHT:"&code_H&";'></SPAN>")
setcolor = c
End Function
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Keywords" content="HANLEI.ORG">
<META NAME="Author" CONTENT="HANLEI.ORG">
<title>Asp生成条码</title>
<style>
<!--
input { font-size: 9pt; font-family: 宋体 }
-->
</style>
</head>

<body>
<div align="center">
<center>
<form method="POST" action="?">
<p><input type="text" name="T1" size="20" maxlength="20" value="<%=request("T1")%>"> <select size="1" name="D1">
<option value="1"<%if request("D1")=1 then response.write " selected"%>>宽度1</option>
<option value="2"<%if request("D1")=2 then response.write " selected"%>>宽度2</option>
<option value="3"<%if request("D1")=3 then response.write " selected"%>>宽度3</option>
</select> <input type="submit" value="生成条码" name="B1"></p>
</form>
<table border="0" cellpadding="0" cellspacing="0" height="79">
<tr>
<td height="61" align="center"><%=setcolor(hascode(request("T1")),request("D1"))%></td>
</tr>
</table>
</center>
</div>
</body>
</html>
...全文
761 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2011-07-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhaoxiaozhao1 的回复:]
这个是个ASP的例子,现在想转换成delphi所以很纠结,delphi不太会。不知道大家有什么好的方法,有的话可以QQ联系我,谢谢。QQ451347995
[/Quote]

搜 delphi barcode 就行了
比如这个: http://mydown.yesky.com/soft/27/27651.html
haitao 2011-07-29
  • 打赏
  • 举报
回复
Function hascode(odrid)应该加上
if u>=97 and u<=122 then str=Replace(str,mid(odrid,i,1),barcode(u-32))
才能支持小写字母
zhaoxiaozhao1 2011-07-29
  • 打赏
  • 举报
回复
这个是个ASP的例子,现在想转换成delphi所以很纠结,delphi不太会。不知道大家有什么好的方法,有的话可以QQ联系我,谢谢。QQ451347995
haitao 2011-07-28
  • 打赏
  • 举报
回复
没看到此asp生成jpg啊
好像是通过 SPAN STYLE='BACKGROUND-COLOR:#FFFFFF;WIDTH 拼凑出条码的显示效果
qianchuan2010 2011-07-28
  • 打赏
  • 举报
回复
MARK
没有分的请发邮件给我:jacdfb@163.com,qq:505689211 一直也没接触到什么复杂的报表,都是一些简单的报表,在DelphI下使用QuickReport一般也就能满足需要了,由于公司现在需求的变化,对条码扫描提出了新的要求,主要是扫码要包含更多地内容,以前的一维码显然不能完全满足,再说二维码也是一种趋势,故而需要解决二维码的问题,网上搜了一下,方式有多种多样,我花了3天时间找了很多,也尝试了很多。也经历了很多失败!总结一下在Delphi下实现二维码主要有三种方法: 1、使用PtImageRW.dll和PtQREncode.dll动态连接库,使用uQRCode生成二维码图像,如此就可以在报表中予以打印了,具体如何用uQRCode实现绘制二维码,本人水平太低,无法参透;结合QuikReport就可以实现打印二维码了,但此种有一个问题就是不支持中文,如source1(整合到FastReport中也无法实现对中文的支持); 2、还有一种就是生成控件,利用ZINT制作的控件,如source2;此种有个问题就是无法在报表中使用(也许是我不会用),只可在窗体上显示,当然理论上说能在窗体上使用就完全可以用于打印报表了,可问题时我不会,哎,还是技术水平太低。还有一种叫Han-sof 2D Barcodes的控件,我可以安装,但却无法使用,无法生成二维码到图片。可上网搜索一下下载这个控件安装一下,有搞定的与我共享一下。 3、用ZINT整合到FastReport中,也是下面我要叙述的形式:source3。完全可以满足我的需求。 例子实现了对采购入库数据的分组批量打印,加入了二维码的使用,当然实际工作当中制作入库单基本上用不到批量打印的,一般都是一单一打,但在我这里没办法,必须设计这样的功能,历史遗留问题吧,这里也牢骚一下吧! 如做一些延伸,很多的打印都和这个有很多的类似之处,我说的是并不太复杂的应用,至于什么更复杂得我想FS也能搞的定,这里做一个总结是希望对和我一样水平的人提供一些帮助吧,也许现在很多人根本不用Delphi了,权且当作自己的一个笔记吧! *********压缩文件内容如下********************************* 1、fastreport for 2010是我用的,可以正常使用也是例子里用到的4.9版本 2、fastreport5 for delphi7,已经好久不用7了,故也没测试,这是下载到的!测试成功的告诉我一下! 3、fastreport5 for xe8,我朋友测试通过的,也是他发给我的,但在我的xe8下就是不行,可以看到控件,但一运行,就报错,还没时间研究,我记得在装XE8的时候是自带了fastreport5的,但并没有二维码的选项,我是卸载了自带的,然后再安装的,然后出现了一系列的问题,实在没时间,因为大部分程序是在2010下的,还没时间向XE8切换,不知道是不在安装的时候不能安装自带的FS5,我朋友在第一次安装的时候就没有选择,然后手动安装的,效果很好! 有知道fastreport5如何在2010下用的,麻烦指教一下! 4、source1-3,前面有说过了,主要是一些例子,我所总结的三种方法,也不知道对不对! 5、zinBarcode文件里也是一个例子,也是用fastreport,可以比较完美的显示中文fastreport,但二维码不能显示中文,设置成中文即报错。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧