#436 オプショングループ内に31ケのトグルボタンを一気に作る方法 フォーム、VBA

「#435 複数のコマンドボタンを一気に作る方法」の応用例です。
ここでは、あらかじめフォームに配置されているオプショングループの中に31ケのトグルボタンを一気に作る方法を紹介します。

マニュアルの操作でオプショングループコントロールの中にトグルボタンを配置する場合、ツールボックスで「トグルボタン」を選択したあと、マウスをオプショングループコントロール上に移動して、オプショングループコントロール全体が反転表示になったところでマウスをクリックする必要があります。それによってそのトグルボタンがオプショングループの「子コントロール」として認識されます。

このように、親子関係を持たせてコントロールを配置するには、CreateControlメソッドにおいて、4つめの引数にその「親コントロール」の名前を指定します。

  CreateControl(フォーム名, コントロールの種類, セクション, 親コントロール)


次のサンプルコードでは、「フォーム1」にすでに配置されている「フレーム0」という名前のオプショングループコントロールの中に、31ケのトグルボタンを一気に自動生成しています。カレンダの画面を想定して、1日〜31日のボタンを、1行当り7ケという位置関係で配置しています。
まず「フォーム1」を新規作成し(その名前で保存されている必要はありません)、”デザインビュー”の状態にしておきます。「フレーム0」をいうオプショングループを配置した上で、標準モジュールから次のプロシージャを実行します。

Public Sub CreateToggle()

  Dim Tgl As ToggleButton
  Dim intDayLoop As Integer
  Dim intColNum As Integer
  Dim intRowNum As Integer

  intColNum = 1 '配置する列位置を設定
  intRowNum = 1 '配置する行位置を設定
  For intDayLoop = 1 To 31
    'トグルボタンを生成
    Set Tgl = CreateControl("フォーム1", acToggleButton, , "フレーム0")
    With Tgl
      '標題を設定
      .Caption = intDayLoop & "日"
      'オプション値を設定
      .OptionValue = intDayLoop
      '左位置を設定(1cm間隔で配置)
      .Left = intColNum * 567
      '上位置を設定(1cm間隔で配置)
      .Top = intRowNum * 567
      '幅と高さを指定(ともに1cm)
      .Width = 567
      .Height = 567
    End With
    '列位置をインクリメント
    intColNum = intColNum + 1
    '7ケごとに行位置をインクリメント
    If intDayLoop Mod 7 = 0 Then
      intRowNum = intRowNum + 1
      intColNum = 1
    End If
  Next intDayLoop

End Sub


オプショングループだけ配置されたフォームのデザイン オプショングループだけ配置されたフォーム

プロシージャ実行後のフォームのデザイン
実行後のフォームのデザイン

※コントロールの位置や高さ・幅は、コントロールを生成したあとから設定してもかまいませんが、CreateControlメソッドの引数として指定することもできます。

  CreateControl(フォーム名, コントロールの種類, セクション, 親コントロール, 連結フィールド名, 左位置, 上位置, 幅, 高さ)



| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved