多两个“0”带来的思考

   在做学生管理系统中,由于并不太理解函数的意思,前几天就在程序的后面多写了两个0

Private Sub MDIForm_Load()      '从注册表中取得上次关闭MDIForm时的大小
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 30000)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 30000)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 80000)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 80000)
    
End Sub


    原来的文章本应该是

Private Sub MDIForm_Load()      '从注册表中取得上次关闭MDIForm时的大小
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 300)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 300)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 800)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 800)
    
End Sub

    当时并没有做任何记录,异地访问的过程当中,数据库能连上是没有任何问题,但是就是加载的登录界面就消失了,没有任何反应、提示错误之类的,后来在师傅的指导下,才发现这个问题,是由于多了两个0,是窗体的大小不能显示出来了,超出了屏幕的显示范围。我还以为真的消失了呢?

    发现自己的问题:第一:没有及时的记录

                 第二:没有遵循严格的编程标准

                 第三:没有及时的学习相关的知识

                 第四:思考的还是太少,考虑不全,“为人民服务的宗旨”落实的不好

    随后进行了相关知识的学习

VB之savesetting|GetSetting用法(保存与索取数据)
VB 中提供了用于访问注册表的方法

GetSetting 函数, 从 Windows 注册表中的应用程序项目返回注册表项设置值。SaveSetting 语句, 在 Windows 注册表中保存或建立应用程序项目。

DeleteSetting 语句, 在 Windows 注册表中,从应用程序项目里删除区域或注册表项设置。

GetAllSettings 函数, 从 Windows 注册表中返回应用程序项目的所有注册表项设置及其相应值(开始是由 SaveSetting 产生)。

诸如窗口位置、使用的文件以及其它项目等程序设置值是存储在各种 .ini 文件中。在 Windows NT、Windows 95 以及 Windows 的较新版本中,这些程序设置值则是存储在系统注册位置中。

Visual Basic 提供了一个标准的注册位置以存储创建于 Visual Basic 的应用程序的程序信息:

HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key

    GetSetting 函数 从 Windows 注册表中的应用程序项目返回注册表项设置值。语法GetSetting(appname, section, key[, default])GetSetting 函数的语法具有下列命名参数:部分描述appname必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。section必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。key必要。字符串表达式,返回注册表项设置的名称。default可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。说明如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。 
  该方法其实读取,注册表中HKEY_CURRENT_USER\Software\VB and VBA Program Settings下相应的值。
  ------------------------------------
  语法
  GetSetting(appname, section, key[, default])
  GetSetting 函数的语法具有下列命名参数:
  部分 描述
  appname 必要。字符串表达式,包含应用程序或工程的名称,要求这些应用程序或工程有注册表项设置。
  section 必要。字符串表达式,包含区域名称,要求该区域有注册表项设置。
  key 必要。字符串表达式,返回注册表项设置的名称。
  default 可选。表达式,如果注册表项设置中没有设置值,则返回缺省值。如果省略,则 default 取值为长度为零的字符串 ("")。
  说明
  如果 GetSetting 的参数中的任何一项都不存在,则 GetSetting 返回 default 的值。
 

Private Sub MDIForm_Load()      '从注册表中取得上次关闭MDIForm时的大小
    Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 3000)
    Me.Top = GetSetting(App.Title, "Settings", "MainTop", 30000)
    Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 80000)
    Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 80000)
    
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
    If Me.WindowState <> vbMinimized Then
        SaveSetting App.Title, "Settings", "MainLeft", Me.Left
        SaveSetting App.Title, "Settings", "MainTop", Me.Top
        SaveSetting App.Title, "Settings", "MainWidth", Me.Width
        SaveSetting App.Title, "Settings", "MainHeight", Me.Height
    End If
End Sub


在加载多文档界面时,选定多文档界面的大小和位置是从保存的第一次打开的位置。将注册表中第一次打开多文档界面窗体的位置显示出来。

