Axapta Ax X++;覆盖对话框窗体字段筛选器帐户

Axapta Ax X++;覆盖对话框窗体字段筛选器帐户,axapta,x++,Axapta,X++,我的对话框也有类似的问题,但是我在没有控件调用方法的情况下遇到了一个错误 我试图覆盖CustAccount类型的lookup on dialog字段-我想要的是查找返回invoiceAccount具有特定值的所有custTable记录 这是我的密码: class AG_UpdateQuoteCust extends Runbase { DialogField dlgCust; CustAccount newCust; CustAcc

我的对话框也有类似的问题,但是我在没有控件调用方法的情况下遇到了一个错误

我试图覆盖CustAccount类型的lookup on dialog字段-我想要的是查找返回invoiceAccount具有特定值的所有custTable记录

这是我的密码:

class AG_UpdateQuoteCust extends Runbase
{
DialogField                 dlgCust;
CustAccount                 newCust;
CustAccount                 custAccount;

#define.CurrentVersion(1)
#define.Version1(1)
#localmacro.CurrentList
    custAccount
#endmacro
}


public Object dialog()
{

DialogRunbase      dlg;
;

dlg = super(dlg);

dlg.caption("Change quotation customer account");


dlg.addText('Please select an alternative customer account');

dlgCust     = dlg.addField(typeid(CustAccount),'Customer account');

dlgCust.fieldControl().mandatory(true);

if(!dlgCust)
{
    error('Please fill out all mandatory fields');
}

return dlg;
}

void Fld2_1_lookup()
{
    Dialog                  dlg = this.dialog();
    SysTableLookup          sysTableLookup;
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange         queryBuildRange;
    Query                   query;
    Str                     TmpStr;
    Formrun                 fr = this.dialogModify().parmDialog();
    Object                  Control = fr.controlCallingMethod();


    FormStringControl              _control = control;
    ;

    sysTableLookup = SysTableLookup::newParameters(tablenum(CustTable),_control);

    sysTableLookup.addLookupfield(fieldnum(CustTable, AccountNum),true);
    sysTableLookup.addLookupfield(fieldnum(CustTable, Name));
    sysTableLookup.addLookupfield(fieldnum(CustTable, NameAlias));

    query = new Query();

    queryBuildDataSource = query.addDataSource(tablenum(CustTable));

    tmpStr = 'ADAM001H';

    queryBuildRange = queryBuildDataSource.addRange(fieldnum(CustTable, InvoiceAccount));
    queryBuildRange.value(TmpStr);


    sysTableLookup.parmQuery(query);

    sysTableLookup.performFormLookup();
}

public void dialogPostRun(DialogRunbase dialog)
{

;

Super(dialog);
dialog.formRun().controlMethodOverload(true);
dialog.formRun().controlMethodOverloadObject(this);
}

你能告诉我哪里出了问题吗?事实上,我并不真正理解dialogPostRun方法的重写或ControlCallingMethod的使用。

尝试移动
DialogRunbase dlg
从方法
对话框
类声明
,删除
对话框dlg=this.dialog()并使用
对象控件=dlg.formRun().controlCallingMethod()在方法
fld2\u 1\u查找中
。它应该会起作用