#368 | コントロール幅を常にウィンドウサイズに合わせるには? | フォーム、VBA | |
Accessのフォームビューでは、ウィンドウサイズを変更してもそれに追随してコントロールの大きさが変わることはありません。またプロパティ等でそのような設定をすることもできません。 そこで、フォームの「Resizeイベント」が発生するタイミングで、各コントロールのサイズをVBAで変更することで、あたかもフォームのウィンドウサイズの変化に合わせてコントロールサイズが自動的に変わるようなインターフェースを作ることができます。 それにはまず、次のようなプロシージャを作成してきます。あえてプロシージャ化する必要はありませんが、こうすることでさまざまなフォームやコントロールに汎用的に対応できます。 またこの例では、指定したフォームのウィンドウ幅にフィットするようにコントロールの幅を変更しています。つまり、常にウィンドウ幅いっぱいにコントロール幅が調節されるようになっています。コントロールの左位置等は変更していないので、初期のデザイン状態ではコントロールがフォームの左端にあることを前提にしています。 Public Sub AdjustWidth(frm As Form, ctl As Control) '概要 指定コントロールをウィンドウ幅に合わせる '引数 frm : フォームオブジェクト ' ctl : 対象とするコントロールオブジェクト ctl.Width = frm.InsideWidth End Sub 上記プロシージャの利用例です。フォームのモジュールにおいて、サイズ変更時/Resizeイベントプロシージャに次のようなコードを記述します。ここでは、"lblTitle"という名前のラベルコントロール、"linHeader"および""という名前の直線コントロールの幅をフォーム幅に合わせて調節しています。 Private Sub Form_Resize() 'フォームのサイズ変更時 AdjustWidth Me, Me!lblTitle AdjustWidth Me, Me!linHeader AdjustWidth Me, Me!linFooter End Sub 実行結果 ※サンプルフォームのラベルの文字配置は"均等割り付け"にしてあります。 |
|||
|
Copyright © T'sWare All rights reserved |