在AX界面中增加签名图

Microsoft Business Solutions AX系统,特别注重数据的响应效率,默认情况下,极少有图片在界面里显示。本文记录,在AX的界面中增加签名图片的详细步骤和各步的执行代码。

一、在系统表SysUserInfo中增加一个栏位,用以保存签名图片,名称 = SignImg,类型 = Container,ExtendedDataType = Bitmap。

二、在用户管理界面 SysUserInfo 的 Tab\General中增加一个控件,用以显示签名图片,名称 = winSignImg,类型 = Window,AutoDeclaration = Yes。

三、在用户管理界面 SysUserInfo 的 ButtonGroup 下增加两个普通的按钮,分别是“上传签名图”名称 = ChangeImg,“移除签名图”名称=RemoveImg。

四、在 Forms\SysUserInfo\Methods 中,增加方法 ShowImg(),代码如下:

void ShowImg()
{
    Image   _signImg;
    ;
    try
    {
        if(SysUserInfo.SignImg)
        {
            winSignImg.visible(true);
            _signImg = new Image();
            _signImg.setData(SysUserInfo.SignImg);
            winSignImg.image(_signImg);
            winSignImg.width(_signImg.width());
            winSignImg.height(_signImg.height());
        }
        else
        {
            winSignImg.visible(false);
        }
    }
    catch(Exception::Warning)
    {
        error(StrFmt("@SYS19312", SysUserInfo.SignImg));
    }
}

五、在 Forms\SysUserInfo\DataSources\UserInfo\Active() 方法中,写下述代码:

int active()
{
    int ret;
    ;
    ret = super();
    element.ShowImg();
    return ret;
}

六、在 \Forms\SysUserInfo\Designs\ButtonGroup\Button:ChangeImg\Clicked() 方法中,写上传图片文件的代码,本例子限定只上传 .png 格式的图片文件。

void clicked()
{
    str _fileName;
    dll _dll;
    FileNameFilter  _filter = ['Image Files','*.png'];
    Bindata         _binData = new BinData();
    ;
    super();
    _fileName   = WinApi::getOpenFileName(element.hWnd(),_filter,'','选择图片文件','*.png','');
    if (_filename)
    {
        if(_binData.loadFile(_filename))
        {
            SysUserInfo.SignImg = _binData.getData();
            element.ShowImg();
        }
    }
}

七、在 \Forms\SysUserInfo\Designs\ButtonGroup\Button:RemoveImg\Clicked() 方法中,写清除签名图片的代码。

void clicked()
{
    super();

    SysUserInfo.SignImg = ConNull();
    UserInfo_ds.write();
    element.ShowImg();
}

发表评论