Как сохранять параметры формы?
Home Up

Как сохранять и восстанавливать размеры и позицию формы

'**************************************************************
' Сохраняет и восстанавливает позицию окна формы.
'**************************************************************
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 в зависимости от того, сохранять или восстанавливать настройки размера Вы хотите.

Home ] Up ] О группе ] Статьи ] Исходники ] FAQ ] Приёмы ] Проекты ] Наша рассылка ]

Хостинг от uCoz