小弟的窗体上有一个按钮command1_click()
还有20个textbox,分别是text1.text--text20.text现在我需要在这20个textbox中输入数字,然后点击command按钮,就可以自动保存这20个参数。哪位大大能帮忙给出详细代码?欢迎各位不吝赐教
还有20个textbox,分别是text1.text--text20.text现在我需要在这20个textbox中输入数字,然后点击command按钮,就可以自动保存这20个参数。哪位大大能帮忙给出详细代码?欢迎各位不吝赐教
Private Sub Form_Load()
Check1.Value = GetSetting("AppCheck", "Check", "CheckValue")
Text1.Text = GetSetting("AppText", "Text", "TextValue")
DeleteSetting "AppCheck", "Check", "CheckValue"
DeleteSetting "AppText", "Text", "TextValue"
End Sub'保存设置值到注册表
Private Sub Form_Unload(Cancel As Integer)
SaveSetting "AppCheck", "Check", "CheckValue", Check1.Value
SaveSetting "AppText", "Text", "TextValue", Text1.Text
End Sub
从 Windows 注册表中的应用程序项目返回注册表项设置值。语法GetSetting(appname, section, key[, default])GetSetting 函数的语法具有下列命名参数:部分 描述 appname 必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。
section 必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。
key 必要。字符串表达式,返回注册表项设置的名称。
default 可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。
说明如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。=============================================================================SaveSetting 语句
在 Windows 注册表中保存或建立应用程序项目。语法SaveSetting appname, section, key, settingSaveSetting 语句的语法具有下列命名参数:部分 描述 appname 必要。字符串表达式,包含应用程序或工程的名称,对这些应用程序或工程使用设置
section 必要。字符串表达式,包含区域名称,在该区域保存注册表项设置。
key 必要。字符串表达式,包含将要保存的注册表项设置的名称。
setting 必要。表达式,包含 key 的设置值。
说明如果无论如何也不能保存注册表项设置,则将导致错误发生。
----------------------------------------------
是的
如果是的话,那么有没有一个效率更高的办法?
-------------------------------------------
同楼上,如果数据不是很重要的话,建议保存到文本文件
'写文件操作
Public Function WriteFile(strWhat As String, strFilePath As String, strFileName As String) As Boolean
WriteFile = False
On Error GoTo ErrorHandl
Dim txtFile As String
Dim intFlag As Integer
txtFile = strFilePath & strFileName
intFlag = 8
If fso.FileExists(txtFile) = False Then
fso.CreateTextFile txtFile, True
intFlag = 2
End If
Set fFile = fso.GetFile(txtFile)
Set ts = fFile.OpenAsTextStream(intFlag, -2)
ts.WriteLine (strWhat)
ts.Close
WriteFile = True
Exit Function
ErrorHandl:
End Function
Dim fso As New FileSystemObject
Dim fFile As File
Dim ts As TextStream
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As LongDeclare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As LongDeclare Function WritePrivateProfileString_A Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'读取.ini文件的某个键值
Public Function ReadFile_To_ini(appName As String, KeyName As String, filename As String) As String
Dim s As String * 256
On Error GoTo ErrorHandl
GetPrivateProfileString appName, KeyName, "", s, 256, filename
ReadFile_To_ini = s
Exit Function
ErrorHandl:
End Function'写.ini文件
Public Function WriteFile_To_ini(appName As String, KeyName As String, AddString As String, filename As String) As Boolean
WriteFile_To_ini = False
On Error GoTo 0
WritePrivateProfileString_A appName, KeyName, AddString, filename
WriteFile_To_ini = True
End Function'删除.ini文件中的某部分
Public Function DeleteFile_To_ini(appName As String, KeyName As String, filename As String) As Boolean
DeleteFile_To_ini = False
On Error GoTo ErrorHandl
WritePrivateProfileString appName, KeyName, 0&, filename
DeleteFile_To_ini = True
Exit Function
ErrorHandl:
End Function'删除.ini文件中主键部分
Public Function DeleteFile_To_iniKey(appName As String, filename As String) As Boolean
DeleteFile_To_iniKey = False
On Error GoTo ErrorHandl
WritePrivateProfileSection appName, 0&, filename
DeleteFile_To_iniKey = True
Exit Function
ErrorHandl:
End Function'在.ini文件中,根据某个键值,删除此键所在的项的所有键值
Public Function Delete_AllKeyValue_iniKey(KeyValue As String, filename As String) As Boolean
Dim temp As Integer
Dim tar As String
Dim appName() As String
Dim key_Name() As String
Dim varString As String
Dim i As Integer
Dim j As Integer
Dim tempVar As String
Dim tempArray() As String
Dim str As String Delete_AllKeyValue_iniKey = False
appName = ReadAllFile_To_iniApp(filename)
'根据键值找到项值
For i = LBound(appName) To UBound(appName) - 2
key_Name = ReadAllFile_To_iniKey(appName(i), filename)
For j = LBound(key_Name) To UBound(key_Name) - 2
varString = objStr.My_RightTrim(ReadFile_To_ini(appName(i), key_Name(j), filename))
If KeyValue = varString Then
str = appName(i) '项值已经找到
Exit For
End If
Next
Next
If DeleteFile_To_iniKey(str, filename) Then Delete_AllKeyValue_iniKey = True
End Function用api更简单了
-----------------------------------
用Open语句来做就够了:
Private Sub Command1_Click()
Open App.Path & "\test.txt" For OutPut As #1
Write #1,Text1.Text
Close #1
End Sub
Private Sub Command1_Click()
Open App.Path & "\test.txt" For OutPut As #1
Write #1,Text1.Text
Close #1
End Sub--------------------------------系统说实时错误424。。
---------------------------
缺少对象,你的窗体上没有Text1控件吧?
上面的代码 是把Text的内容写到 当前目录下的test.txt文件里
上面的代码 是把Text的内容写到 当前目录下的test.txt文件里
-------------------请问怎么添加?text1.text我的窗体上有啊。要新建一个text.txt文件么?
-----------------------------------
不是的,你的Text1控件是不是做成了数组呀。
如果你的Text1控件是数组的话(也就是它的Index属性不为空,而是一个数字),请把上面的代码改为这样:Private Sub Command1_Click()
Dim i%
Open App.Path & "\test.txt" For OutPut As #1
For i=0 to Text1.Count-1
Write #1,Text1(i).Text '把控件数组的内容写入文件里
Next
Close #1
End Sub
如果你的Text1控件是数组的话(也就是它的Index属性不为空,而是一个数字),请把上面的代码改为这样:Private Sub Command1_Click()
Dim i%
Open App.Path & "\test.txt" For OutPut As #1
For i=0 to Text1.Count-1
Write #1,Text1(i).Text '把控件数组的内容写入文件里
Next
Close #1
End Sub=========================不是数组,麻烦你看看我上面说的问题怎么解决?这么做每次只能保存一个数字在test.txt里面,而且下一次打开的时候还要重新输入参数
------------------------------------------
做成控件数组,代码会少写一些
做控件数组方法:[1]把那20个控件的都改为一样的名称,把它们的Index属性改为从0到19
或[2]把那些Text控件都删掉,只保留一个,然后复制它,再粘贴到窗体上,它会有 是否创建 控件数组的提示,选择是,然后继续粘贴,知道够了20个写入数据:Private Sub Command1_Click()
Dim i%, strTmp As String
For i = Text1.LBound To Text1.UBound
strTmp = strTmp & Text1(i).Text & ","
Next
strTmp = Left(Trim(strTmp), Len(Trim(strTmp)) - 1)
Open App.Path & "\test.txt" For Output As #1
Print #1, strTmp '把控件数组的内容写入文件里
Close #1
End Sub读取数据:Private Sub Form_Load()
Dim i%, strTmp As String, strArr() As String
Open App.Path & "\test.txt" For Binary As #1
strTmp = Space(LOF(1))
Get #1, 1, strTmp
Close #1
strArr = Split(strTmp, ",")
For i = LBound(strArr) To UBound(strArr)
Text1(i).Text = strArr(i)
Next
End Sub
Form2里:
Private Sub Command1_Click()
MsgBox Form1!Text1(0).Text
End Sub