「ポップアップメニューでチェックボックス」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 9行目: | 9行目: | ||
= 履歴 = | = 履歴 = | ||
* 20140125 初版 | * 20140125 初版 | ||
* | * 20140126 関数に変更。また、初期値を与えられるようにした。 | ||
= コード = | = コード = | ||
<source lang="javascript"> | <source lang="javascript"> | ||
// chkbox.js | // chkbox.js | ||
// 2014/01/ | // 2014/01/26/ | ||
CheckBox | var r = CheckBox( { "a":true, "b":false, "c":false, "d":false } ); | ||
for ( var i in r ){ | |||
} | Alert( i + " -> " + r[ i ] ); | ||
}; | |||
function CheckBox( arg1 ){ | |||
var menuitem = arg1; | |||
var index = []; | |||
var off = 5; | |||
var r = 0; | |||
while( r >= 0 ){ | |||
r = showPopupMenu(); | |||
if ( r == 0 - off ){ | |||
return {}; | |||
} else if ( r == 1 - off ){ | |||
return menuitem; | |||
} else { | |||
menuitem[ index[r] ] = !menuitem[ index[r] ]; | |||
}; | |||
} | |||
function showPopupMenu(){ | |||
var menu = CreatePopupMenu(); | |||
var i = 0; | |||
for ( var key in menuitem ){ | |||
menu.Add( key , i + off, ( menuitem[ key ] )? meMenuChecked : 0 ); | |||
index.push( key ); | |||
i++; | |||
} | } | ||
menu.Add( "---", 0, meMenuSeparator ); | |||
menu.Add( "キャンセル", 0, 0 ); | |||
menu.Add( "選択終了", 1, 0 ); | |||
return menu.track( 0 ) - off; | |||
} | } | ||
} | } | ||
</source> | </source> | ||
= その他 = | = その他 = | ||
おかしい箇所やもっといい方法があったら教えてください。<br /> | おかしい箇所やもっといい方法があったら教えてください。<br /> | ||
2014年1月26日 (日) 10:08時点における版
概要
ポップアップメニューを使ったチェックボックス(のようなもの)です。
機能
- 選択項目は、{ "項目名" : boolean }という形の連想配列で与えてください。
trueで与えると最初からチェックされます。 - 返り値も、連想配列です。
- キャンセルしたときの返り値は、空の連想配列です。
履歴
- 20140125 初版
- 20140126 関数に変更。また、初期値を与えられるようにした。
コード
// chkbox.js
// 2014/01/26/
var r = CheckBox( { "a":true, "b":false, "c":false, "d":false } );
for ( var i in r ){
Alert( i + " -> " + r[ i ] );
};
function CheckBox( arg1 ){
var menuitem = arg1;
var index = [];
var off = 5;
var r = 0;
while( r >= 0 ){
r = showPopupMenu();
if ( r == 0 - off ){
return {};
} else if ( r == 1 - off ){
return menuitem;
} else {
menuitem[ index[r] ] = !menuitem[ index[r] ];
};
}
function showPopupMenu(){
var menu = CreatePopupMenu();
var i = 0;
for ( var key in menuitem ){
menu.Add( key , i + off, ( menuitem[ key ] )? meMenuChecked : 0 );
index.push( key );
i++;
}
menu.Add( "---", 0, meMenuSeparator );
menu.Add( "キャンセル", 0, 0 );
menu.Add( "選択終了", 1, 0 );
return menu.track( 0 ) - off;
}
}
その他
おかしい箇所やもっといい方法があったら教えてください。
スポンサーリンク