詳解・フォームの位置とサイズの記憶 |
appname | 大元のフォルダと考えてください。 通常はアプリケーションの名前を指定します。(具体的にはApp.Title) |
section | appnameの下のフォルダと考えてください。 自由に名前を付けることができます。(一部使えない文字有り) |
key | sectionの下にある文字列変数名(String)と考えてください。 自由に名前を付けることができます。(一部使えない文字有り) |
setting | keyという文字列変数に格納しておく値(String)と考えてください。 |
appname | SaveSettingと同じ |
section | SaveSettingと同じ |
key | SaveSettingと同じ |
default | keyが読み出せなかった場合、つまりまだ何もkeyに入っていない場合に読み出すデフォルト値と考えてください。 ここに何も書かなかった場合、デフォルト値は長さ0の文字列("")となります。 |
Option Explicit Private Const MinWid As Long = 3000 'フォームの幅の最小値 Private Const MinHei As Long = 3000 'フォームの高さの最小値 Private Sub Form_Load() With Me 'まずは、記憶していた位置とサイズで開き、 .Move Val(GetSetting(App.Title, "frmMain", "Left", Str((Screen.Width - MinWid) \ 2))), _ Val(GetSetting(App.Title, "frmMain", "Top", Str((Screen.Height - MinHei) \ 2))), _ Val(GetSetting(App.Title, "frmMain", "Width", Str(MinWid))), _ Val(GetSetting(App.Title, "frmMain", "Height", Str(MinHei))) '次にウィンドウの状態(最大化/最小化/ノーマル)を設定 .WindowState = Val(GetSetting(App.Title, "frmMain", "WindowState", vbNormal)) End With End Sub Private Sub Form_Resize() With Me If .WindowState = vbMinimized Then Exit Sub '最小化ならば抜ける If .Width < MinWid Then .Width = MinWid 'フォームの幅の最小値チェック If .Height < MinHei Then .Height = MinHei 'フォームの高さの最小値チェック If .WindowState = vbNormal Then 'ノーマルの時は位置とサイズを記憶する。 SaveSetting App.Title, "frmMain", "Left", Str(.Left) SaveSetting App.Title, "frmMain", "Top", Str(.Top) SaveSetting App.Title, "frmMain", "Width", Str(.Width) SaveSetting App.Title, "frmMain", "Height", Str(.Height) End If End With End Sub Private Sub Form_Unload(Cancel As Integer) With Me 'まずはウィンドウの状態(最大化/最小化/ノーマル)を記憶し、 SaveSetting App.Title, "frmMain", "WindowState", Str(.WindowState) 'ノーマルの時は位置のみ記憶する。 If .WindowState = vbNormal Then SaveSetting App.Title, "frmMain", "Left", Str(.Left) SaveSetting App.Title, "frmMain", "Top", Str(.Top) End If End With End Sub