[Axapta]AX报表中打印条码

在AX中可以很方便的在报表中打印出条码,这得益于AX已经包含了支持条码的类Barcode,下面我们来看看如何在报表中打印出条码。

首先在报表中定义一个Barcode类:

Barcode                 prodIdBarcode;

定义一个display方法,返回条码类编码后的内容:

display BarcodeString ProdIdBarCode()
{
    return prodIdbarcode.barcodeStr();
}

将这个display方法拖到报表中,创建一个名为ProdIdBarCodeCtrl的stringControl控件,我们设其AutoDeclaration为true,这样在后面的代码中使用它。

在报表的初始化函数中初始化这个条码类:

void InitBarcode()
{
    ;
    prodIdBarCode=Barcode::construct(BarcodeType::Code128);//使用128编码

    ProdIdBarCodeCtrl.font("BC C128 Medium");//设置控件的字体
    ProdIdBarCodeCtrl.fontSize(30);//设置控件字体大小

    prodIdBarCode.clear();
    if (prodIdBarCode.validateBarcode(prodTable.ProdId))//验证一下我们的内容是否能够被编码
    {
        prodIdBarCode.string(true, prodTable.ProdId);//传入要编码的字符串
        ProdIdBarCodeCtrl.visible(true);
    }
}

运行一下报表就能看到条码了,是不是很简单?!

AX支持Code128、Code39、EAN8等多种编码,每种编码对应一组相应的字体,比如Code128就有BC C128 Medium、BC C128 HD Medium等字体,具体的信息可以在Basic->Setup->Barcode set up中看到。由它维护一个BarcodeSetup的表,表方法Barcode()可以得到一个Barcode类实例,所以用BarcodeSetup也是很方便的。

就Barcode内部实现来看,它用到了动态链接库Bcfont32.dll,这是AX client安装的一个dll。这个dll导出一些编码函数,比如BC_Code128(string)实现128编码,这些函数在不同的Barcode扩展类比如BarcodeCode128被调用,是对Bcfont32.dll的封装。

原文地址:https://www.cnblogs.com/duanshuiliu/p/2584761.html