Class

Q7

イベント処理中にクラスを判別したい
[内容]
イベントが発生したオブジェクトのクラスを判別して処理を分けるにはどうすればいいか

A7
イベントが発生したオブジェクトのクラスは、instanceOfを利用することで判別することが
できます。instanceOfは、イベント発生元のオブジェクトが、どのクラスのインスタンスで
あるかを確認するためのオペレータです。
オブジェクトはBiz/Browserに内蔵されているクラスだけでなく、新しく定義した派生クラスの
場合でも判別することができます。

[サンプルコード]
 ・Package1.crs ※記述ポイント抜粋
Package Package1 {
    /* ボタン */
    class BaseButton extends ImageButton{
        Width = 135;
        Height = 36;
        FontFace = $BOLD;
    }
    
    /* 通常計算用ボタン */
    class calcButton extends BaseButton{
        /* フォント色を青色、背景色を白色に設定 */
        FgColor = $BLUE;
        BgColor = $WHITE;
    }
    
    /* クリアボタン */
    class clearButton extends BaseButton{
        /* ボタンの幅を設定 */
        Width = 100;
    }
    
    /* 割引計算用ボタン
        ※通常計算ボタンの機能を継承している */
    class discountCalcButton extends calcButton{
        /* フォント色を赤色に設定 */
        FgColor = $RED;
    }
}

  上記Package1では、ImageButtonクラスをもとに作成した派生クラス
  (BaseButton)が定義されています。
  さらに、このBaseButtonクラスを継承したクラスが3つ定義されています。
 
 ・Cls_008.crs ※記述ポイント抜粋
Form Cls_008 {
    ・・・(略)・・・
    calcButton Button1 {        ・・・@
        X = 14;
        Y = 365;
        Title = "通常計算";
    }
    discountCalcButton Button2 {  ・・・@
        X = 154;
        Y = 365;
        Title = "割引計算";
    }
    clearButton Button3 {       ・・・@
        X = 356;
        Y = 365;
        Title = "クリア";
    }
    quantityTextBox:Number TextBox1 {
        X = 94;
        Y = 200;
    }
    priceTextBox:Number  TextBox2 {
        X = 297;
        Y = 200;
    }
    ・・・(略)・・・
    Function OnTouch( e ){
         /* イベント発生元オブジェクトの
      リファレンス取得 */
         var obj = e.From; 

         if(obj instanceOf ImageButton){ ・・・A
              switch(obj.Name){
                 /* 通常計算ボタンの場合 */
                 case "Button1":
                    ・・・(略)・・・
                 /* 割引計算ボタンの場合 */
                 case "Button2":
                    ・・・(略)・・・
                 /* クリアボタンの場合 */
                 case "Button3":
                    ・・・(略)・・・
              }
         }
    }
    ・・・(略)・・・
}

  上記サンプルでは、Form上のオブジェクトで発生したTouchイベントを
  全て捕捉するよう記述しています。Touchイベント捕捉後、Aの部分で
  instanceOfを利用し、イベントの発生元がImageButtonを継承した
  @のオブジェクトかを判別しています。該当する場合は、処理を実行します。
 
実際の挙動については、CRSファイル形式のサンプル
 「イベント処理中にクラスを判別したい(Cls_008.zip)」
をご確認ください。

管理番号:Cls_008
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