Есть ли способ сохранить состояние флажка программы, созданной в Visual Basic 6.0

Я сделал (разработал) программу в Visual Basic 6.0, она состоит примерно из 100 флажков, программа не требует никакого кода, просто программа типа флажка да/нет, но я хочу сохранить состояние флажка, так что если флажок коробка находится в состоянии «да», после перезапуска программы ее состояние сохраняется. Я читал о My.Settings.Save, но не знаю, как его использовать, я использую Visual Basic 6.0.


person Rahul Sharma    schedule 16.12.2019    source источник


Ответы (1)


Создайте ключи в реестре, сохраните значение каждого флажка в их флажке. Изменить событие и загрузите статус каждого из них в форме Инициализировать код события.

Option Explicit

Private Const MyApp As String = "My Own App" 'put here your application name
Private Const Sett As String = "Settings"

Private Sub CheckBox1_Change()
    Dim chkBoxStatus As String
    chkBoxStatus = "CheckBox1"
    If Me.CheckBox1.value = True Then
        SaveSetting MyApp, Sett, chkBoxStatus, CStr(True)
    Else
        SaveSetting MyApp, Sett, chkBoxStatus, CStr(False)
    End If
End Sub

Сделайте то же самое для всех ваших флажков. А потом:

Private Sub UserForm_Initialize() 'I do not remember well if VB6 uses Form_Initialize... You must adapt it accordingly.
  Dim regValue As String
  regValue = GetSetting(MyApp, Sett, "CheckBox1", "No value")
  If regValue <> "No value" Then Me.CheckBox1.value = CBool(regValue)
    'do the same for all checkboxes in discussion
    '.
    '.
End Sub

"No value" возвращается, если значение не было установлено в реестре (еще)...

person FaneDuru    schedule 16.12.2019
comment
Это не работает, вот полный код программы: Option Explicit Private Const MyApp As String = Medicine Private Const Sett As String = Settings Private Sub Check1_Click() Dim chkBoxStatus As String chkBoxStatus = Check1 If Me.Check1.Value = True Затем SaveSetting MyApp, Sett, chkBoxStatus, CStr(True) Else SaveSetting MyApp, Sett, chkBoxStatus, CStr(False) End If End Sub ..... Продолжение(1) - person Rahul Sharma; 16.12.2019
comment
Private Sub Form_Initialize() Dim regValue As String regValue = GetSetting(MyApp, Sett, Check1, No value) If regValue ‹› No value Then Me.Check1.Value = CBool(regValue) End Sub Private Sub Form_Load() Dim regValue As String regValue = GetSetting(MyApp, Sett, Check1, No value) If regValue ‹› No value Then Me.Check1.Value = CBool(regValue) End Sub ------------------ -----------КОНЕЦ-------------- - person Rahul Sharma; 16.12.2019
comment
@Rahul Sharma: Нет необходимости помещать тот же код в событие Form_Load()! Если вам не нравится событие Initialize, сделайте это в событии Load, но не дважды. - person FaneDuru; 16.12.2019
comment
@ Рахул Шарма: боюсь, ты не понял код. Вы должны использовать Check1_Change event, а не Click событие... - person FaneDuru; 16.12.2019
comment
@Rahul Sharma: каждый раз, когда вы меняете значение флажка, это запоминается в реестре и будет восстановлено, когда вы перезагрузите форму. - person FaneDuru; 16.12.2019
comment
@Rahul Sharma: Чтобы получить помощь, вы должны прийти с отзывом. Что значит не работает? Вы получаете сообщение об ошибке? Ни какой ошибки, но ничего не происходит? В таком случае я бы посоветовал вам создать две новые кнопки. В первом экземпляре кода: SaveSetting "TestApp", "Settings", "TestKey", "Write test", а во втором MsgBox GetSetting("TestApp", "Settings", "TestKey", "No value"). Запустите первый код кнопки, а затем второй. Какой текст отображается в окне сообщения? - person FaneDuru; 17.12.2019