フォームを垂直/水平方向に拡大するお手本データベース

図2-5-1 フォームを水平方向に拡大した例

図2-5-2 フォームを垂直方向に拡大した例
このサンプルデータベースは、フォームを水平方向/垂直方向に拡大して追加情報を表示させることができます。メニューが表示されたら、垂直方向にフォームを拡張するをクリックします。得意先のフォームが表示されたら、More
Info…のトグルボタンをクリックします。フォームが垂直方向に拡大されて、担当者名、部署、電話番号、ファクシミリなどの情報が表示されます。Hide
More Infoのトグルボタンをクリックすると元のサイズに戻ります。フォーム右上の閉じるのボタン
をクリックするとフォームのトグルボタンの値が保存されて閉じられます。メニューから再度フォームを開くと、保存されているトグルボタンの値を取得して、フォームを閉じたときの状態(縮小または拡大された状態)で開きます。メニューから水平方向にフォームを拡大をクリックすると、得意先のフォームが表示されます。フォーム右側のMore
Info >>をクリックすると、フォームを水平方向に拡大して追加情報が表示されます。More
Info >>を再度クリックすると、元のサイズに戻ります。このフォームも、フォームを閉じたときにフォームのトグルボタンの値が保存されます。このフォームが再度開かれたときは、前回フォームが閉じられた状態(縮小または拡大された状態)で表示されます。
サンプルデータベース (CH2-5.mdb)では、以下のノウハウを習得することができます。
◆ フォームを垂直方向に拡大する方法
◆ フォームを水平方向に拡大する方法
◆ フォームの状態(縮小/拡大)を保存して、再度開かれたとき同じ状態で表示する方法
●
フォームを垂直方向に拡大するフォームを作成するには
1 Access を起動して作業フォルダに新規データベースCH2-5.mdbを作成します。
2 ファイルメニューから外部データの取り込み、インポートをクリックします。インポートのダイアログが表示されたら、Access のサンプルデータベース Northwind.mdbを選択してインポートボタンをクリックします。(Northwind.mdbは、通常 C:\Program Files\Microsoft Office\Office\Samplesのフォルダにインストールされます。Northwind.mdbが見つからないときは、Access のCD-ROMからインストールしてください。)
オブジェクトのインポートダイアログが表示されたら、テーブルタブをクリックして得意先を選択します。最後に、OKボタンをクリックしてインポートを完了させます。

図2-5-3 Northwind.mdbから得意先テーブルをインポート
3 データベースウィンドウからフォーム
をクリックして、新規作成ボタンをクリックします。フォームの新規作成ダイアログが表示されたら、フォームウィザードを選択します。基になるテーブル/クエリのコンボボックスから、得意先テーブルを選択してOKボタンをクリックします。フォームウィザードの指示に従って、図2-5-4のようなフォームを作成します。担当者名、部署、電話番号、ファクシミリのテキストボックスを選択したら、フォームフッターに移動します。ツールボックスからトグルボタンのアイコン
をクリックしたら、住所2のテキストボックスの右隣に作成します。トグルボタンのプロパティは、表2-5-1のように設定します。

図2-5-4 フォームウィザードの指示に従って得意先のフォームを作成
表2-5-1 トグルボタンのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
トグルボタン |
名前 |
tglVMoreInfo |
|
標題 |
More Info… |
|
|
既定値 |
False |
4 メニューからコードのアイコン
をクリックしてフォームモジュールを表示させたら、CH2-5.mdbを開いて”frmVerticallyExpandForm”のフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト2-5-1を参照してください。また、CH2-5.mdのモジュールからbasMyLibをインポートしてください。
5 フォームをビューモードで開いたら、More Info…のトグルボタンをクリックします。トグルボタンをクリックすると、フォームフッターが拡大されて追加情報が表示されます。トグルボタンを再度クリックすると、フォームフッターが縮小されて元のサイズに戻ります。フォーム右上の閉じるのボタンをクリックすると、フォームの状態が保存されます。再度フォームを開いたときは、前回フォームを閉じた状態で開かれます。
6 フォームが垂直方向に拡大されることが確認できたら、フォームを”frmVerticallyExpandForm”の名称で保存して、Accessを閉じます。
Sub Form_Load()イベントの処理
このイベントは、フォームが開かれてデータがロードされたときに実行されます。このイベントでは、LoadInfo()関数でフォームを閉じたときに保存したトグルボタンの値(True/False)を取得して更新します。トグルボタンの値を更新したら、クリック時のイベントを呼び出してフォームを拡大または縮小します。
Sub Form_Unload()イベントの処理
このイベントは、フォームを閉じる処理が開始されたときに実行されます。このイベントでは、Sub SaveInfoを呼んでトグルボタンの値(True/False)を保存します。SaveInfoで保存した値は、LoadInfo()関数で取得することができます。
Sub tglVMoreInfo_Click()イベントの処理
このイベントは、トグルボタンをクリックしたときに実行されます。このイベントでは、トグルボタンの値(True/False)を参照して、フォームを垂直方向に拡大または縮小します。トグルボタンの値がTrueのときは、フォームフッターのVisibleプロパティをTrueに設定して、DoCmdのRunCommandメソッドに引数”acCmdSizeToFitForm”を指定してフォームを拡大します。また、トグルボタンのCaptionに”Hide More Info”を設定して再表示します。
Me.Section(acFooter).Visible = True
DoCmd.RunCommand acCmdSizeToFitForm
.Caption = "Hide More Info"
トグルボタンの値がFalseのときは、フォームフッターのVisibleプロパティをFalseに設定して、DoCmdのRunCommandメソッドに引数”acCmdSizeToFitForm”を指定してフォームを縮小します。また、トグルボタンのCaptionに”More Info….”を設定して元に戻しておきます。
Me.Section(acFooter).Visible = False
DoCmd.RunCommand acCmdSizeToFitForm
.Caption = "More Info…."
Sub SaveInfo()の処理
このプロシージャは、フォームのOnUnLoadイベントから呼ばれます。このイベントでは、VBAのSaveSettingを実行して、トグルボタンの値をWindowsのレジストリに保存します。SaveSettingには、4個の引数を指定します。
・ AppName:= CurrentProject.Name (データベース名:CH2-5.mdb)
・ Section:=Me.Name(フォーム名:frmVerticallyExpandForm)
・ Key:=”Toggle”(コントロールの種類)
・ Setting:=”True” or “False”(コントロールの値)
SaveSettingを実行すると、Windowsのレジストリキーに引数で指定したサブキーが登録されます。
SaveSettingで登録されるWindowsのレジストリキー:
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/

