使用Delphi调用BarTender打印条码,在网上搜索了一下,很多都是介绍导入ActiveX组件,其实完全没有必要。用OLE控件完全可以解决。但需要注意所使用的BarTender必须是正式的安装版(PS:破解版好像也可以),试用版和绿色版都不可以二次开发。
下面是测试通过的列子:(需要引用ComObj.Pas文件)
function DoPrint:Boolean;
var
barApp: Variant;
barFormat: Variant;
vPath: string;
begin
Result := False;
try
vPath := ExtractFilePath(Forms.Application.ExeName);
// 打印第一页
if not FileExists(vPath+'box.btw') then
begin
showMessage('打印标签不存在,请检查!');
Exit;
end;
barApp := CreateOleObject('BarTender.Application.7');
barApp.Visible := False;
barFormat := barApp.formats.open(vPath+'box.btw', true, '');
// 'TEXT'、'BARCODE'均为box.btw标签纸上的控件名称
barFormat.SetNamedSubStringValue('TEXT', ‘TEXTValue’);
barFormat.SetNamedSubStringValue('BARCODE', 'BARCODEValue');
barFormat.printout(False,False);
barFormat.close(1);
barApp.quit(1);
except
on E: Exception do
begin
ShowMessage(E.ClassName + E.Message);
Exit;
end;
end;
Result := True;
end;
对于Delphi调用Codesoft软件也是同样的道理,只是不同的软件内部封装的方法不一样。参见 http://blog.csdn.net/qq_19784269/article/details/50570239