?? 靈活使用vb的app對象.txt
字號:
在Visual Basic 的編程實踐中,App 是非常重要的全局對象。合理使用該對象開發(fā)程序可以大大節(jié)約開發(fā)時間,并且能實現(xiàn)用其他方法很難達到的目標。下面便是作者在用Visual Basic 開發(fā)應用程序時得到的一些技巧和體會。
一、避免重復運行同一個程序?qū)嵗?App 對象的PrevInstance 屬性返回一個邏輯值,該值指示是否已經(jīng)有前一個應用程序?qū)嵗谶\行。有時我們開發(fā)的程序每次只想運行一個實例,當用戶重復運行該程序時,能提醒用戶該程序已經(jīng)運行,并自動退出。要實現(xiàn)上述功能,只需在應用程序中添加一個模塊,在該模塊中加入啟動過程Sub Main,將如下代碼加到Sub Main 中即可。
If App.PrevInstance Then
Msg = " 系統(tǒng)正在運行,請在下面任務欄尋找系統(tǒng)的最小化圖標。"
Style = vbOKOnly + vbExclamation + vbDefaultButton2
Title = "警告!"
Response = MsgBox(Msg, Style, Title)
Exit Sub '結(jié)束本次運行
End If
二、在系統(tǒng)任務列表中隱藏應用程序
App 對象的T a s k V i s i b l e 屬性返回或設置一個值(boolean 布爾表達式的值),用來確定應用程序是否出現(xiàn)在系統(tǒng)任務列表中。缺省值為True,表示應用程序出現(xiàn)在任務列表窗口中;若設置為False,則應用程序不出現(xiàn)在任務列表窗口中。利用該屬性可以使應用程序的標題不出現(xiàn)在Alt+Ctrl+Del 彈出的任務列表窗口中,從而避免應用程序被用戶強行終止。
注意:應用程序啟動并顯示其界面后,TaskVisible 屬性就會被自動設置為默認值True。另外,可以通過設置Title屬性來改變應用程序在任務列表窗口顯示的名稱,否則將顯示工程名。舉個例子:在FORM上建立一個CommandButton控件Command1,加入如下代碼:
Private Sub Form_Load()
App.Title = "這是一個演示如何隱藏應用程序的示例"
End Sub
Private Sub Command1_Click()
If App.TaskVisible Then
App.TaskVisible = False
Else
App.TaskVisible = True
End If
End Sub
運行該程序,并用Alt+Ctrl+Del 彈出任務列表窗口觀察,然后不斷點擊Command1,看有何變化。
三、實現(xiàn)與具體路徑無關的應用程序
開發(fā)程序時往往希望程序無論COPY 到哪個目錄下都能正常運行,也就是程序與具體的應用程序所在的路徑無關。你可以這樣做:在應用程序中添加一個模塊,在該模塊中加入啟動過程Sub Main,將如下代碼加到模塊中。
Public mypass As String '聲明為全局變量
Sub Main()
mypath = App.Path
.. '其余程序部分
..
End Sub
在程序中凡是涉及到路徑的地方,用mypath 代替絕對路徑。例如:假設需要通過Data 控件Data1 來操作應用程序目錄下的localdatabase 子目錄下的user.mdb,user.mdb 包含有test 表。將如下代碼加入該控件所在的FORM的LOAD事件中,就可實現(xiàn)對user.mdb 的操作與絕對路徑無關。
Data1.DatabaseName = mypath + "\localdatabase\user.mdb"
Data1.RecordSource = "select * from test"
Data1.Refresh
四、應用程序的版本管理
與應用程序版本有關的屬性有:Revision 屬性、Major屬性、Minor 屬性。Revision 屬性返回工程的修訂版本號,該屬性在運行時是只讀的;Major 屬性返回工程的主版本號,該屬性在運行時是只讀的;Minor 屬性返回工程的小版本號,該屬性在運行時是只讀的。要設置工程的有關版本,可以在設計時用位于“工程屬性”對話框中的“生成”選項卡上相對應的框設置這些屬性。
“修訂版本號”反應的是對工程的修改信息,如果將“工程屬性”對話框中的“生成”選項設置為“自動加”,則每當工程編譯一次(編譯為.EXE 文件),Revision 屬性的值自動累加1。而Major 屬性、Minor 屬性才是我們通常提到的應用軟件的版本。例如要設置軟件的版本號為3.4,只需在工程設計時,將Major 屬性設置為3,Minor 屬性設置為4。軟件運行時如果要顯示版本號,可參考如下語句:MsgBox "系統(tǒng)版本為:"+Str(App.Major) + "." + Trim(Str(App.Minor))運行該語句,將彈出一消息對話框顯示“系統(tǒng)版本為:3.4”。
五、應用程序的日志操作
A p p 對象支持應用程序日志的操作,與此相關的有LogMode 屬性、L o g P a t h 屬性、L o g E v e n t 方法和StartLogging 方法。下面說說這些屬性和方法的功能及日志操作的步驟。
1.首先用StartLogging方法對某個操作的日志目標及日志模式進行設置。
語法格式:App.StartLogging logTarget, logModelogTarget 是一個字符串,用于指定一個用于記錄日志的文件名。logMode 是一個整數(shù)值,它決定如何記入日志,一般將其置為vbLogAuto。另外,LogPath 屬性、LogMode 屬性在設計階段不可用,且在運行階段為只讀,因此不能直接對這兩個屬性進行賦值,只能通過StartLogging 方法改變。
2 . 用L o g E v e n t 方法把某個事件記入日志。在WindowsNT 平臺上,該方法會把內(nèi)容寫到NT 的Event 日志中。在Windows9X平臺上,該方法會把內(nèi)容寫到LogPath屬性指定的文件中。按照缺省規(guī)定,如果不指定文件,事件將被寫入vbevents.log 文件中。
語法格式:App.LogEvent logBuffer, eventType
其中:logBuffer 是要寫入到日志中的信息;eventType是可選的,它指定了事件的類型。下面是eventType 的設置值:
常量名常數(shù)值描述
VbLogEventTypeError 1 錯誤
VbLogEventTypeWarning 2 警告
VbLogEventTypeInformation 4 信息
3 . 程序運行過程中如果需要了解日志文件路徑及文件名、日志寫入模式,你可以讀取LogMode 屬性和LogPath屬性的值。下面是一個簡單的程序示例:
App.StartLogging App.Path + "\mylog.log", vbLogAuto
App.LogEvent "一切正常", VbLogEventTypeInformation
MsgBox App.LogPath
MsgBox App.LogMode
需要注意的是,對日志操作的方法和屬性只有在程序被編譯為EXE 文件后才能發(fā)揮作用,在Visual Basic 調(diào)試環(huán)境下無效。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -