注册 登录
编程论坛 VB6论坛

(关于文本控件属性值保存的问题)我需要自动保存一些设置好的信息该怎么写呢!

qiziyun 发布于 2013-01-22 12:05, 1978 次点击

只有本站会员才能查看附件,请 登录

这个代码是我搜来的!
程序代码:
Private Sub Form_Load()
    Me.Width = GetSetting(App.Title, Me.Name, "Width", 7200)
Me.Height = GetSetting(App.Title, Me.Name, "Height", 6300)
Me.Top = GetSetting(App.Title, Me.Name, "Top", 100)
Me.Left = GetSetting(App.Title, Me.Name, "Left", 100)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Call SaveSetting(App.Title, Me.Name, "Width", Me.Width)
    Call SaveSetting(App.Title, Me.Name, "Height", Me.Height)
    Call SaveSetting(App.Title, Me.Name, "Top", Me.Top)
    Call SaveSetting(App.Title, Me.Name, "Left", Me.Left)
End Sub
我需要自动保存一些设置好的信息该怎么写呢!列入我填写好一些控件里的信息!可以点击
保存键或者不点击在我关闭工具的时候可以自动保存,打开后自动读取!只用保存一次设置的信息就可以!如果有新信息要输入!我可以点击清除从新设置!
我搜了一下相关资料,像我这样只保存这么一点信息的花可以不用生成TXT或者INI或者数据库!,实现这样的功能我应该怎么写代码呢!!各位师傅帮帮忙了!!谢谢了!!

一下是建立好的工程!方便帮助我的师傅们就不用创建界面了!!
只有本站会员才能查看附件,请 登录
15 回复
#2
bczgvip2013-01-22 12:55
程序代码:
Option Explicit

Private Sub Command1_Click()
    SaveSettingEx Text1, Text2, Text3, Text4, Text5, Text6
End Sub

Private Sub Command2_Click()
    DeleteSettingEx Text1, Text2, Text3, Text4, Text5, Text6
End Sub

Private Sub Form_Load()
    Me.Width = GetSetting(App.Title, Me.Name, "Width", 7200)
    Me.Height = GetSetting(App.Title, Me.Name, "Height", 6300)
    Me.Top = GetSetting(App.Title, Me.Name, "Top", 100)
    Me.Left = GetSetting(App.Title, Me.Name, "Left", 100)
    GetSettingEx Text1, Text2, Text3, Text4, Text5, Text6
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Me.WindowState <> vbMinimized Then '最小化退出有点问题。负值
        Call SaveSetting(App.Title, Me.Name, "Width", Me.Width)
        Call SaveSetting(App.Title, Me.Name, "Height", Me.Height)
        Call SaveSetting(App.Title, Me.Name, "Top", Me.Top)
        Call SaveSetting(App.Title, Me.Name, "Left", Me.Left)
    End If
End Sub

Public Sub DeleteSettingEx(ParamArray vControls() As Variant)
    Dim v As Variant
    For Each v In vControls
        If TypeOf v Is TextBox Then ' 可以自行添加别的控件设置 CommandButton TextBox 等
            Call DeleteSetting(App.Title, Me.Name, v.Name)
        End If
    Next
End Sub

Public Sub GetSettingEx(ParamArray vControls() As Variant)
    Dim v As Variant
    For Each v In vControls
        If TypeOf v Is TextBox Then ' 可以自行添加别的控件设置 CommandButton TextBox 等
            v.Text = GetSetting(App.Title, Me.Name, v.Name, "默认值") '默认值自己设置
        End If
    Next
End Sub

Public Sub SaveSettingEx(ParamArray vControls() As Variant)
    Dim v As Variant
    For Each v In vControls
        If TypeOf v Is TextBox Then
            Debug.Print Me.Name, v.Name, v.Text
            Call SaveSetting(App.Title, Me.Name, v.Name, v.Text)
        End If
    Next
End Sub
可以自己用了。。。话说,咱一般都是用INI的呐,这个也不错。
#3
qiziyun2013-01-22 13:15
回复 2楼 bczgvip
那bczgvip 这个是不用INI的吧!我数据不多!如果用INI是不是没必要呢?
那如果要使用INI在你现在这个代码里需要怎么修改来实现嗯!!!

