在做學生管理系統中,由於並不太理解函數的意思,前幾天就在程式的後面多寫了兩個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 SubPrivate 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 IfEnd 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", _ intLastEntryEnd 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 intLastEntryEnd 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 intXEnd 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