Delphi 调用BarTender打印条码

方法一:

使用Delphi调用BarTender打印条码,在网上搜索了一下,很多都是介绍导入ActiveX组件,其实完全没有必要。用OLE控件完全可以解决。但需要注意所使用的BarTender必须是正式的安装版(PS:破解版好像也可以),试用版和绿色版都不可以二次开发。

下面是测试通过的列子:(需要引用ComObj.Pas文件)


直接写代码:

procedure TForm1.DoPrintStr(_BarCode, _Text: string);

var
  barApp: 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上的设置:(新版本要设置"具名数据源" 来交换数据)

猜你喜欢

转载自blog.csdn.net/Trassion/article/details/78058913