2011-06-22 10 views
0

私はX ++を新しくしました。 チェックボックスを販売ヘッダフォーム (SalesTable)のタブに配置したいと思います。行の設定ボタンが の行のフォームの下半分にある の行を押すと、 SalesTableフォームのオン/オフ状態をチェックして何かを行う必要があります。私は本当に ステータスを記録するためにデータベースを必要としません。X ++バインドされていないコントロール

現状は のフォームにチェックボックスを入れ、それをディスプレイに表示し、それをクリックすると を参照することはできません。

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

答えて

0

あなたは他のクラスの非結合コントロールを参照していませんが、正しいアプローチではありません。

バインドされていないコントロールが変更されたときに、別のクラスに通知します。この場合

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

SalesTableFormは方法parmSpecialAction(名前任意に選択された)を呼び出して、チェックボックスの変更が通知されています。あなたは、チェックボックスコントロールの修正方法でそれを行います。

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

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

関連する問題