产品生成器模块的问题图片处理

产品生成器模块可以为配置后的产品根据用户选择的值展示不同的图片(当然这些图片必须事先做好放在某个特定的文件夹下),在
产品生成器->产品模型->设置->图形参数设置后,按照教程的说法,出来的产品配置窗体就可以多一个图片的Tab页,用来显示图片,刚打开时显示的是默认的图片,随着用户的输入值,这个图片会按照设定好的规则去显示对应的图片。
这个功能在英文环境下没有任何问题,但是在中文环境下,点击产品生成器->产品模型->功能->测试模型就给给你如下的惊喜:


问题出在添加控件时给控件取名用的是标签,而在使用控件的时候却直接用了英文去引用该控件。
添加控件的代码
类PBABuildForm
FormBuildWindowControl addGraphicControl()
{
    ;
    
this.addTabPage("@SYS40661");
    
return formtabPageControl.addControl(FormControlType::Image,"@SYS40661");
}
可以看出第二个语句是用了标签作为控件的名称,中文环境下 为 图形,英文环境下为Graphic
使用控件的代码
类PBAFrontEndControlWin
void run()
{
    ;
    element.
lock();

    
ifthis.showGraphic() )
    
{
        graphicControl 
= element.design().controlName('Graphic');
        
this.setGraphic();
    }


    element.resetSize();
    element.redraw();
    element.unLock();
    
this.initFormProperties();
    
this.changeVal(element.args().caller().getChangeVal());
    consEval.setSalesPrice();
    valueSet 
= true;
}

可以看到使用图形控件的时候直接用了Graphic去引用,这在英文环境下是没有任何问题的,但是换了其他的语言就当了。。。
解决方案,修改两个方法中的一个,让其能够匹配,由于控件名称一般采用英文,所以改第一个方法可能会好些。将第一个方法修改如下:
FormBuildWindowControl addGraphicControl()
{
    ;
    
this.addTabPage("@SYS40661");
    
return formtabPageControl.addControl(FormControlType::Image,'Graphic');
}
这样就OK了。
另外由于AX用DataMethod获取图片会将图片锁定,如果采用数据库的保存方式,文档将不会被关联到系统中,这时会提醒说文件被锁定,不能写入数据库,可以采用文档存储方式或者修改原有代码让其支持数据库存储方式。
原文地址:https://www.cnblogs.com/Farseer1215/p/797460.html