# グループコントロール

マニュアル > コントロールリファレンス > # グループコントロール |

プロパティ | メソッド | イベント
グループントロールの説明をします。 複数のコントロールオブジェクトが選択された状態で、右クリックで出現するメニューで「Combine controls」を選択すると、複数のコントロールオブジェクトをグループ化することができます。 グループ化後は複数のオブジェクトを１つの部品として扱うことができます。 グループコントロールは視覚的には見えませんが、通常のコントロールと同じように、プロパティ、メソッド、イベントを持っています。 これらをうまく使用することにより、複数のコントロールを単にまとめるだけでなく、ユーザー独自の新しい機能を持った部品としてライブラリ化し、作業を効率化できます。
グループ化する前 | グループ化した後
| グループ化は、「Divide controls」操作によって解除できます。そのとき、グループコントロールに設定したプロパティやスクリプトなどの内容はすべて消去されます。 誤ってグループを解除してしまった場合には、UNDOで元に戻すことができます。
| プロパティ
１）位置について グループコントロールのLeft/Topプロパティを変更すると、グループ化されている子オブジェクトも移動します。 グループ化を行うと、グループ内の各オブジェクトの位置はグループコントロールの左上の座標を基点（0,0）とした相対的な座標になります。 ２）サイズについて グループコントロールのWidth/Heightプロパティを変更すると、グループ化されている子オブジェクトもそれにあわせて拡大・縮小されます。 ３）FocusHoverについて フォームオブジェクトのFocusHoverをTRUEにした状態で、グループコントロールのFocusHoverをTRUEにすると、マウス通過時、下記のようにフォーカスが可能なことを示す四角い２重線がグループコントロールの周囲に表示されます。 この場合、グループ内の各オブジェクトのFocusableプロパティは必ずFALSEにしてください。 フォームオブジェクトのFocusHoverをTRUE 、グループコントロールのFocusHoverをFALSE、グループ内の各オブジェクトのFocusableプロパティをTRUEにしたときは、 グループコントロールの周囲ではなく、各コントロールの周囲に四角い２重線が表示されます。 つまり、各構成要素への個別のマウス操作に対するスクリプト記述も可能です。
| カスタムプロパティ
グループコントロールのCustomizeプロパティを使用することにより、グループコントロールにユーザー独自のプロパティを新たに定義することができます。このプロパティのことを「カスタムプロパティ」と呼びます。 例えば、カスタムプロパティとしてFillColorプロパティ（背景の色）を定義し、そのプロパティの値を変更するだけでグループメンバである各子オブジェクトの背景の色を一括で変更することができます。 また、子オブジェクトのプロパティをリンクさせる目的以外にも、プロパティのデータ型を指定して、単なるプロパティとして追加することもできます（この場合、どのプロパティともリンクしない独自のプロパティを作成することができる）。 例）３つのコントロールのFillColorプロパティを切り替えるためのカスタムプロパティを定義する
■書式仕様 Customizeプロパティの書式は下記のとおりです。 [Property] カスタムプロパティ名=子オブジェクト名.プロパティ名[,子オブジェクト名.プロパティ名…][;追加パラメータ…] カスタムプロパティ名=プロパティタイプ[;追加パラメータ] … 使用可能なプロパティタイプ： [bool] [integer] [number] [string] [multilinestring] [color] [font] [filepath] [filepaths] 追加パラメータ ・・・パラメータ名:値。複数指定する場合はセミコロンで区切って指定 ShowProperty:F（デフォルト値：T）　・・・プロパティページ表示／非表示 ShowBind:F（デフォルト値：T）　・・・バインドページ表示／非表示 List:列挙値　・・・プロパティページのリストボックスへ表示する場合、カンマ形式で列挙する文字列を指定。 例）List:True,False　※[string]の時のみ有効。 １行目に[Property]と記述し、２行目以降にカスタムプロパティの定義を行います。 「カスタムプロパティ名」はどのような名前でも構いません（アルファベットのみ使用可）。その後、カスタムプロパティとしてまとめたい子オブジェクトのプロパティをカンマ区切りで定義します。 複数の子オブジェクトのプロパティを定義したい場合は、その後に続けて記述します。
| １行目の[Property]は、省略することもできます。
| カスタムプロパティ名はどのような名前でも構いませんが（アルファベットとアンダーバー「_」のみ使用可）、既に存在するプロパティ名との重複を避けるために、先頭に「_」を入れる等のルールで作成されることを強く推奨します。
■設定例 ここでは例として、上記の図にあるような３つの図形コントロールを張り付け、名前（Nameプロパティ）をObj1、Obj2、Obj3と定義します。 次に、下記のようにCustomizeプロパティに定義します。 [Property] _FillColor=obj1.FillColor, obj2.FillColor,obj3.FillColor これにより、グループコントロールに_FillColorプロパティが新たに作成され、Obj1、Obj2、Obj3のFillColorプロパティを一括で変更できるようになります。 また、複数のカスタムプロパティを定義したい場合は、下記のように複数行に分けて記述します。 [Property] _Fill=obj1.Fill, obj2.Fill,obj3.Fill _FillColor=obj1.FillColor, obj2.FillColor,obj3.FillColor これにより、グループコントロールに_Fillプロパティが新たに作成され、Obj1、Obj2、Obj3のFillプロパティを一括で変更できるようになります。 また、「ShowProperty」「ShowBind」パラメータを追加することにより、カスタムプロパティをプロパティページ／バインドページで非表示にすることができます。 [Property] _Fill=obj1.Fill, obj2.Fill,obj3.Fill;ShowProperty:F _FillColor=obj1.FillColor, obj2.FillColor,obj3.FillColor これにより、_Fillプロパティはプロパティページからは非表示となり、バインドページには表示されます。 Propertyページには_Fillは非表示 Bindページには表示されている また、いずれのプロパティともリンクさせない独自のプロパティを定義したい場合は、下記のように記述します（データ型を指定）。 [Property] _Flag=[bool] _Fill=obj1.Fill, obj2.Fill,obj3.Fill _FillColor=obj1.FillColor, obj2.FillColor,obj3.FillColor これにより、グループコントロールにbool型（True/False）の_Flagプロパティが新たに作成されました。 ■旧書式について 以下は、カスタムプロパティ定義の旧書式です（Ver5以前の旧バージョン仕様）。旧書式についても上位互換のために従来通りに動作します。 旧書式のCustomizeプロパティの書式は下記のとおりです。 [カスタムプロパティ名] , [子オブジェクト名.プロパティ名] , ... [カスタムプロパティ名] , [子オブジェクト名.プロパティ名] , ... ... カスタムプロティ名の後に、カスタムプロパティとしてまとめたい子オブジェクトのプロパティをカンマ区切りで定義します。 複数の子オブジェクトのプロパティを定義したい場合は、その後に更にカンマ区切りで列挙して記述します。 また、複数のカスタムプロパティを定義したい場合は、下記のように複数行に分けて記述します。 _Fill,Obj1.Fill,Obj2.Fill,Obj3.Fill _FillColor,Obj1.FillColor,Obj2.FillColor,Obj3.FillColor ※旧書式では、データタイプの指定やプロパティページの表示／非表示などを指定する方法はありません。
| メソッド
他のコントロールと同様に、グループコントロールにもユーザー定義関数を定義できます。このユーザー定義関数を定義することにより、グループコントロールに独自のメソッドを持たせることができます。
| イベント
他のコントロールと同様に、グループコントロールはイベントを処理することができます。グループコントロールのOnMouseDownは、グループ内の子オブジェクトのいずれかがマウスクリックされると呼び出されます。 OnMouseUp/OnMouseDblClick/OnMouseIn/OnMouseOutも同様で、いずれかの子オブジェクトからイベントが発生したとき、親であるグループコントロールの当該イベントも必ず呼び出されます。 このように、グループコントロールのイベントはグループ内の各オブジェクトを代表したイベントとして利用することができます。
| グループ化機能を有効に活用し、新しい独自の部品集を作ることで作業を効率化できます。部品集用のxmlファイルを１つ作成しておいて、作成した部品を１つにまとめておき、必要なときにコピーして使うと便利です。