日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2010年1月5日火曜日

その他のコントロール(4): ラジオボタン(radioButtonGrp)

radioButtonGrp

radioButtonコマンドと較べた場合の利点と欠点です。
(利点):「radioCollection」を使う必要はありません。
      デフォルトで、ボタンが横一列に並んでくれる。
(欠点):4つまでのラジオボタンしか使えません。
(-shareCollectionを使えば二つの「radioCollection」を一つのグループとして扱えるので計8つまでとなりますが「戻り値」の取得が複雑になります。)

●まずコマンドをフラグ無しで使ってみます。
{
window name;
columnLayout;

radioButtonGrp;

showWindow;
}
「radio1」という名前のついたラジオボタンが一つ表示されます。


●-numberOfRadioButtons
表示するラジオボタンの数(1-4)を指定します。
{
window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 4;

showWindow;
}


●-label1(-l1), -label2(-l2), -label3(-l3), -label4(-l4)
各ラジオボタンのラベル名を指定します。
左端から右方向へ向かって1,2,3,4となります。
{
window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 4 -label1 "test1" -label2 "test2" -label3 "test3" -label4 "test4";

showWindow;
}


●-labelArray2,-labelArray3,-labelArray4
上記と同じですが、一つのフラグで、すべてのラベル名を指定できます。
各ラベル名はスペースで区切ります。
ボタンの数と同じ-labeArrayフラグを使用する必要があります。
(例)3つのラジオボタンであれば「-labelArray3」を使用
{
window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 4 -labelArray4 "test1" "test2" "test3" "test4";

showWindow;
}


●-label
ラジオボタンのグループ名を指定します。
{
window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 4 -label "RadioButtons" -labelArray4 "test1" "test2" "test3" "test4";

showWindow;
}


●-select と「戻り値」
ラジオボタンの場合に、必要とされる「戻り値」は「どのボタンが選択されているのか?」ということです。
他のコントロールと違い、-valueフラグは無く、かわりに-selectフラグを使います。
「戻り値」を得るための、「アサイン」は
`radioButtonGrp -q -select radioButtonGrpName`
となります。

これを適用してみます。
{

global proc rBName()
{
int $number;
$number = `radioButtonGrp -query -select radioBG`;
print ($number+"\n");
}

window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 3 -label "RadioButtons" -labelArray3 "test1" "test2" "test3" radioBG;

button -label "selectedButton" -command "rBName";
showWindow;
}

現在選択しているラジオボタンの番号を返してきます。
たとえば「test1」が選択されている場合は「1」、「test2」の場合は「2」と言った具合です。


この数値をif条件文で使えば、それぞれのボタンに応じたコマンドを実行することが出来ます。
{
global proc rBName()
{
int $number;
$number = `radioButtonGrp -query -select radioBG`;

if($number ==1)
{sphere;}
else if($number ==2)
{cylinder;}
else if($number ==3)
{cone;}

}

window name;
columnLayout;

radioButtonGrp -numberOfRadioButtons 3 -label "RadioButtons" -labelArray3 "test1" "test2" "test3" radioBG;

button -label "selectedButton" -command "rBName";
showWindow;
}

また「-select」フラグを実行コマンドで使うと、ウインドウが表示されたときに引数で指定したラジオボタンがオンになった状態になります。
「-select」フラグが使われない場合のデフォルトではラジオボタンは無選択状態です。
(例)「-select 1」とすれば「test1」ボタンがオンになった状態になります。


●-shareCollection
このラジオグループと関連づける「radioButtonGrp」を指定。
これにより二つの「radioButtonGrp」を一つにまとめることが出来るので、計8つのラジオボタンを一つのグループとして使う事が出来ます。

{
window name;
columnLayout;

string $group1 = `radioButtonGrp -numberOfRadioButtons 4 -label "RadioButtons"`;
radioButtonGrp -numberOfRadioButtons 4 -shareCollection $group1 -label "";

showWindow;
}


●-shareCollection使用時の「戻り値」の利用
現時点で確認した限りでは、-shareCollectionでグループ化はされますがこれは「ボタンの動作のみ」のようで、戻り値を得るにはそれぞの「radioButtonGrp」に-queryを行う必要があるようです。
{
global proc rBName()
{
string $number1;
string $number1;
$number1 = `radioButtonGrp -query -select radioBG1`;
$number2 = `radioButtonGrp -query -select radioBG2`;
if ($number1==0)
{print ("line2-"+$number2+"\n");}
else
{print ("line1-"+$number1+"\n");}
}

window name;
columnLayout;

string $group1 = `radioButtonGrp -numberOfRadioButtons 4 -label "RadioButtons" radioBG1`;
radioButtonGrp -numberOfRadioButtons 4 -shareCollection $group1 -label"" radioBG2;

button -label "selectedButton" -command "rBName";
showWindow;
}

もしかしたらもっと簡単な方法があるのかもしれませんが今のところこのような方法しかわかりませんでした。
この点、「radioButton + radioCollection」であれば「radioCollection」に対して「-query」すれば良いだけなので、簡単に思えます。


●-changeCommand, -onCommand, -offCommand
これらはチェックボックスなどと同じ機能を持っています。
これはグループ全体に対する物で、それぞれ数字を後ろに付ければ各ラジオボタンに対するコマンドとなります。
(例)-changeComamnd2:ラジオボタン2が変更されたときに実行する。



----------------------------------------
まとめ
----------------------------------------
フラグのまとめ:
●-numberOfRadioButtons :ラジオボタンの数を指定
●-label :ラジオボタンのグループ名
●-label1(-l1), -label2(-l2), -label3(-l3), -label4(-l4) :各ボタンのラベル
●-labelArray2,-labelArray3,-labelArray4 :各ラベルのボタンを一つのフラグで指定
●-select :「戻り値」を得るときに-queryと組み合わせて使用。「戻り値」は1~4のint値
●-shareCollection :もう一つの「radioButtonGrp」を関連づけ、一つのグループとして機能させる。
●-shareCollection を使うよりも「radioButton + radioCollection」のほうが照会モードが簡単。
●-changeCommand, -onCommand, -offCommand :グループ用、各ボタン用は最後に数字がつく。

●ボタンが4つ以下の場合は向いているが、5つ以上の場合は「radioButton + radioCollection」が考え方がシンプルになる。(特に照会モードの箇所)
 

0 件のコメント:

コメントを投稿