感谢死你了!呵呵
#4
qiziyun2013-01-22 13:16
回复 2楼 bczgvip
对了!!不用声明吗!!!?
#5
qiziyun2013-01-22 13:20
回复 2楼 bczgvip
bczgvip
我测试了!!我点清除出现出错!!!!
#6
bczgvip2013-01-22 18:20
自己写错误处理吧,不存在则出错。
#7
qiziyun2013-01-22 20:17
回复 6楼 bczgvip
        If TypeOf v Is COMBOBox Then ' 可以自行添加别的控件设置 CommandButton TextBox 等
            v.LIST = GetSetting(App.Title, Me.Name, v.Name, "默认值") '默认值自己设置
        End If
v.LIST 在这是不是应该加索引哦。bczgvip拜托了。你帮我处理一下啦
#8
qiziyun2013-01-23 04:30
回复 6楼 bczgvip
bczgvip   我想加个ListBox,这样就不用那么多TEXT了!!但是怎么改都出错!
 v.List1 = GetSetting(App.Title, Me.Name, v.Name, "List1.List")  这个出错!
v.Text = GetSetting(App.Title, Me.Name, v.Name, "List1.List") 这样能运行!但是保存之会出现Form1         List1  没有值!

ListBox要赋值或者让TEXT获得值是 Text1 = List1.List(1)这个是获得第2个选项里的值对吧!Text1 = List1.List(List1.ListIndex)这是选择赋值对吧!
我是什么地方书写不对呢!!!还是不用应该这么写??

 v.Text = GetSetting(App.Title, Me.Name, v.Name, "0")
        
v.Name这个不是名称名可以填写List1,但是填写后都不对!!!!!

[ 本帖最后由 qiziyun 于 2013-1-23 05:50 编辑 ]
#9
bczgvip2013-01-23 14:07
list1.additem "123"
list1.list(0) = "456" '要添加数据才能改呐。
你要做啥?话说通宵编程?有毅力。
程序代码:
Public Sub GetSettingEx(ParamArray vControls() As Variant)
#Const DEBUG_TYPE = False 'True False
#If DEBUG_TYPE Then
    Dim v As ListBox
#Else
    Dim v As Variant
#End If
    For Each v In vControls
        If TypeOf v Is TextBox Then ' 可以自行添加别的控件设置 CommandButton TextBox 等
            v.Text = GetSetting(App.Title, Me.Name, v.Name, "默认值") '默认值自己设置
        ElseIf TypeOf v Is ListBox Then
            Dim i As Long, n As Long
            n = GetSetting(App.Title, Me.Name, v.Name, 1) '0
            For i = 0 To n - 1
                v.AddItem GetSetting(App.Title, Me.Name, v.Name & i, "默认值")
            Next
        End If
    Next
End Sub
#10
qiziyun2013-01-23 15:37
回复 9楼 bczgvip
昨晚看电影看晚了!然后就改改看!结果一直出错
#11
qiziyun2013-01-23 16:01
这条好像只是读取的对吧我要自己+储存是吗!
#12
qiziyun2013-01-23 16:11
回复 9楼 bczgvip
兄弟!!我看这代码意思应该是-1表示从头开始往下循环获取全部List里的值对吧!!我想我选那一个就保存那一个就行了!!我下个绿色版VB打开看看!!
#13
qiziyun2013-01-23 16:43
回复 9楼 bczgvip
我用的ListBox控件是下拉选择的
#14
bczgvip2013-01-23 17:25
textbox 知道你要干什么,用到listbox 就实在不明白了。
listbox 一般都是添加些动态数据。
#15
qiziyun2013-01-23 18:12
回复 14楼 bczgvip
是啊就是添加随时可以方便改动的,就不用那么多TEXT了,用一两个就可以了,其他可以用拉下控件来搭配
#16
风吹过b2013-01-24 11:29
我喜欢用 INI 文件来保存设置。
主要原因就是 可以手动改。
另外一个好处就是 INI 文件 可以复制设置文件到另一台电脑,如果写注册表,需要重新设置。

封装好了函数后,调用都是一样的。
1