我在类中创建了一个对话框,对话框方法如下
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(),如何从对话框中调用它(上面的代码) ?
答案 0 :(得分:4)
我正在回答你的上一个问题:“在AdressState中有一个方法lookupStateId(),如何从对话中调用它(上面的代码)?” - 用大写字母书写的方式无助于人们更好地理解你的观点。
目前尚不清楚为什么dialog
是一种静态方法,无论如何你需要以下内容。
假设您的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;
}
要按照您希望的方式实现查找,您需要做两件事。首先,打开对话框,右键单击New State,单击Setup,然后检查控件的System Name。例如,如果它是 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);
}
这应该可以解决问题。我有一段时间没有这样做,但我不认为我忘记了什么。
答案 1 :(得分:0)
在对话框中查找客户的示例:
例如,要在对话框中有一个客户选择下拉列表,
报告类声明方法--->
DialogField CustomerDlg; CustAccount客户;
dialog.addGroup( “客户”); CustomerDlg = dialog.addField(typeid(CustAccount)); CustomerDlg.value(客户);
... customer = CustomerDlg.value();