而在下载窗体时,将保存此次开始打开多文档界面的位置。    上边这两段代码的作用就是:程序退出时保存在屏幕上的显示位置记主窗体的大小,再次打开程序时主窗体就显示在上次关闭时的位置处,而且大小也和上次关闭时的大小相同。

 

 
   Visual Basic 也提供了四个语句或函数来处理存储在应用程序注册位置的程序设置值。

函数或语句 描述
GetSetting 函数 检索注册表设置值。
SaveSetting 语句 保存或创建注册表设置值。
GetAllSettings 函数 返回一个包含多项注册表设置值的数组。
DeleteSetting 语句 删除注册表设置值。

创建或保存应用程序设置值

   可以使用 SaveSetting 语句将一个新值保存至存储于应用程序注册位置中的注册表项中。例如,可以向应用程序的主窗体中的 Form_Unload 事件添加代码以便在停机时保存设置值,或者向“选项”对话框的 Form_Unload 事件添加代码以便更新的首选项。

按以下语法使用 SaveSetting 语句:

SaveSetting appname, section, key, value


下列代码保存 Backup 和 LastEntry 表项的新值,这些表项包含在名为“RegCust”的应用程序的注册位置的启动部分。该代码假设变量 strDate 和 intLastEntry 包含有新的值。
Private Sub Form_Unload(Cancel As Integer)
    SaveSetting "RegCust", "Startup", "Backup", strDate
    SaveSetting "RegCust", "Startup", "LastEntry", _
    intLastEntry
End Sub



如果在注册位置的 Software/Microsoft 部分没有应用程序“RegCust”的注册项、或者没有这些指定的部分或注册表项,该代码将创建它。检索应用程序设置值可以使用 GetSetting 和 GetAllSettings 函数检索存储在应用程序注册位置的注册值。例如,应用程序能够检索注册表设置值以便在它被关闭时重新建立其条件。一次检索一项设置值如果仅检索一项注册表设置值,通过以下的语法使用 GetSetting 函数:GetSetting(appname, section, key[, default])下列代码检索“RegCust”应用程序启动部分的 LastEntry 表项的值,并将该值显示在立即窗口中。
Private Sub Form_Load()
    Dim intLastEntry As Integer
    intLastEntry = GetSetting("RegCust", "Startup", _
    "LastEntry", "0")
    Debug.Print intLastEntry
End Sub


应注意,可以使用可选的参数 default 设置,当注册位置中指定的表项没有值时由 Visual Basic 返回的值。一次检索多项设置值如果检索多项注册表项的值,通过以下的语法使用 GetAllSettings 函数:GetAllSettings(appname, section)下列代码检索“RegCust”应用程序启动部分的两栏注册表项的值,并将其结果显示在立即窗口中。
Private Sub Form_Load()
    Dim avntSettings As Variant
    Dim intX As Integer
    avntSettings = GetAllSettings("RegCust", "Startup")
    For intX = 0 To UBound(avntSettings, 1)
       Debug.Print avntSettings(intX, 0), _
       avntSettings(intX, 1)
    Next intX
End Sub


删除应用程序设置值可以使用 DeleteSetting 语句删除注册表项、注册部分或者应用程序注册位置。例如,当卸载一个应用程序时,也许希望删除该应用程序的所有注册表信息。通过以下语法使用 DeleteSetting 语句:DeleteSetting(appname, section, key)下列代码删除“RegCust”应用程序启动部分中的 LastEntry 注册表项。
Private Sub cmdDelKey_Click()
    DeleteSetting "RegCust", "StartUp", "LastEntry"
End Sub


下列代码删除“RegCust”应用程序注册位置的整个 StartUp 部分。
Private Sub cmdDelSection_Click()
    DeleteSetting "RegCust", "StartUp"
End Sub


下列代码删除“RegCust”应用程序整个注册位置。
Private Sub cmdUnInstall_Click()
    DeleteSetting "RegCust"
End Sub


   

posted on 2012-07-26 11:39  哼哼唧唧  阅读(135)  评论(0编辑  收藏  举报

导航