0

X ++を初めて使用するので、販売ヘッダーフォーム(SalesTable)のタブにバインドされていないチェックボックスを配置したいと思います。セールスラインのフォームの下半分で[ラインの構成]ボタンが押された場合、他のクラスのコードで、SalesTableフォームの非バインドコントロールのオン/オフステータスをチェックして、何かを実行する必要があります。ステータスを記録するためにデータベースは本当に必要ありません。

現在のステータスは、フォームにチェックボックスを配置し、ディスプレイに表示してクリックすることはできますが、参照することはできません。

別のクラスからSalesTableフォームの非バインドコントロールを参照するにはどうすればよいですか?これは正しいアプローチですか?

4

1 に答える 1

0

別のクラスからバインドされていないコントロールを参照しないでください。これは正しいアプローチではありません。

バインドされていないコントロールが変更されたときに、他のクラスに通知します。これは、チェックボックス コントロールの変更されたメソッドで行います。

boolean modified()
{
    boolean ret = super();
    ;
    salesTableForm.parmSpecialAction(this.value());
    return ret;
}

この場合、メソッド(任意に選択された名前)SalesTableFormを呼び出すことによって、チェックボックスの変更が通知されます。parmSpecialAction

他のルート (質問で示した) は、クラスにコントロールの存在を通知し、クラスにcontrol.value()直接呼び出させることです。しかし、これは通常、フォームとクラスを密接に結びつけることになり、これは私たちが望むものではありません。コントロールは、それらが生まれたフォームに属し、渡されるべきではありません。

皮肉なことに、SalesTableForm.enableUpdateJournalButtonsメソッドはボタン コントロールをパラメーターとして受け入れるため、この規則に違反しています。正しい方法は、getter 関数で値を計算 (およびキャッシュ) しenableWathever、フォームに getter を呼び出して、独自のボタンを有効または無効にすることです。

于 2011-06-22T21:46:17.323 に答える