1.1 Visual Basic 概述
1.Visual Basic是什么 Visual Basic(簡稱VB)是Microsoft公司開發的一種通用的基于對象的程序設計語言。 “Visual” 指的是開發圖形用戶界面 (GUI) 的方法——不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預先建立的對象add到屏幕上的一點即可。 “Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 語言,一種在計算技術發展歷史上應用得最為廣泛的語言。Visual Basic 在原有 BASIC 語言的基礎上進一步發展,至今包含了數百條語句、函數及關鍵詞,其中很多和 Windows GUI 有直接關系。專業人員可以用 Visual Basic 實現其它任何 Windows 編程語言的功能,而初學者只要掌握幾個關鍵詞就可以建立實用的應用程序。Visual Basic Scripting Edition (VBScript) 是廣泛使用的腳本語言,它是 Visual Basic 語言的子集,可嵌入HTML語言中,用于網頁設計,如ASP(Active Server Page)文件。 VB簡單易學,通用性強,用途廣泛。
2. VB的功能 VB可以用于可以開發多媒體、數據庫、網絡、圖形等方面的應用程序。 ¨ 數據訪問特性允許對包括 Microsoft SQL Server 和其它企業數據庫在內的大部分數據庫格式建立數據庫和前端應用程序,以及可調整的服務器端部件。 ¨ 有了 ActiveX(TM) 技術就可使用其它應用程序提供的功能,例如 Microsoft Word 字處理器,Microsoft Excel 電子數據表及其它 Windows 應用程序。 ¨ Internet 能力強大,很容易在應用程序內通過 Internet 或 intranet訪問文檔和應用程序,或者創建 Internet 服務器應用程序。 ¨ 已完成的應用程序是使用Visual Basic 虛擬機真正 .exe 文件,可以自由發布。
3. VB的發展 VB是伴隨Windows操作系統而發展的,在中國使用較廣的版本有VB4.0、VB5.0、VB6.0。 VB4.0是為配合WIN95的問世于1995年推出的,既可用于編寫WIN3.X平臺的16位應用程序也可編寫WIN95平臺的32位應用程序;VB5.0主要用于編寫WIN95平臺的32位應用程序,較之VB4.0主要擴展了數據庫、ActiveX和Internet方面的功能;VB6.0是與WIN98配合于1998年推出的,進一步加強了數據庫、Internet和創建控件方面的功能。
4. VB中幾個常用術語 工程(Project): 是指用于創建一個應用程序的文件的集合。 對象(Object): 可控制的某個東西,VB中主要有兩類對象:窗體和控件。 窗體(Form): 應用程序的用戶界面,即windows。 控件(Control): 指的是各種按鈕、標簽、文本框等。 屬性(Property):是指對象的特征,如大小、標題或顏色。 ActiveX :ActiveX 是基于 Component Object Model (COM) 的可視化控件結構的商標名稱。它是一種封裝技術,提供封裝 COM 組件并將其置入應用程序(如Web 瀏覽器)的一種方法。 Components Object Model (COM): 是軟件組件互相通訊的一種方式。它是一種二進制和網絡標準,允許任意兩個組件互相通訊,而不管它們是在什么計算機上運行(只要計算機是相連的),不管各計算機運行的是什么操作系統(只要該操作系統支持 COM),也不管該組件是用什么語言編寫的。
5. VB的系統特性 (1)工程限制 1)代碼限制: 可被加載到窗體、類或標準模塊的代碼總數限于 65,534 行。一行代碼限于 1023 個字節。在一行中的實際文本之前最多只能有 256 個空格的前導,在一個邏輯行中最多只能有 25 個續行符 ( _)。 2)過程、類型和變量 對每個模塊的過程數沒有限制。每個過程可包含至多 64K 的代碼。如果過程或模塊超過這一限制,Visual Basic 便產生編譯時間錯誤。如果遇到這種錯誤,可將特別大的過程分割成若干個較小的過程,或將模塊級聲明移到另一模塊,來避免此類錯誤發生。 Visual Basic 用表來保存代碼中的標識符名(變量、過程、常量等)。每個表限于 64K。 3)動態鏈接庫聲明表 每個窗體和代碼模塊使用一個描述動態鏈接庫入口點的結構的表。每個結構約 40 個字節,表的大小限于 64K,形成每個模塊大約有 1500 個聲明。 4)工程名表 整個應用程序用一張包含所有名稱的表。這些名稱包括: 常量名 、 變量名 、 自定義的類型定義名、 模塊名、 DLL 過程聲明名。 對工程名表總大小沒有限制,但是區分大小寫的條目不得超過 32K。如果超過了 32K 的限制,可以在不同的模塊中重新使用 private 標識符以限制區分大小寫的條目數到達 32K。 5)輸入表 在不同的模塊中每引用一個標識符,便在輸入表中創建一個條目。每一個這樣的入口最小是 24 字節,但限于 64K,這樣每個模塊大約可以有 2000 個引用。 6)模塊條目表 該表中每個模塊最多達 125 個字節,但有 64K 的總限制,這樣每個工程大約可以產生 400 個模塊。 VB 中的變量名不多于 255 個字符,而窗體、控件、模塊和類名不多于 40 個字符。
(2)工程文件格式
VB 在創建和編譯工程時要產生許多文件,分為:設計時文件、雜項開發文件和運行時文件。
設計時文件是工程的建造塊,例如基本模塊 (.bas) 和窗體模塊 (.frm)。
雜項文件是由 Visual Basic 開發環境中的各種不同的進程和函數產生的,例如打包和展開向導從屬文件 (.dep)。
開發應用程序時會產生各種設計時文件和其它雜項文件,如下表所列:
擴展名 |
描述 |
擴展名 |
描述 |
.bas |
基本模塊 |
.frm |
窗體文件 |
.cls |
類模塊 |
.frx |
二進制窗體文件 |
.res |
資源文件 |
.vbp |
Visual Basic 工程文件 |
.ctx |
用戶控件的二進制文件 |
.pgx |
二進制屬性頁文件 |
.dca |
活動的設計器的高速緩存 |
.ctl |
用戶控件文件 |
.ddf |
打包和展開向導 CAB 信息文件 |
.tlb |
遠程自動化類型庫文件 |
.dep |
打包和展開向導從屬文件 |
.vbg |
Visual Basic 組工程文件 |
.dob |
ActiveX 文檔窗體文件 |
.vbl |
控件許可文件 |
.dox |
ActiveX 文檔二進制窗體文件 |
.dws |
部署向導腳本文件 |
.dsr |
活動的設計器文件 |
.vbr |
遠程自動化注冊文件 |
.dsx |
活動的設計器的二進制文件 |
.vbw |
Visual Basic 工程工作空間文件 |
.log |
加載錯誤的日志文件 |
.vbz |
向導發射文件 |
.oca |
控件類型庫緩存文件 |
.wct |
WebClass HTML 模板 |
.pag |
屬性頁文件 |
|
|
編譯應用程序時,所有必須的設計時文件都被包括在運行時可執行文件中。運行時文件如下表所列:
擴展名 |
描述 |
.dll |
運行中的 ActiveX 部件 |
.exe |
可執行文件或 ActiveX 部件 |
.ocx |
ActiveX 控件 |
.vbd |
ActiveX 文檔狀態文件 |
.wct |
WebClass HTML 模板 |
1.2 VB 6.0 的集成開發環境簡介
VB 集成開發環境 (IDE——Integrated Developing Environment ) 由以下元素組成:
1. 標題欄
用于顯示正在開發或調試的工程名和系統的工作狀態(設計態、運行態、中止態)。
2. 菜單欄
用于顯示所使用的 Visual Basic 命令。VB6.0標準菜單包括:
3. 工具欄
在編程環境下用于快速訪問常用命令。缺省情況下,啟動 VB后顯示“標準”工具欄,附加的編輯、窗體設計和調試的工具 欄可以從“視圖”菜單上的“工具欄”命令中移進或移出。
4. 窗體設計器
用來設計應用程序的界面。啟動VB后,窗體設計器中自動出現一個名為Form1的空白窗體,可以在該窗體中添加控件、圖形和圖片等來創建所希望的外觀,窗體的外觀設計好后,從菜單中選擇“文件”→“保存窗體”→在保存對話框中給出合適的文件名(注意擴展名),并選擇所需的保存位置→確定。需要再設計另一個窗體時,單擊工具欄上的“添加窗體”按鈕即可。
5. 控件(工具)箱
由一組控件按鈕組成,用于設計時在窗體中放置控件。除了缺省的工具箱布局之外,還可以通過從上下文菜單中選定“添加選項卡”并在結果選項卡中添加控件來創建自定義布局。
6. 彈出式(上下文)菜單
在要使用的對象上單擊鼠標右鍵即可打開快捷菜單,其上會出現與當前對象相關的經常執行的操作,以加快操作速度。
7. 工程管理器窗口
用于瀏覽工程中所包含的窗體和模塊,還可以從中查看代碼、查看對象。
8. 屬性窗口
是VB中一個比較復雜的窗口,其中列出了對選定窗體和控件的屬性設置值。VB中正是通過改變屬性來改變對象的特征,如大小、標題或顏色。
9. 對象瀏覽器
列出工程中有效的對象,并提供在編碼中漫游的快速方法?梢允褂谩皩ο鬄g覽器”瀏覽在 VB中的對象和其它應用程序,查看對那些對象有效的方法和屬性,并將代碼過程粘貼進自己的應用程序。
10. 對象瀏覽器
右擊窗體中的對象、從工程管理器中點“查看代碼”按鈕。
11.窗體布局窗口
Form Layout window允許使用表示屏幕的小圖象來布置應用程序中各窗體的位置。
12. 立即、本地和監視窗口這些附加窗口是為調試應用程序提供的,它們只在 IDE 之中運行應用程序時才有效。
1.3 面向對象程序設計的基本概念
1.基本術語
(1) 對象和對象類
對象是代碼和數據的組合,可以作為一個單位來處理。對象可以是應用程序的一部分,比如可以是控件或窗體。整個應用程序也是一個對象。在 VB中可能用到的幾種類型的對象:
示例 |
描述 |
命令按鈕 |
窗體上的控件,象命令按鈕和框架,它們都是對象。 |
窗體 |
Visual Basic 工程中的每一個窗體都是獨立的對象。 |
數據庫 |
數據庫是對象,并且還包含其他對象,如字段、索引等。 |
圖表 |
Microsoft Excel 中的圖表是對象。 |
VB中的每個對象都是用類定義的。用餅干模子和餅干之間的關系作比,就會明白對象和它的類之間的關系。餅干模子是類。它確定了每塊餅干的特征,比如大小和形狀。用類創建對象,對象就是餅干。類是面向對象程序設計的核心技術,可以理解成一種定義了對象行為和外觀的模板;把對象看作是類的原原本本的復制品,
類具有繼承性、封裝性、多態性、抽象性。
(2) 屬性
屬性是對對象特性的描述,VB為每一類對象都規定了若干屬性,設計中可以改變具體對象的屬性值。比如窗體的背景顏色、高度與寬度。
(3) 事件(Event)
事件是發生在對象上的動作。事件的發生不是隨意的,某些事件僅發生在某些對象上。
在VB中事件的調用形式是:
Private Sub對象名_事件名
(事件內容)
End Sub
(4) 方法(Method)
方法指的是控制對象動作行為的方式。它是對象本身內含的函數或過程,它也是一個動作,是一個簡單的不必知道細節的無法改變的事件,但不稱作事件;同樣,方法也不是隨意的,一些對象有一些特定的方法。在VB里方法的調用形式是:
對象名.方法名
2. 屬性、方法和事件之間的關系
VB 對象具有屬性、方法和事件。屬性是描述對象的數據;方法告訴對象應做的事情;事件是對象所產生的事情,事件發生時可以編寫代碼進行處理。
VB 的窗體和控件是具有自己的屬性、方法和事件的對象?梢园褜傩钥醋饕粋對象的性質,把方法看作對象的動作,把事件看作對象的響應。
日常生活中的對象,如小孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質,如它的直徑和顏色。其它一些屬性描述氣球的狀態(充氣的或未充氣的)或不可見的性質,如它的壽命。通過定義,所有氣球都具有這些屬性;這些屬性也會因氣球的不同而不同。
氣球還具有本身所固有的方法和動作。如:充氣方法(用氦氣充滿氣球的動作),放氣方法(排出氣球中的氣體)和上升方法(放手讓氣球飛走)。所有的氣球都具備這些能力。
氣球還有預定義的對某些外部事件的響應。例如,氣球對刺破它的事件響應是放氣,對放手事件的響應是升空。
在VB程序設計中,基本的設計機制就是:改變對象的屬性、使用對象的方法、為對象事件編寫事件過程。程序設計時要做的工作就是決定應更改哪些屬性、調用哪些方法、對哪些事件作出響應,從而得到希望的外觀和行為。
3.事件驅動模型
在傳統的或“過程化”的應用程序中,應用程序自身控制了執行哪一部分代碼和按何種順序執行代碼。從第一行代碼執行程序并按應用程序中預定的路徑執行,必要時調用過程。
在事件驅動的應用程序中,代碼不是按照預定的路徑執行,而是在響應不同的事件時執行不同的代碼片段。事件可以由用戶操作觸發、也可以由來自操作系統或其它應用程序的消息觸發、甚至由應用程序本身的消息觸發。這些事件的順序決定了代碼執行的順序,因此應用程序每次運行時所經過的代碼的路徑都是不同的。
因為事件的順序是無法預測的,所以在代碼中必須對執行時的“各種狀態”作一定的假設。當作出某些假設時(例如,假設在運行來處理某一輸入字段的過程之前,該輸入字段必須包含確定的值),應該組織好應用程序的結構,以確保該假設始終有效(例如,在輸入字段中有值之前禁止使用啟動該處理過程的命令按鈕)。
在執行中代碼也可以觸發事件。例如,在程序中改變文本框中的文本將引發文本框的 Change 事件。如果 Change 事件中包含有代碼,則將導致該代碼的執行。如果原來假設該事件僅能由用戶的交互操作所觸發,則可能會產生意料之外的結果。正因為這一原因,所以在設計應用程序時理解事件驅動模型并牢記在心是非常重要的。
4.交互式開發
傳統的應用程序開發過程可以分為三個明顯的步驟:編碼、編譯和測試代碼。但是 Visual Basic 與傳統的語言不同,它使用交互式方法開發應用程序,使三個步驟之間不再有明顯的界限。
VB在編程者輸入代碼時便進行解釋,即時捕獲并突出顯示大多數語法或拼寫錯誤?雌饋砭拖笠晃粚<以诒O視代碼的輸入。
除即時捕獲錯誤以外,VB 也在輸入代碼時部分地編譯該代碼。當準備運行和測試應用程序時,只需極短時間即可完成編譯。如果編譯器發現了錯誤,則將錯誤突出顯示于代碼中。這時可以更正錯誤并繼續編譯,而不需從頭開始。
由于 VB的交互特性,代碼運行的效果可以在開發時進行測試,而不必等到編譯完成以后。
1.4 利用VB開發應用程序的一般步驟
一個VB程序也稱為一個工程,由窗體、標準模塊、自定義控件及應用所需的環境設置組成。開發步驟一般如下:
1. 創建程序的用戶界面
2. 設置界面上各個對象的屬性
3. 編寫對象響應事件的程序代碼
4. 保存工程
5. 測試應用程序,排除錯誤
6. 創建可執行程序
1.5 創建VB程序示例
實例名稱:VB歡迎你!
1.創建程序的用戶界面
2.設置界面上各個對象的屬性
控件 |
屬性 |
設置值 |
Option1 |
Caption |
上課 |
Option2 |
Caption |
復習 |
|
BackColor |
&H00C0E0FF& |
|
Forecolor |
&H00FF0000& |
|
Font |
宋體 小四 |
Label1 |
Caption |
歡迎你學習VB! |
|
Forecolor |
&H000000FF& |
|
Font |
隸書、二號 |
|
AutoSize |
True (自動調整外框大。 |
|
BackStyle |
0-Transparent ( 透明) |
Command1 |
Caption |
學習之道 |
3. 編寫對象響應事件的程序代碼
雙擊各對象,在相應的代碼窗口里輸入需要的代碼。
事件名稱 |
過程代碼 |
命令按鈕的單擊事件 |
Private Sub Command1_Click()
Option1.Visible = True
Option2.Visible = True
Label1.ForeColor = RGB(0, 0, 255)
Label1.Caption = " ? ? ?"
End Sub |
窗體的單擊事件 |
Private Sub Form_Click()
Form1.Picture = LoadPicture("d:\sj\abc.jpg")
Option1.Visible = False
Option2.Visible = False
Label1.ForeColor = RGB(255, 0, 0)
Label1.Caption = "預祝大家成功,干杯!"
End Sub |
窗體的雙擊事件 |
Private Sub Form_DblClick()
Form1.Picture = LoadPicture("")
Label1.Caption = " 歡迎你學習VB!"
End Sub |
選項按鈕1的單擊事件 |
Private Sub Option1_Click()
Label1.Caption = "看清楚 聽明白 記下來"
End Sub |
選項按鈕2的單擊事件 |
Private Sub Option2_Click()
Label1.Caption = "多上機 勤思考 善提問"
End Sub |
4.保存工程
(1)從文件菜單中選擇保存窗體,將窗體保存成vbwelcomeyou . frm
(2)從文件菜單中選擇保存工程,將工程保存成vbwelcomeyou . vbp
5.測試應用程序,排除錯誤
根據設想的效果調試程序,直到滿足要求為止。
6.創建可執行程序
從文件菜單中選擇 生成vbwelcomeyou . exe ,既可生成一個可執行文件。
注意:設計中遇到問題可以查閱MSDN的幫助文件。 |