選択系オブジェクト

Q2
PulldownListの選択で処理を行いたい
A2

[解決方法]
PulldownListやOptionButtonなどの親子関係のあるオブジェクトにおいて、選択位置を参照する場合、親オブジェクトのValueプロパティで参照が可能です。PulldownListオブジェクト(親オブジェクト)のValueプロパティに選択した項目の配列番号が格納されます。

ただし、このValueプロパティはPulldownListオブジェクト(親オブジェクト)の値のため、PulldownItemオブジェクト(子オブジェクト)のイベントハンドラからの参照は行わないようにしてください。

PulldownItemオブジェクト(子オブジェクト)で発生したイベントにて選択された項目を参照する場合は、イベントハンドラの引数として渡されるEventオブジェクトのFromプロパティを参照してください。
また、PulldownItemのイベントハンドラ内で選択状態を参照する場合は、イベントハンドラの引数として渡されるEventオブジェクトのFromプロパティを基に参照してください。

EventオブジェクトのFromプロパティにはイベントが発生したオブジェクトのリファレンスが格納されていますので、選択された項目の項目番号(添え字)はFrom.index、選択された項目の選択状態はFrom.Selectedで参照してください。

親子関係のあるオブジェクトにおいて、子オブジェクトのイベントハンドラで親オブジェクトのValue値を参照する場合は同様の注意が必要です。


[サンプルコード]
・PulldownListオブジェクトのChangeイベントの例

ChangeイベントはPulldownListオブジェクトのValueプロパティが変更されたことに
より発生するイベントですのでPulldownListオブジェクトのValueプロパティの
参照が可能です。
PulldownListオブジェクトのUseChangeプロパティを$TRUEに設定しておきます。

Form Form1 {
    X = 0;
    Y = 0;
    Width = 400;
    Height = 300;
    PulldownList PulldownList1 {
        X = 5;
        Y = 5;
        Width = 155;
        Height = 110;
        UseChange = $TRUE;
        PulldownItem PulldownItem1[0];

        Function OnChange( e ) {
            var i = e.From.value;
            /* var i = value; も可 */
            switch(i){
                case 0:
                    ^.Label1.BgColor = $RED;
                    break;
                case 1:
                    ^.Label1.BgColor = $BLUE;
                    break;
                case 2:
                    ^.Label1.BgColor = $YELLOW;
                    break;
            }
        }

        PulldownItem1 << CSV ( .title, .value ){
            項目1,1
            項目2,2
            項目3,3
        };
    }
    Label Label1 {
        X = 165;
        Y = 5;
        Width = 50;
        Height = 20;
    }
    if ( !$DESIGNTIME ) {
    }
}

・PulldownItemオブジェクトのTouchイベントの例

Form Form1 {
    X = 0;
    Y = 0;
    Width = 400;
    Height = 300;
    PulldownList PulldownList1 {
        X = 5;
        Y = 5;
        Width = 155;
        Height = 110;
        UseChange = $FALSE;
        PulldownItem PulldownItem1[0] {

            Function OnTouch( e ) {
                var i = e.From.index;
                switch(i){
                    case 0:
                        ^.^.Label1.BgColor = $RED;
                        break;
                    case 1:
                        ^.^.Label1.BgColor = $BLUE;
                        break;
                    case 2:
                        ^.^.Label1.BgColor = $YELLOW;
                        break;
                }
                /* 誤ったコーディング
                var idx;
                for( idx = 0; idx < ^.PulldownItem1.length; idx++ ){
                    if( ^.PulldownItem1[idx].Selected == $TRUE ){
                        switch( idx ){
                            case 0:
                                ^.^.Label1.BgColor = $RED;
                                break;
                            case 1:
                                ^.^.Label1.BgColor = $BLUE;
                                break;
                            case 2:
                                ^.^.Label1.BgColor = $YELLOW;
                                break;
                        }
                    }
                }
                */
            }
        }

        PulldownItem1 << CSV ( .title, .value ){
            項目1,1
            項目2,2
            項目3,3
        };
    }
    Label Label1 {
        X = 165;
        Y = 5;
        Width = 50;
        Height = 20;
    }
    if ( !$DESIGNTIME ) {
    }
}

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