Accessお手本データベースのホームへ戻る

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

 

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に設定して、DoCmdRunCommandメソッドに引数”acCmdSizeToFitFormを指定してフォームを拡大します。また、トグルボタンのCaptionHide More Infoを設定して再表示します。

 

      Me.Section(acFooter).Visible = True

      DoCmd.RunCommand acCmdSizeToFitForm

.Caption = "Hide More Info"

 

トグルボタンの値がFalseのときは、フォームフッターのVisibleプロパティをFalseに設定して、DoCmdRunCommandメソッドに引数acCmdSizeToFitFormを指定してフォームを縮小します。また、トグルボタンのCaptionMore Info….”を設定して元に戻しておきます。

 

      Me.Section(acFooter).Visible = False

      DoCmd.RunCommand acCmdSizeToFitForm

.Caption = "More Info…."

 

 

Sub SaveInfo()の処理

このプロシージャは、フォームのOnUnLoadイベントから呼ばれます。このイベントでは、VBASaveSettingを実行して、トグルボタンの値を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イベントから呼ばれます。この関数は、SaveSettingWindowsのレジストリに登録した値を取得して返します。VBAGetSetting()関数には、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

DoCmdRunCommandメソッドで、引数にacCmdSizeToFitFormを指定してフォームフッターを拡大/縮小するとき、DoCmd.EchoFalseに設定すると画面のちらつきを防止することができます。

 

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のときは、DoCmdMoveSizeメソッドでフォームの幅(Width)11500に変えて拡大します。トグルボタンがFalseのときは、DoCmdMoveSizeメソッドでフォームの幅(Width)8500に変えて縮小します。

 

    If .Value Then

      DoCmd.MoveSize Width:=11500

    Else

      DoCmd.MoveSize Width:=8500

    End If

 

 

Sub SaveInfo()の処理

このプロシージャは、フォームのOnUnLoadイベントから呼ばれます。このイベントでは、VBASaveSettingを実行して、トグルボタンの値を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イベントから呼ばれます。この関数は、SaveSettingWindowsのレジストリに登録した値を取得して返します。VBAGetSetting()関数には、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

 

 

ダウンロード (CH2-5.lzh)