図2-5-5 レジストリエディタでSaveSettingで登録したサブキーを表示した例
Function LoadInfo()の処理
この関数は、フォームのOnLoadイベントから呼ばれます。この関数は、SaveSettingでWindowsのレジストリに登録した値を取得して返します。VBAのGetSetting()関数には、3個の引数を指定します。
・ AppName:= CurrentProject.Name (データベース名:CH2-5.mdb)
・ Section:=Me.Name(フォーム名:frmVerticallyExpandForm)
・ Key:=”Toggle”(コントロールの種類)
GetSettingを実行すると、WindowsのレジストリキーからToggleの値を取得して返します。
GetSettingで検索するWindowsのレジストリキー:
HKEY_CURRENT_USER/Software/VB
and VBA ProgramSettings/CH2-5.mdb/frmVarticallyExpandForm
リスト2-5-1 frmVerticallyExpandFormのフォームモジュール
|
Option Compare Database Option Explicit Private Sub Form_Load() Me.tglVMoreInfo.Value = LoadInfo() Call tglVMoreInfo_Click End Sub Private Sub Form_Unload(Cancel As Integer) Call SaveInfo End Sub Private Sub tglVMoreInfo_Click() With Me.tglVMoreInfo If .Value Then DoCmd.Echo False Me.Section(acFooter).Visible = True DoCmd.RunCommand acCmdSizeToFitForm .Caption = "Hide More Info" DoCmd.Echo True Else Me.Section(acFooter).Visible = False DoCmd.RunCommand acCmdSizeToFitForm .Caption = "More Info ...." End If End With End Sub Private Sub SaveInfo() ' Registry Key: '
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/ '
CH2-5.mdb/frmVerticallyExpandForm/Toggle SaveSetting AppName:=CurrentProject.Name, _ Section:=Me.Name, _ Key:="Toggle", _ Setting:=IIf(Me.tglVMoreInfo.Value, "True", "False") End Sub Private Function LoadInfo() As Boolean ' Registry Key: '
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/ '
CH2-5.mdb/frmVerticallyExpandForm/Toggle
Dim strValue As String strValue = GetSetting(AppName:=CurrentProject.Name, _ Section:=Me.Name, Key:="Toggle") LoadInfo = IIf(strValue = "True", True, False) End Function |
Tip
|
DoCmdのRunCommandメソッドで、引数にacCmdSizeToFitFormを指定してフォームフッターを拡大/縮小するとき、DoCmd.EchoをFalseに設定すると画面の”ちらつき”を防止することができます。 DoCmd.Echo False Me.Section(acFooter).Visible = True DoCmd.RunCommand acCmdSizeToFitForm .Caption = "Hide More Info" DoCmd.Echo True |
● フォームを水平方向に拡大するフォームを作成するには
1 Accessを起動して作業フォルダに作成したCH2-5.mdbを開きます。
2 データベースウィンドウからフォーム
をクリックして、新規作成ボタンをクリックします。フォームの新規作成ダイアログが表示されたら、フォームウィザードを選択します。基になるテーブル/クエリのコンボボックスから、得意先テーブルを選択してOKボタンをクリックします。フォームウィザードの指示に従って、図2-5-6のようなフォームを作成します。担当者名、部署、電話番号、ファクシミリのテキストボックスを選択したら、フォームの左側から15cmぐらいの位置に移動します。フォームの幅は、20cmぐらいにします。ツールボックスからトグルボタンのアイコン
をクリックして、フリガナのテキストボックスの右隣に作成します。トグルボタンのプロパティは、表2-5-2のように設定します。

