# トグルボタンコントロール

マニュアル > コントロールリファレンス > 基本 > # トグルボタンコントロール |

| トグルボタンコントロール (ToggleButton)
プロパティ | メソッド | イベント
トグルボタンコントロールは、TRUE/FALSE（On/Off）の状態が交互に切り替わるボタンです。
トグルボタンコントロールは、２つの用途があります。 １）1つのボタン操作によって、TRUE/FALSE（On/Off）の状態を交互に切り替えたい場合。 ２）トグルボタンコントロールをグルーピングする事により、１つの操作に対して複数のトグルボタンを組として連動させることができます。 この方法は、オペレータによる画面操作の際、複数の選択肢の中から常に1つだけ選択させたいような場面で役立ちます。
各ボタンそれぞれでON/OFFの状態を切り替える
トグルボタンコントロールはSwitchTypeがALTERNATEのボタンコントロールと同じようにON/OFFの状態を交互に切り替えることができます。 各ボタンのSwitchValueに、ON/OFFを切り替えたい各ビットタグをバインドします。 各ボタンはそれぞれに独立して動作します。 Motor1のSwitchValueのバインド　：　INOUT:$M0 … Motor7のSwitchValueのバインド　：　INOUT:$M7
ボタンをグルーピングして複数の選択肢から１つだけ選択させる
複数のボタンをグルーピングすることにより、複数の選択肢の中から1つだけ選択させたい場面に利用することができます。 このサンプルは\\sample\control\controls.xmlのToggleButtonフォームの「Grouped buttons for a number tag」にあります。サンプルでは、Stop/Motor1/…/Motor7のトグルボタンがグループ化されています。 １）この状態では、Motor2が選択されています。 ２）オペレータがMoter3を選択するとMoter2のボタンは解除され、Moter3がON（押された状態）になります。 グルーピングの手順は以下のとおりです。 １）グループとして組にしたい各コントロールのNameプロパティに、それぞれコントロールの名前を付けてください。 ２）このグループの中から「親」となるコントロールを決めます。親はグルーピングするコントロールの中からどれか１つ選びます（。 ３）親コントロールのGroupObjectプロパティに、グルーピングを行いたいコントロールの名前をカンマ区切で設定します。この時、親自身のコントロール名を含める必要はありません。 例）GroupObject プロパティ ： Motor1,Motor2,Motor3,Motor4,Motor5,Motor6,Motor7 ４）グルーピングする各コントロールのGroupThisValueプロパティの設定を行います。GroupThisValueは組の中でどのボタンが押された状態なのかを識別するための値です。従って、各コントロールで重複しない値を設定します。 例） StopボタンのGroupThisValueプロパティ ： 0 Motor1ボタンのGroupThisValueプロパティ ： 1 … Motor7ボタンのGroupThisValueプロパティ ： 7 ５）親コントロールのGroupValueプロパティに、スイッチの切り替えを通知したいタグをバインドします。 このバインドによって、スイッチ操作に応じてタグの値を切り替えることができます（例えば0,1,2…）。 このプロパティは、グループ内のどれかのボタンが押された時に、各ボタンに割り付けられたGroupThisValueプロパティの設定値により値がリアルタイムに変化します。 この例では、Motor2が押された時は、親コントロールのGroupValueは2になります。Motor5が押された時は、GroupValueは5になります。 なお、GroupValueプロパティは読み取り専用のため、バインドタブのみに表示されます。又、GroupValueが変化すると、OnGroupValueChangedイベントが発生します。
グルーピングにより複数のビットタグの中から一つだけONにする
複数のボタンをグルーピングし、複数のビットタグの中から１つだけONにすることができます。ONになっているビットタグ以外のタグは全てOFFになります。 例えば、３つのボタン（BitTag1/BitTag2/BitTag3）を用意し、前ページの「ボタンをグルーピングして複数の選択肢から１つだけ選択させる」の手順でグループ化します。 異なる点は手順（5）で、親のGroupValueプロパティにバインドするのではなく、トグルボタンコントロールのSwitchValueにバインドしている点です。 SwitchValueはボタンコントロールと同じで、ボタンが押されている状態の時TRUE、押されていない時FALSEになります。
１つのビットタグの状態を２つのボタンで切り替える
２つのボタンをグループ化することにより、ビットタグのON/OFFを切り替えることもできます。 設定手順は前ページの「グループ化して複数の選択肢から１つだけ選択する」と同じです。
バインドを行わない時のGroupValueの初期値について
バインドを行わずにグループ化するとき、GroupValueの初期値は-1になります。 初期値を-1以外の値にしたい場合には、親コントロールのOnInitializeイベントで下記のように記述してください。 例
    event OnInitialize()
    {
    　this.GroupValue = 1;	// 設定したい初期値
    }