10 複数選択コントロールの位置を揃える

フォーム上のコントロール(Controlオブジェクト)の「Top」プロパティでコントロールの”上位置”を、あるいは「Left」プロパティで”左位置”をプログラムから設定することで、デザイン上のコントロールの位置を設定することができます。

次のプログラムでは、まずフォームのControlsコレクションからControlオブジェクトをループで取り出し、デザインビュー上で選択されているコントロールの中のもっとも上位置や左位置の大きい(あるいは小さい)値を取得します(※注)。
再度同様のループですべての選択コントロールの上位置や左位置をその値に設定します。それによって複数コントロールの位置を揃えることができます。
  • もし”もっとも右のコントロールに揃える”のであれば、右位置は「左位置+幅」のプロパティ値の足し算で求められますので、その最大値/最小値から幅を減じた値を左位置プロパティに設定します(下記プログラム例)。
  • もし”もっとも下のコントロールに揃える”のであれば、下位置は「上位置+高さ」のプロパティ値の足し算で求められますので、その最大値/最小値から高さを減じた値を上位置プロパティに設定します。
プログラム

Sub SampleCode_10()
'複数選択コントロールの位置を揃える
'     ※もっとも右のコントロールに揃える

  Dim ctl As Control
  Dim intMaxRight As Integer

  'まず選択コントロールの右(左位置+幅)の最大値を取得
  For Each ctl In Screen.ActiveForm.Controls
    With ctl
      If .InSelection Then
        If (.Left + .Width) > intMaxRight Then
          intMaxRight = .Left + .Width
        End If
      End If
    End With
  Next ctl

  '選択コントロールの右を最大値に設定
  For Each ctl In Screen.ActiveForm.Controls
    With ctl
      If ctl.InSelection Then
        .Left = intMaxRight - .Width
      End If
    End With
  Next ctl

End Sub

実行例
■実行前

■実行後(もっとも右のコントロールに揃えた場合)
| Index | Prev | Next |



Copyright © T'sWare All rights reserved