図2-5-6 フォームウィザードの指示に従って得意先のフォームを作成
表2-5-2 トグルボタンのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
トグルボタン |
名前 |
tglHMoreInfo |
|
標題 |
More Info >> |
|
|
既定値 |
False |
3 メニューからコードのアイコン
をクリックしてフォームモジュールを表示させたら、CH2-5.mdbを開いて”frmHorizontallyExpandForm”のフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト2-5-2を参照してください。
4 フォームをビューモードで開いたら、More Info >>のトグルボタンをクリックします。トグルボタンをクリックすると、フォームの幅が拡大されて追加情報が表示されます。トグルボタンを再度クリックすると、フォームの幅が縮小されて元のサイズに戻ります。フォーム右上の閉じるのボタンをクリックすると、フォームの状態が保存されます。再度フォームを開いたときは、前回フォームを閉じた状態で開かれます。
5 フォームが水平方向に拡大されることが確認できたら、フォームを”frmHorizontallyExpandForm”の名称で保存して、Access を閉じます。
Sub Form_Load()イベントの処理
このイベントは、フォームが開かれてデータがロードされたときに実行されます。このイベントでは、LoadInfo()関数でフォームを閉じたときに保存したトグルボタンの値(True/False)を取得して更新します。トグルボタンの値を更新したら、クリック時のイベントを呼び出してフォームを拡大または縮小します。
Sub Form_Unload()イベントの処理
このイベントは、フォームを閉じる処理が開始されたときに実行されます。このイベントでは、Sub SaveInfoを呼んでトグルボタンの値(True/False)を保存します。SaveInfoで保存した値は、LoadInfo()関数で取得することができます。
Sub tglHMoreInfo_Click()イベントの処理
このイベントは、トグルボタンをクリックしたときに実行されます。このイベントでは、トグルボタンの値(True/False)を参照して、フォームを水平方向に拡大または縮小します。トグルボタンがTrueのときは、DoCmdのMoveSizeメソッドでフォームの幅(Width)を11500に変えて拡大します。トグルボタンがFalseのときは、DoCmdのMoveSizeメソッドでフォームの幅(Width)を8500に変えて縮小します。
If .Value Then
DoCmd.MoveSize Width:=11500
Else
DoCmd.MoveSize Width:=8500
End If
Sub SaveInfo()の処理
このプロシージャは、フォームのOnUnLoadイベントから呼ばれます。このイベントでは、VBAのSaveSettingを実行して、トグルボタンの値をWindowsのレジストリに保存します。SaveSettingには、4個の引数を指定します。
・ AppName:= CurrentProject.Name (データベース名:CH2-5.mdb)
・ Section:=Me.Name(フォーム名:frmHorizontallyExpandForm)
・ Key:=”Toggle”(コントロールの種類)
・ Setting:=”True” or “False”(コントロールの値)
SaveSettingを実行すると、Windowsのレジストリに引数で指定したサブキーが登録されます。
SaveSettingで登録されるWindowsのレジストリキー:
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/
Function LoadInfo()の処理
この関数は、フォームのOnLoadイベントから呼ばれます。この関数は、SaveSettingでWindowsのレジストリに登録した値を取得して返します。VBAのGetSetting()関数には、3個の引数を指定します。
・ AppName:= CurrentProject.Name (データベース名:CH2-5.mdb)
・ Section:=Me.Name(フォーム名:frmHorizontallyExpandForm)
・ Key:=”Toggle”(コントロールの種類)
GetSettingを実行すると、WindowsのレジストリキーからToggleの値を取得して返します。
GetSettingで検索するWindowsのレジストリキー:
HKEY_CURRENT_USER/Software/VB and VBA Program
Settings/CH2-5.mdb/frmHorizontallyExpandForm
リスト2-5-2 frmHorizontallyExpandFormのフォームモジュール
|
Option Compare Database Option Explicit Private Sub Form_Load() Me.tglHMoreInfo.Value = LoadInfo() Call tglHMoreInfo_Click End Sub Private Sub Form_Unload(Cancel As Integer) Call SaveInfo End Sub Private Sub tglHMoreInfo_Click() With Me.tglHMoreInfo If .Value Then DoCmd.MoveSize Width:=11500 Else DoCmd.MoveSize Width:=8500 End If End With End Sub Private Sub SaveInfo() ' Registry Key: '
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/ '
CH2-5.mdb/frmHorizontallyExpandForm/Toggle SaveSetting AppName:=CurrentProject.Name, _ Section:=Me.Name, _ Key:="Toggle", _ Setting:=IIf(Me.tglHMoreInfo.Value, "True", "False") End Sub Private Function LoadInfo() As Boolean ' Registry Key: '
HKEY_CURRENT_USER/Software/VB and VBA Program Settings/ '
CH2-5.mdb/frmHorizontallyExpandForm/Toggle Dim strValue As String strValue = GetSetting(AppName:=CurrentProject.Name, _ Section:=Me.Name, Key:="Toggle") LoadInfo = IIf(strValue = "True", True, False) End Function |