怎样保存控件的属性值.
我是一个新手,在构建一个程序的时候常常遇到这样的问题,一个控件的属性值运行过程中被改变了,但下次运行时,又是设计时的初始值.拿一个比较常用的控件Checkbox来说吧.当我在程序运行时,将checkbox的value属性值设置为1,但当下次运行时,又变回0.(设计时为0)
请问各位,怎么样才能使它的属性值能在运行时改变,而且能在下次运行时,还保持上次更改后的值呢?
问题点数:50、回复次数:11Top
1 楼bluesky23(乐天_正在开发右半脑。。。^_^)回复于 2005-09-20 20:31:51 得分 0
需要写注册表。
不过哲中一下感觉还是在程序中写代码控制来得方便。Top
2 楼All_Heart(问个底儿掉)回复于 2005-09-20 20:37:47 得分 0
能否说的具体一点啊.Top
3 楼szjhxu(天野)回复于 2005-09-20 20:58:37 得分 0
在你退出应用程序时,把要保存状态的控件的相关属性值存到文件中。下次打开时,再从文件里读出。Top
4 楼tutu83612(兔兔)回复于 2005-09-21 08:35:59 得分 20
写到注册表里是一个办法,不过你也可以把它存到一个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 Function
Public 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
Top
5 楼of123()回复于 2005-09-21 08:43:07 得分 0
实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。
退出时保存控件值,启动时读出并赋值。Top
6 楼domhuang(不名)回复于 2005-09-21 08:45:55 得分 0
退出的时候保存 开始运行的时候载入Top
7 楼xxw19820907(文)回复于 2005-09-21 09:33:08 得分 0
实际上就是保存到你能读写的文件中。无论注册表、INI文件、数据库还是TXT文件,什么都行。
退出时保存控件值,启动时读出并赋值。
Top
8 楼faysky2(出来混,迟早是要还嘀)回复于 2005-09-21 09:39:01 得分 30
你在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 SubTop
9 楼jxgzay(jxgzay)回复于 2005-09-21 10:31:31 得分 0
将属性值写入文件或数据库,加载时读入并赋值给属性。Top
10 楼wjtgatow(问个底儿掉)回复于 2005-09-22 18:44:09 得分 0
faysky2的方法挺方便的.Top
11 楼All_Heart(问个底儿掉)回复于 2005-09-24 20:04:13 得分 0
不好意思,我好久没有来了,我还想问一下,faysky2的方法"savesetting"的值保存在什么地方呀 ?为什么第一次运行时,"deltetsetting"出错呢?Top




