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();
}
