Я сделал (разработал) программу в Visual Basic 6.0, она состоит примерно из 100 флажков, программа не требует никакого кода, просто программа типа флажка да/нет, но я хочу сохранить состояние флажка, так что если флажок коробка находится в состоянии «да», после перезапуска программы ее состояние сохраняется. Я читал о My.Settings.Save, но не знаю, как его использовать, я использую Visual Basic 6.0.
Есть ли способ сохранить состояние флажка программы, созданной в Visual Basic 6.0
Ответы (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
Это не работает, вот полный код программы: 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
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
@Rahul Sharma: Нет необходимости помещать тот же код в событие Form_Load()! Если вам не нравится событие Initialize, сделайте это в событии Load, но не дважды.
- person FaneDuru; 16.12.2019
@ Рахул Шарма: боюсь, ты не понял код. Вы должны использовать
Check1_Change event
, а не Click
событие...
- person FaneDuru; 16.12.2019
@Rahul Sharma: каждый раз, когда вы меняете значение флажка, это запоминается в реестре и будет восстановлено, когда вы перезагрузите форму.
- person FaneDuru; 16.12.2019
@Rahul Sharma: Чтобы получить помощь, вы должны прийти с отзывом. Что значит не работает? Вы получаете сообщение об ошибке? Ни какой ошибки, но ничего не происходит? В таком случае я бы посоветовал вам создать две новые кнопки. В первом экземпляре кода:
SaveSetting "TestApp", "Settings", "TestKey", "Write test"
, а во втором MsgBox GetSetting("TestApp", "Settings", "TestKey", "No value")
. Запустите первый код кнопки, а затем второй. Какой текст отображается в окне сообщения?
- person FaneDuru; 17.12.2019