AX 条码打印集成在BarCode类及其之类barcode*.
由子类的defaultFont方法指定字体属性。
eg, BarcodeCode39 指定条码字体"BC C39 3 to 1 HD Wide";
以code39为例。
Code 39只接受如下43个有效输入字符:
26个大写字母(A - Z),
十个数字(0 - 9),
连接号(-),句号(.),空格,美圆符号($),斜扛(/),加号(+)以及百分号(%)。
其余的输入将被忽略。
* 作为code39的起始和终结符。
编码规则:每五条线表示一个字符;粗线表示1,细线表示0;线条间的间隙宽的表示1,窄的表示0;
五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码;
条形码的首尾各一个 * 标识开始和结束。
所以在编码方法encodestring中,传过来的字符串需要预处理成全大写 string = strupr(string);
BarCodeString encodeString(BarCodeString _stringIn) { BarCodeString resultStr; int len = strlen(_stringIn); int x; int idx; if (len < 1) return _stringIn; // add the start character resultStr = num2char(42); // * 开始 for (x = 1; x <= len; x++) { idx = char2num(_stringIn, x); if (this.isValidChar(idx)) { resultStr += (idx == 32) ? num2char(44) : substr(_stringIn, x, 1); } } // add the stop code resultStr += num2char(42); //* 结束 return resultStr; }
eg: 以生产单号:“8105137709” 通过Code39转码显示返回字符串“*8105137709*"
同事要将显示生产单的字符串控件字体改为 ”BC C39 3 to 1 HD Wide"字体。(这个字体也可以从Tablearcodesetup读取。)