Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.225.57.223] |
|
Сообщ.
#1
,
|
|
|
Цитата В модуле находятся две подпрограммы. Public Sub SaveOptions(Frm As Form) - запись настроек в реестр Public Sub LoadOptions(Frm As Form) - чтение настроек из реестра Настройки записываются текущему пользователю. Т.е. в Windows NT каждый пользователь будет иметь свои настройки. Использование: 1) Выбрать форму, которая будет хранить в своих элементах настройки. Например в калькуляторе - frmMain 2) В обработчик события формы OnLoad вставить строку LoadOptions Me 3) В обработчик события формы OnUnload вставить строку: SaveOptions Me По умолчанию сохраняются/записываются только положение и размер окна приложения. Если Вы хотите сохранить в реестре ещё значение какого-нибудь элемента формы, то надо в свойствах этого элемента в поле Tag поставить значение "Save" (в процессе разработки формы, а не в RunTime) Например в калькуляторе можно было бы сохранять значения поля lcd0 Для этого надо просто присвоить свойству Tag этого поля значение Save И тогда, если вы вставляли ранее описанные строки в обработчики OnLoad и OnUnload, то значение этого поля будут записываться и считываться при запуске приложения и выходе из него. Это - в модуль. Option Explicit Public Sub SaveOptions(Frm As Form) Dim Cont As Control SaveSetting App.Title, Frm.Name, "(name)", Frm.Caption With Frm If Frm.WindowState <> vbMinimized Then SaveSetting App.Title, Frm.Name, "_Form Wight", .Width SaveSetting App.Title, Frm.Name, "_Form Height", .Height SaveSetting App.Title, Frm.Name, "_Form Top", .Top SaveSetting App.Title, Frm.Name, "_Form Left", .Left End If 'Общие параметры приложение Dim НазваниеПараметра As String For Each Cont In Frm Select Case Left$(Cont.Tag, 5) Case "Save:" НазваниеПараметра = Mid$(Cont.Tag, 6, Len(Cont.Tag) - 5) SaveSetting App.Title, "Shared", НазваниеПараметра, Cont Case Else End Select Next 'Параметры окна For Each Cont In Frm Select Case Cont.Tag Case "Save" Select Case IsArray(Cont) Case False SaveSetting App.Title, Frm.Name, Cont.Name, Cont Case True SaveSetting App.Title, Frm.Name, Cont.Name & " [" &Trim$(Str$(Cont.Index)) & "]", Cont End Select Case Else End Select Next End With End Sub Public Sub LoadOptions(Frm As Form) Dim Cont As Control With Frm Frm.Width = GetSetting(App.Title, Frm.Name, "_Form Wight", .Width) Frm.Height = GetSetting(App.Title, Frm.Name, "_Form Height", .Height) Frm.Top = GetSetting(App.Title, Frm.Name, "_Form Top", .Top) Frm.Left = GetSetting(App.Title, Frm.Name, "_Form Left", .Left) 'Общие параметры приложение Dim НазваниеПараметра As String For Each Cont In Frm Select Case Left$(Cont.Tag, 5) Case "Save:" НазваниеПараметра = Mid$(Cont.Tag, 6, Len(Cont.Tag) - 5) Cont = GetSetting(App.Title, "Shared", НазваниеПараметра, Cont) Case Else End Select Next For Each Cont In Frm Select Case Cont.Tag Case "Save" Select Case IsArray(Cont) Case False Cont = GetSetting(App.Title, Frm.Name, Cont.Name, Cont) Case True Cont = GetSetting(App.Title, Frm.Name, Cont.Name & " [" &Trim$(Str$(Cont.Index)) & "]", Cont) End Select Case Else End Select Next End With End Sub Public Function Параметр(НазваниеПараметра As String, Optional Default) Параметр = GetSetting(App.Title, "Shared", НазваниеПараметра, Default) End Function Цитата С вами был BSP Эта тема была разделена из темы "Настройки програмы!!!" Это сообщение было перенесено сюда или объединено из темы "Как сохранить настройки программы" |
Сообщ.
#2
,
|
|
|
Кстати этого нет в факе, просьба добавить!
Option Explicit Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStringA" (ByVal Section As String, ByVal Key As String, _ ByVal Default As String, ByVal GetStr As String, ByVal nSize As Long, _ ByVal INIfile As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _ "WritePrivateProfileStringA" (ByVal Section As String, ByVal Key As String, _ ByVal putStr As String, ByVal INIfile As String) As Long Dim CONFIG_FILE As String Sub Main() 'ПРИСВАИВАЕМ ПУТЬ К ФАЙЛУ С НАСТРОЙКАМИ С КОТОРЫМ ХОТИМ РАБОТАТЬ CONFIG_FILE = RCP(App.Path) & "options.ini" 'ПРИ ПЕРВОМ ЗАПУСКЕ ВЫДАСТ "ПУСТО" 'ПРИ ВТОРОМ УЖЕ ВЫТАЩИТ СОХРАНЕННЫЕ ДАННЫЕ MsgBox SETS("МояНастройка", "Пусто") 'ЗАПИШЕМ ДАННЫЕ В ФАЙЛ НАСТРОЕК SETS("МояНастройка") = "Настроенные настройки" End Sub 'ФУНКЦИЯ ВОЗВРАЩАЕТ СТРОКУ СО СЛЕШЕМ НА КОНЦЕ Function RCP(ByVal P As String) RCP = P & IIf(VBA.Right(P, 1) = "\", vbNullString, "\") End Function 'ФУНКЦИЯ ФОРМАТИРОВАНИЯ СТРОКИ Function TrimNullChar(ByVal lpzString As String) As String lpzString = lpzString & vbNullChar lpzString = VBA.Left$(lpzString, InStr(lpzString, vbNullChar) - 1) TrimNullChar = lpzString End Function 'ОБОЛОЧКА К ФУНКЦИИ ЧТЕНИЯ/ЗАПИСИ INI-ФАЙЛОВ Public Property Get SETS(ByVal Key As String, Optional ByVal Default As Variant) As Variant Dim Tmp As String Tmp = GetSettingIni(CONFIG_FILE, "OPTIONS", Key, Default) SETS = Tmp End Property Public Property Let SETS(ByVal Key As String, Optional ByVal Default As Variant, ByVal vNewValue As Variant) SaveSettingIni CONFIG_FILE, "OPTIONS", Key, vNewValue End Property Private Function GetSettingIni(ByVal File As String, ByVal Section As String, ByVal Key As String, Optional ByVal Default As Variant) As Variant Dim Tmp As String, Ret As Long Tmp = VBA.Space$(16536) Ret = GetPrivateProfileString(Section, Key, vbNullString, Tmp, Len(Tmp), File) If Ret = 0 Then GetSettingIni = Default Else GetSettingIni = TrimNullChar(Tmp) End Function Private Sub SaveSettingIni(ByVal File As String, ByVal Section As String, ByVal Key As String, ByVal Value As Variant) Dim Ret As Integer, wS As String Ret = WritePrivateProfileString(Section, Key, CStr(Value), File) End Sub |
Сообщ.
#3
,
|
|
|
Готовый класс для работы с INI. Подключаешь его к проекту.
Сохранение параметров: dim iNi as new clsIni iNi.Filename = path & "file.ini" iNi.Value("Color", "MainLable") = Me.lblMain.Backcolor iNi.UpdateFile Загрузка параметров: Dim iNi As New clsIni iNi.Filename = path & "file.ini" Me.lblMain.Backcolor = iNi.Value("Color", "MainLable") Прикреплённый файлclsInI.cls (13.03 Кбайт, скачиваний: 876) |