0

クラスにダイアログを作成しました。ダイアログメソッドは次のとおりです。

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();

}

}

私のダイアログには2つのフィールドが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()メソッドがあります。ダイアログから呼び出す方法(上記のコード)?

4

2 に答える 2

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;
}

ルックアップを希望どおりに実装するには、2つのことを行う必要があります。まず、ダイアログを開き、[新しい状態]を右クリックし、[セットアップ]をクリックして、コントロールのシステム名を確認します。たとえば、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);
}

それでうまくいくはずです。私はしばらくそれをしていませんが、私は何かを忘れたとは思いません。

于 2011-04-14T09:50:23.077 に答える
0

ダイアログで顧客を検索する例:

たとえば、ダイアログに顧客の選択ドロップダウンを表示するには、

  • レポートクラス宣言メソッド内--->

    DialogField CustomerDlg; CustAccountの顧客;

    • レポートダイアログの方法:----->

    dialog.addGroup( "Customer"); CustomerDlg = dialog.addField(typeid(CustAccount)); CustomerDlg.value(customer);

    • getFromDialogメソッドの場合:---->

    ... customer = CustomerDlg.value();

于 2011-04-14T12:44:55.740 に答える