一,继承自AX 的runbase 框架类的dialog窗体上面所有控件都是动态产生的,那如果通过Field的事件去控制窗体其他控件的属性就需要做一些特殊处理
1.1 激活录入控件的时间处理
public object dialog() { Dialog _dialog ; ; _dialog.allowUpdateOnSelectCtrl( true); _fieldA = _dialog.AddField(ExtendedTypeStr("CustVendAC")); _fieldB = _dialog.AddField(ExtendedTypeStr("CustName")); _fieldB.Enabled(false); }
1.2 重写 DialogSelectCtrl()事件,此事件在修改_fieldA值且光标离开后触发
public void DialogSelectCtrl() { CustTable ct; ; ct = CustTable::find( _fieldA.value()); _fieldB.Value = ct.name; }
二, runbase 类 Dialog 的动态增加的Field的控件名虽然无法指定,但是其实是有安装固定的取名规则来做的。
控件类型_编号;
因此在dialog控件设计好后再立刻info出控件名,一样可以重载控件的方法。
eg: _fieldA = _dialog.AddField(ExtendedTypeStr("CustVendAC"));
立刻info: info( _fieldA.name()); 取得控件名
public void fld_100_modified()
{
//.....处理代码
}
public void dialogPostRunbase( DialogRunbase dialog) {
// 通知窗体控件事件被重载 dialog.formrun().controlMethodOverload( true); dialog.formrun().controlMethodOverloadObject( this); super(dialog); }