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