过滤器在对话框中查找

| 我已经在一个类中创建了一个对话框,对话框的方法如下
static void dialog(Args _args)
{
Dialog              dialog;
DialogField         dialogFieldCurrentState;
DialogField         dialogFieldNewState;
CustInvoiceTable    custInvoiceTable;


;

custInvoiceTable = _args.record();



dialog                  = new Dialog(\"Change State\");
dialogFieldCurrentState = dialog.addField(TypeID(State_LT),\"Current State: \");
dialogFieldCurrentState.value(custInvoiceTable.State);
dialogFieldCurrentState.enabled(false);
dialogFieldNewState     = dialog.addField(TypeID(State_LT),\"New State: \");

if (dialog.run())
{
    custInvoiceTable.State =  dialogFieldNewState.value();

}

}
在我的对话框中有两个字段
Current State
New State
。现在当我选择
New State
时所有列表 显示状态(与国家无关),我不需要。仅显示国家/地区的州 在查找中 。我需要使用类似的过滤器
while select while select AddressState
            where addressState.CountryRegionId == custInvoiceTable.CountryRegionId;
显示与一个国家有关的信息。 这里的State_LT是字符串EDT(在其中放置了State_LT的关系)State_LT == AddressState.StateId 在AdressState中有一个方法lookupStateId(),如何从对话框中调用它(上面的代码) ?     
已邀请:
我正在回答您的最后一个问题:\“在AdressState中,有一个方法lookupStateId(),如何从对话框中调用它(上面的代码)?\”-用大写字母书写的方式无法帮助人们理解您的点更好。 不清楚您的ѭ5为何是静态方法,无论如何您都需要以下内容。 假设您的ClassDeclaration看起来像这样:
class TestClass1 extends RunBase
{
    Dialog      dialog;
    DialogField dialogFieldCurrentState;
    DialogField dialogFieldNewState;
    // etcetera
}
您的
dialog
是这样的:
public Object dialog()
{
    ;

    dialog = super();

    dialogFieldCurrentState = dialog.addField(TypeID(AddressStateId),\"Current State: \");
    dialogFieldCurrentState.enabled(false);
    dialogFieldNewState     = dialog.addField(TypeID(AddressStateId),\"New State: \");
    dialogFieldNewState.lookupButton(FormLookupButton::Always);     // If needed

    return dialog;
}
要以所需方式实现查找,您需要做两件事。首先,打开对话框,右键单击“新建状态”,单击“设置”,然后检查控件的系统名称。例如,如果它是Fld2_1,则需要创建以下方法:
void fld2_1_lookup()
{
    Object control = dialog.formRun().controlCallingMethod();
    ;

    AddressState::lookupStateId(control, dialogFieldNewState.value());
}
其次,有必要重写以下方法:
public void dialogPostRun(DialogRunbase _dialog)
{
    super(_dialog);

    _dialog.dialogForm().formRun().controlMethodOverload(true);
    _dialog.dialogForm().formRun().controlMethodOverloadObject(this);
}
这应该够了吧。我已经有一段时间没有这样做了,但我不认为我忘记了什么。     
在对话框中查找客户的示例: 例如,要在对话框中显示客户选择下拉菜单, 在报表类中声明方法---> DialogField CustomerDlg;   CustAccount客户; 在报告对话框中的方法:-----> dialog.addGroup(\“ Customer \”); CustomerDlg = dialog.addField(typeid(CustAccount)); CustomerDlg.value(客户); 在getFromDialog方法中:----> ... 客户= CustomerDlg.value();     

要回复问题请先登录注册