ポップアップメニューでチェックボックス
概要
ポップアップメニューでチェックボックスのような動作を実現します。
利用方法
- 選択項目は配列で与えてください。
- 返り値は、同じ長さの配列です。
- 非選択の項目のインデックスにゼロが入ってます。選択項目は、meMenuCheckedの数値です。
- キャンセルしたときの返り値は、空配列です。
コード
// chkbox.js
// 2014/01/25/
CheckBox = function(){
this.initialize.apply( this, arguments );
}
CheckBox.prototype = {
menuitem : "アイテムの配列",
selected : "アイテム選択状況の配列、非選択が0",
initialize : function( arg1 ){
this.menuitem = arg1;
this.selected = [];
for ( var i = 0; i < this.menuitem.length; i++ ){
this.selected.push( 0 );
}
},
show : function(){
var off = 5;
var r = 0;
while( r >= 0 ){
r = showPopupMenu( this );
if ( r == 0 - off ){
// Alert( "キャンセルされました。" );
return [];
} else if ( r == 1 - off ){
return this.selected;
} else {
this.selected[ r ] = ( this.selected[ r ] == 0 ) ? meMenuChecked : 0;
};
}
function showPopupMenu( obj ){
var menu = CreatePopupMenu();
for ( var i = 0; i < obj.menuitem.length; i++ ){
menu.Add( obj.menuitem[ i ] , i + off, obj.selected[ i ] );
}
menu.Add( "---", 0, meMenuSeparator );
menu.Add( "キャンセル", 0, 0 );
menu.Add( "選択終了", 1, 0 );
return menu.track( 0 ) - off;
}
}
}
var chkbox1 = new CheckBox( [ "a", "b", "c", "d" ] );
Alert( chkbox1.show() );
その他
おかしい箇所やもっといい方法があったら教えてください。
スポンサーリンク