方法一:
使用Delphi调用BarTender打印条码,在网上搜索了一下,很多都是介绍导入ActiveX组件,其实完全没有必要。用OLE控件完全可以解决。但需要注意所使用的BarTender必须是正式的安装版(PS:**版好像也可以),试用版和绿色版都不可以二次开发。
下面是测试通过的列子:(需要引用ComObj.Pas文件)
直接写代码:
procedure TForm1.DoPrintStr(_BarCode, _Text: string);
varbarApp: Variant;
barFormat: Variant;
vPath: string;
begin
try
vPath := ExtractFilePath(Forms.Application.ExeName);
// 打印第一页
if not FileExists(vPath+'Test1.btw') then
begin
showMessage('打印标签不存在,请检查!');
Exit;
end;
barApp := CreateOleObject('BarTender.Application.10');
barApp.Visible := False;
barFormat := barApp.formats.open(vPath+'Test1.btw', true, '');
// 'TEXT'、'BARCODE'均为box.btw标签纸上的控件名称
barFormat.SetNamedSubStringValue('Text1', _Text);
barFormat.SetNamedSubStringValue('BarCode1',_BarCode);
barFormat.printout(False,False);
barFormat.close(1);
barApp.quit(1);
except
on E: Exception do
begin
ShowMessage(E.ClassName + E.Message);
Exit;
end;
end;
end;
方法二:(安装控件方式)
1. 要实现的条形码功能
最近一个项目需要在扫描条码后按固定的格式打印。条形码打印控件客户习惯使用的是BarTender,使用Delphi调用BarTender来完成打印条码标签功能。此功能的重点在于:
a) 使用BarTender格式打印
b) 格式中有需要变动的部分
2. 条形码标签设计
a) 新建一个空白标签
b) 在画面上加入一个条形码控件,一个文本控件
c) 选中条形码控件,双击(或右键,属性),打开属性窗口;点击“高级”,选择“共享/名称”页,在共享名称中输入条形码控件的名字“BarCode1”;点击确定完成修改。这个步骤来定义在Delphi中(或其它语言VB等)访问的对象名。
d) 同样的步骤,给文本控件设置名称为“Text1”
e) 保存为“c:/test.btw”
3. 导入ActiveX组件
a) 打开Delphi(版本5.0及以上,其它没有测试)
b) 选择菜单“项目”à“导入类型库”(ProjectàImport Type Library)
c) 在弹出的窗口中,列出可导入的类型库;找到“BarTender 7.75”,选中
d) 将要导入的类名称会列在class names中,由于这里的类名称会与系统已存在类名称有重复,将这个全部复制出来,将类型名称前面都加上Bt。如:TFormat修改为TBtFormat.
e) 类名称修改完成后,点击”安装”(Install)
f) 系统会安装组件到ActiveX控件页上
4. 调用BarTender打印
a) 新建应用程序
b) 在窗体上拖一个TBtApplication控件(ActiveX页上),命名为btApp1
c) 在窗体上放一个TButton控件,命名为btn1,双击btn1产生事件
d) 填写事件代码如下:
procedure TForm1.btn1Click(Sender: TObject);
begin
with btApp1.Formats.Open('c:/test.btw', True, '') do //打开标签文件
begin
SetNamedSubStringValue('BarCode1', '1234567890'); //设置值
SetNamedSubStringValue('Text1', 'Hello BarTender!');
PrintOut(False, False); //打印
Close(btDoNotSaveChanges); //关闭不保存
end;
btApp1.Quit(btDoNotSaveChanges); //退出
end;
附加说明:
Bartender上的设置:(新版本要设置"具名数据源" 来交换数据)