我是一个新手,在构建一个程序的时候常常遇到这样的问题,一个控件的属性值运行过程中被改变了,但下次运行时,又是设计时的初始值.拿一个比较常用的控件Checkbox来说吧.当我在程序运行时,将checkbox的value属性值设置为1,但当下次运行时,又变回0.(设计时为0)
    请问各位,怎么样才能使它的属性值能在运行时改变,而且能在下次运行时,还保持上次更改后的值呢?

解决方案 »

  1.   

    写到注册表里是一个办法,不过你也可以把它存到一个INI文件里。把下面的代码放到一个模块里。
    你可以按你的要求修改"setup.ini"为你要保存的ini文件名字。
    然后,拿个例子说吧,Checkbox 在其事件click的时候,保存其属性值,
    setinis("control","checkbox1",checkbox1.value)而在checkbox所在的页面load的时候,读出它的值getinis("control","checkbox1",0)Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
    Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
    Public Function GetIniS(ByVal SectionName As String, ByVal keyWord As String, ByVal DefString As String) As String
        Dim ResultString As String * 144, temp As Integer
        Dim s As String, i As Integer
        temp% = GetPrivateProfileString(SectionName, keyWord, "", ResultString, 144, App.Path & "\setup.ini")
    '‘检索关键词的值
    If temp% > 0 Then '‘关键词的值不为空
        s = ""
        For i = 1 To 144
            If Asc(Mid$(ResultString, i, 1)) = 0 Then
                Exit For
            Else
                s = s & Mid$(ResultString, i, 1)
            End If
        Next
    Else
        temp% = WritePrivateProfileString(SectionName, keyWord, DefString, App.Path & "\setup.ini")
        '‘将缺省值写入INI文件
        s = DefString
    End If
    GetIniS = s
    End FunctionPublic Function SetIniS(ByVal SectionName As String, ByVal keyWord As String, ByVal ValStr As String)
    Dim res%
    res% = WritePrivateProfileString(SectionName, keyWord, ValStr, App.Path & "\setup.ini")
    End Function
      

  2.   

    实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。
    退出时保存控件值,启动时读出并赋值。
      

  3.   

    实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。
    退出时保存控件值,启动时读出并赋值。
      

  4.   

    你在form上放一个CheckBox  加上下面的代码试试:
    Option Explicit
    Private Sub Form_Load()
       Check1.Value = GetSetting("myapp", "Startup", "Check", 0)
       DeleteSetting "MyApp", "Startup"   
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
         SaveSetting "MyApp", "Startup", "Check", Check1.Value
    End Sub
      

  5.   

    不好意思,我好久没有来了,我还想问一下,faysky2的方法"savesetting"的值保存在什么地方呀 ?为什么第一次运行时,"deltetsetting"出错呢?