Как сохранять и восстанавливать
размеры и позицию формы
'**************************************************************
' Сохраняет и восстанавливает позицию окна
формы.
'**************************************************************
Public Sub WindowPosition(frmName As Form, blnSavePostion As Boolean)
Dim strWinPosKey As String
Dim strAppName As String
'**********************************************************
' Пользуйтесь именем продукта, если оно
существует,
' в противном случае - именем EXE-файла.
'**********************************************************
strAppName = IIf(Len(App.ProductName), App.ProductName, App.EXEName)
With frmName
'******************************************************
' Эта функция предназначена только для
работы
' с "нормальными" окнами, поэтому
работа завершается,
' если окно свернуто или развернуто.
'******************************************************
If .WindowState <> vbNormal Then Exit Sub
'******************************************************
' Пользуйтесь именем формы и описательной
строкой, чтобы
' впоследствии было легче найти эти
значения
' в Системном реестре.
'******************************************************
strWinPosKey = .Name & " Startup Position"
' "Начальная позиция"
'******************************************************
' Сохранить текущие значения ...
'******************************************************
If blnSavePostion Then
SaveSetting strAppName, strWinPosKey, "Height", .Height ' "Высота"
SaveSetting strAppName, strWinPosKey, "Width", .Width ' "Ширина"
SaveSetting strAppName, strWinPosKey, "Left", .Left ' "Левый"
SaveSetting strAppName, strWinPosKey, "Top", .Top '
"Верхний"
'******************************************************
' ... или восстановить их. (Если они не найдены,
' разместить форму в центре.)
'******************************************************
Else
.Height = CSng(GetSetting(strAppName, strWinPosKey, "Height",
.Height))
' "Высота"
.Width = CSng(GetSetting(strAppName, strWinPosKey, "Width",
.Width))
' "Ширина"
.Left = CSng(GetSetting(strAppName, strWinPosKey, "Left",
(Screen.Width - .Width) / 2)) ' "Левый"
.Top = CSng(GetSetting(strAppName, strWinPosKey, "Top", (Screen.Height
- .Height) / 2)) ' "Верхний"
End If
End With
End Sub
Для использования нужно вызвать WindowPosition(форма,
флаг). Где флаг равен True или False в
зависимости от того, сохранять или
восстанавливать настройки размера Вы
хотите.