Я отвечаю на ваш последний вопрос: "В 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» и проверьте имя системы элемента управления.Например, если это 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);
}
Это должно делать свое дело.Я давно этого не делал, но не думаю, что что-то забыл.