一、Visual Basic 6.0 概況
Visual Basic 6.0簡(jiǎn)稱VB6,,是Visual Studio
6.0開發(fā)產(chǎn)品系列中的一員,,該產(chǎn)品系列的成員有VC6、VFoxpro6,、VinterDev,、VJ++6等,基本上涵蓋了Windows軟件開發(fā)的方
方面面。其中VB更是其中用戶喜愛的開發(fā)工具,它既是一種編程語(yǔ)言,,同時(shí)也是一個(gè)強(qiáng)大的集成開發(fā)環(huán)境,。作為語(yǔ)言,它的語(yǔ)法簡(jiǎn)單,、容易入門,,作為開發(fā)環(huán)境,
功能強(qiáng)大,,操作便捷,、自然;其面向?qū)ο蟮拈_發(fā)模型和思路能夠充分解放程序員的想象力,。 在VB5的基礎(chǔ)上,,Visual Basic
6.0又增加(增強(qiáng))了許多特性,如:函數(shù)可以返回?cái)?shù)組,、本地代碼編譯(運(yùn)行速度更快),、ActiveX編程;編寫DHTML應(yīng)用程序,、服務(wù)器端的IIS
程序,;升級(jí)了ComCtl32.ocx 和
ComCt232.ocx等通用控件;集成的和MS-SQL連接和調(diào)試的能力,;……相對(duì)于VB5,VB6增加(增強(qiáng))了很多向?qū)?,例如:制作?yīng)用程序安裝
向?qū)А?shù)據(jù)對(duì)象向?qū)?、?shù)據(jù)窗體向?qū)?、外接程序設(shè)計(jì)器、類生成器實(shí)用程序等等,。充分利用這些特性,,會(huì)讓你得心應(yīng)手,事半功倍,。 本文旨在讓沒有接
觸過VB的朋友能快速入門,、以最新版本VB6幫助他們?cè)诒M可能短的時(shí)間內(nèi)學(xué)會(huì)使用VB編程;同時(shí)讓已經(jīng)入門的朋友能在新版本中得到進(jìn)一步提高,。
二,、Visual Basic 6.0 IDE(集成開發(fā)環(huán)境)
VB6的開發(fā)環(huán)境和VB5基本類似。程序一運(yùn)行,,就進(jìn)入IDE環(huán)境,。我們經(jīng)常要與IDE打交道,無論是設(shè)計(jì)窗體,、控件,、還是編寫代碼,、調(diào)試程
序,都要通過它來達(dá)到,。請(qǐng)一定要熟練的掌握IDE的操作要領(lǐng),。 下面對(duì)VB6的IDE界面給予簡(jiǎn)單的介紹,具體的操作請(qǐng)您自行反復(fù)嘗試,、練習(xí),,
而這也是熟悉VB,掌握VB的不二法門。 (1)[新建工程]:
在[文件]主菜單下的命令,,用于建立一個(gè)新的VB工程,。在工具條的最右端也有相應(yīng)的按鈕。 (2)[生成工程...] :
根據(jù)工程的名稱不同,,本菜單欄將出現(xiàn)相應(yīng)的提示,,本功能用于編譯工程,并且可以由用戶指定編譯選項(xiàng),,如編譯成P代碼還是本地代碼,,是否優(yōu)化代碼等。
(3)[視圖] : 在各視圖間切換,,如工程視圖,、屬性窗、監(jiān)視窗,、工具箱,、工具欄等。 (4)[工程] :
菜單會(huì)根據(jù)工程類型的不同而有不同的變化,。其作用主要是對(duì)工程添加各種類型的組件,,如窗體、模塊之類,。 (5)[格式]:用于對(duì)窗體上的控件進(jìn)
行對(duì)齊,、改變大小、鎖定控件位置等操作,。在美化屏幕布局時(shí)很有用處。 (6)[調(diào)試]:用于調(diào)試程序時(shí),,可以增加斷點(diǎn),、單步執(zhí)行等。
(7)[運(yùn)行]:就不用說了,。 (8)[設(shè)置]:在[工具]下拉式菜單下的設(shè)置功能,,用于定制您的IDE環(huán)境,比如字體,、是否允許即時(shí)語(yǔ)法檢
查,、是否對(duì)齊網(wǎng)格等,,請(qǐng)仔細(xì)研究它。 另外,,VB6提供了很多向?qū)?,它們極大的提高了效率,請(qǐng)?jiān)谑褂弥凶屑?xì)體會(huì),?! ∪isual
Basic 6.0中的關(guān)鍵概念 1.工程(Project)的概念和作用 在開發(fā)應(yīng)用程序時(shí),,要使用工程來管理構(gòu)成應(yīng)用程序的所有
不同的文件,。一個(gè)工程包括:跟蹤所有部件的工程文件 (.vbp)、窗體文件,、窗體上控件的屬性數(shù)據(jù),、類模塊文件、標(biāo)準(zhǔn)模塊文件,、ActiveX
控件文件等等 ,。 工程文件就是與該工程有關(guān)的全部文件和對(duì)象的清單,也是所設(shè)置的環(huán)境選項(xiàng)方面的信息,。每次保存工程時(shí),,這些信息都要被更新。
所有這些文件和對(duì)象也可供其它工程共享,。 當(dāng)完成工程的全部文件之后,,即可將此工程編譯成可執(zhí)行文件
(.exe):從“文件”菜單,選取“制作 project.exe”命令即可,。 2.窗體(Form)的概念和作用 窗體是用戶與
計(jì)算機(jī)交流的最主要界面,,界面上可以包含多種控件,用以實(shí)現(xiàn)用戶的操作構(gòu)想以及向用戶返回操作結(jié)果,。 3.控件(Control)的概念和作用
控件一般出現(xiàn)在窗體上,,用于接受用戶的輸入(如
Text控件)或者向用戶顯示某一項(xiàng)信息。由于窗體上可以出現(xiàn)多個(gè)控件,,所以程序員通過組合各種類型和數(shù)量的控件來完整的展現(xiàn)一個(gè)和現(xiàn)實(shí)世界相關(guān)的對(duì)象,,
比如:在一個(gè)窗體上顯示一張銷售訂單的各項(xiàng)信息。 VB的強(qiáng)大就體現(xiàn)在支持大量的控件,,目前大量的第三方控件,,從數(shù)據(jù)庫(kù)支持、圖形處理,、到
I/O接口處理,、加密解密處理等幾乎無所不包。 通常,,VB程序員通過精心的選擇控件,,或者采用VB6的新特性:設(shè)計(jì)控件,,并將其在窗體上合適
的布局,來表達(dá)自己的審美趣味和界面設(shè)計(jì)的能力,。界面設(shè)計(jì)是影響用戶對(duì)軟件評(píng)價(jià)的主要方面,,也是一個(gè)軟件能否成功的重要因素。 4.對(duì)象
(Object) ,、屬性(Property),、事件(Event) “對(duì)象”直觀的理解就是,每件事物都是一個(gè)對(duì)象,,大到銀河系,、樓房、顯示
器,、小到一粒微不足道的塵埃,。在VB世界里,窗體,、控件,、磁盤、乃至程序本身都是對(duì)象,。 對(duì)象是分層次的,,正如現(xiàn)實(shí)世界一樣,大的對(duì)象由小的對(duì)
象組成,,如:窗體對(duì)象由文本控件,、標(biāo)簽控件、Picture控件等組成,。 對(duì)象通過屬性來描述和區(qū)分,,比如:窗體對(duì)象有高度、寬度,、名稱等屬
性,,由于不同的窗體的屬性不同,所以可以區(qū)分他們,。程序可以讀取或設(shè)置屬性的值,,來考察或操縱對(duì)象。如:可以將窗體對(duì)象的寬度屬性增加以擴(kuò)大窗體在屏幕上
的可視寬度,。 為了讓程序能夠跟蹤對(duì)象的變化,,當(dāng)對(duì)象接受到外界輸入或其本身需要做出某種動(dòng)作時(shí),通過“事件”來通知應(yīng)用程序,。比如:當(dāng)光標(biāo)在
窗體上移動(dòng)時(shí),窗體產(chǎn)生 Mouse_Move
事件來反映這種輸入,。而程序可以根據(jù)需要捕獲這個(gè)事件,,從而做出相應(yīng)的反映,,比如,程序可以在光標(biāo)移動(dòng)事件發(fā)生時(shí),,更改某個(gè) Label
控件上顯示的光標(biāo)坐標(biāo),。 對(duì)象的屬性或事件可用VB代碼來引用。引用語(yǔ)法是“對(duì)象名+小數(shù)點(diǎn)+屬性”或者“對(duì)象名+小數(shù)點(diǎn)+事件”,。例如,,引用
窗體 frmMain 的 Caption 屬性的語(yǔ)法為:“frmMain.Caption”。 5.變量的概念和作用 變量是用
來存儲(chǔ)數(shù)據(jù)的所在處,;它們有名字和數(shù)據(jù)類型,。變量的數(shù)據(jù)類型決定了如何將代表這些值的位存儲(chǔ)到計(jì)算機(jī)的內(nèi)存中。在聲明變量時(shí)也可指定它的數(shù)據(jù)類型,。所有變
量都具有數(shù)據(jù)類型,,以決定能夠存儲(chǔ)哪種數(shù)據(jù)。 根據(jù)缺省規(guī)定,,如果在聲明中沒有說明數(shù)據(jù)類型,,則令變量的數(shù)據(jù)類型為
Variant。Variant 數(shù)據(jù)類型很象一條變色龍— 它可在不同場(chǎng)合代表不同數(shù)據(jù)類型,。當(dāng)指定變量為 Variant
變量時(shí),,不必在數(shù)據(jù)類型之間進(jìn)行轉(zhuǎn)換,Visual Basic 會(huì)自動(dòng)完成各種必要的轉(zhuǎn)換,。 但是,,如果知道變量確實(shí)總是存儲(chǔ)特定類型的數(shù)
據(jù),并且還聲明了這種特定類型的變量,,則 Visual Basic 會(huì)以更高的效率處理這個(gè)數(shù)據(jù),。例如,存儲(chǔ)人名的變量最好表示成 String
數(shù)據(jù)類型,,因?yàn)槊挚偸怯勺址M成,。 6.Visual Basic6中的其它概念或術(shù)語(yǔ) 關(guān)鍵字:VB中使用的單詞或短語(yǔ),不允許
程序員用作變量,、函數(shù)或過程等的名字,,例如:Address Of、Dir,、Len,、Select 等等; 模塊:模塊有三種:窗體模塊,、標(biāo)準(zhǔn)
模塊,、類模塊; VB中的概念和術(shù)語(yǔ)很多,,請(qǐng)讀者在實(shí)踐中多讀書,、多思考,,慢慢熟悉、積累,。
四,、Visual Basic語(yǔ)言
1.?dāng)?shù)據(jù)類型 VB支持的數(shù)據(jù)類型很多,有:數(shù)值類型(Integer,、Double,、Single等)、字符類型
(String),、日期類型(Date),、Byte、Variant等,。 2.運(yùn)算符 VB支持的運(yùn)算符有加(+)減(-)乘(*)
除(/),,邏輯比較運(yùn)算符大于(>)、小于(<),、等于(=)以及它們的組合等等,。 3.變量的定義及其作用域 使用
Dim 語(yǔ)句定義變量,根據(jù)該語(yǔ)句所處的位置,,變量有不同的作用域:全局的或局部的,。其格式為: Dim <變量名稱> As
<變量類型> 使用 Public 來替代 Dim 語(yǔ)句可以使得變量全局可見,而使用 Private
定義變量則使得變量?jī)H被當(dāng)前的函數(shù)或過程看見,。 如果需要讓變量在整個(gè)程序的生命周期中生存,,可以在聲明變量時(shí)加上 Static
關(guān)鍵字來達(dá)到這個(gè)目的。 4.Visual Basic的語(yǔ)句 ?。?)賦值語(yǔ)句: 格式:變量 = <值>
或者 <表達(dá)式> ?。?)調(diào)用語(yǔ)句: 函數(shù)調(diào)用: 變量 = 函數(shù)名(參數(shù)表) 過程調(diào)用:過程名 參數(shù)表
或者 Call 過程名(參數(shù)表) (3)分支語(yǔ)句: If 條件為真 Then 語(yǔ)句塊
1#Else 否則執(zhí)行 語(yǔ)句塊2 End If ?。?)分支選擇 Select: Select Case
值或表達(dá)式 Case 值1 語(yǔ)句塊1 Case 值2 語(yǔ)句塊2 . . .
Case Else 語(yǔ)句塊3 End Select ?。?)循環(huán)語(yǔ)句 Do While Do
While 條件 . . . Exit Do ' 跳出循環(huán) . . .
Loop ' 繼續(xù)下一輪循環(huán) (6)Goto 語(yǔ)句 ?。?)Visual Basic常用的函數(shù)有: ?、贁?shù)值
類:Sin()、Cos(),、Sqrt(),、Exp()、Fv(),、Syd()等,; ②日期類:有Now()、DateSerial(),、
DateAdd(),、DatePart()、Day(),、Year()、Month(),、Time(),、TimeValue、WeekDay()等,;
③字符串類:有Len(),、Left()、Right(),、Mid(),、以及新函數(shù)LenB()、LeftB(),、RightB(),、MidB()、和
StrConv(),、CStr(),、InStr()、Lcase(),、Ucase()等,; ④其它常用函數(shù):常用的函數(shù)有
Abs(),、Dir(),、CurDir(),、DoEvents、Format()、MsgBox(),、InputBox()、Now(),、
VarType()等,。 5.Visual Basic 6.0對(duì)象命名規(guī)范 對(duì)VB中的變量、函數(shù),、過程,、控件、窗體進(jìn)行規(guī)范的,、
有意義的命名,,可以減少很多編程時(shí)的混亂。微軟公司有推薦的命名準(zhǔn)則,希望廣大VB程序員以此為參照,,不要讓默認(rèn)的對(duì)象名稱如Form1,、Text1、
RichEdit1等干巴巴的名字出現(xiàn)在程序里,。 變量或過程名的主體應(yīng)該使用大小寫混合形式,,并且應(yīng)該足夠長(zhǎng)以描述它的作用。而且,,函數(shù)名應(yīng)
該以一個(gè)動(dòng)詞起首,,如 InitNameArray 或
CloseDialog。對(duì)于頻繁使用的或長(zhǎng)的項(xiàng),,推薦使用標(biāo)準(zhǔn)縮略語(yǔ)以使名稱的長(zhǎng)度合理化,。當(dāng)使用縮略語(yǔ)時(shí),要確保它們?cè)谡麄€(gè)應(yīng)用程序中的一致性,。在一
個(gè)工程中,,如果一會(huì)兒使用 Cnt, 一會(huì)兒使用 Count,,將導(dǎo)致不必要的混淆,。 首先請(qǐng)給予對(duì)象一個(gè)有描述性的名字,比如不要讓一個(gè)輸入
姓名的Text控件名稱為 Text1,,而是命名為 txtName,;一個(gè)口令輸入框?yàn)?txtPassWord等等。 根據(jù)對(duì)象的數(shù)據(jù)類型,,
應(yīng)該為對(duì)象名稱加上一個(gè)表示其數(shù)據(jù)類型的前綴,。 具體應(yīng)用時(shí)可參照下表進(jìn)行,它們也是微軟推薦使用的命名規(guī)范: 數(shù)據(jù)類型
前綴 例子 Booleanbln bln Found Bytebyt
byt RasterData String Str StrUserName Current
Cur CurOrderNum 為了標(biāo)識(shí)出對(duì)象的作用域,,可以給變量加上一個(gè)范圍前綴,。比如,全局變量加“g”,、模塊級(jí)變量加
“m”,、本地過程級(jí)什么也不加等。例如:“gstrUserName”表示全局級(jí)的字符型的變量,,其主體名為“UserName”,,我們基本上可以知道這
個(gè)變量的絕大部分內(nèi)涵。
五,、編程概要
隨著您逐步了解,,大概迫不及待的想一試身手。好,,現(xiàn)在就讓我們真刀實(shí)槍的進(jìn)入VB6 IDE,,開始編程的第一步吧,。
1.工程建立 當(dāng)您打開VB6時(shí),就可以選取待創(chuàng)建工程的類型了,,一般選取“標(biāo)準(zhǔn)EXE”類型(圖1),。 2.建立窗體和
控件 你可以按添加窗體快捷按鈕添加窗體。當(dāng)窗體出現(xiàn)在屏幕上后,,別忘記在“屬性窗口”中給它起一個(gè)比較合適的名字,,比如“frmMain”。
隨后您就可以在窗體上創(chuàng)建左面工具箱中的控件的新實(shí)例了,。創(chuàng)建的方法有兩種,,一種是雙擊工具箱中的控件,則相應(yīng)的控件實(shí)例自動(dòng)出現(xiàn)在窗體的中間位置,,也可
以按下工具箱中的控件圖標(biāo),然后在窗體中用鼠標(biāo)圈一個(gè)矩形,,這個(gè)矩形就代表控件實(shí)例所占據(jù)的控件,。當(dāng)控件建立完畢,請(qǐng)仔細(xì)布局,。 窗體的常用屬
性一般有: (1)Caption:窗口的標(biāo)題,; (2)Name:窗體的名字,您應(yīng)給它一個(gè)有意義的名字,;
(3)Visible:設(shè)置窗體是否可見,,取值有 True 和 False 兩種,; (4)Enabled:是否接受用戶的輸入,;
(5)BorderStyle:邊框的風(fēng)格,,有無邊框,、可變邊框,、固定單線邊框,、工具條式邊框等多種風(fēng)格,; (6)Height,、
Width,、Top,、Left:高度,、寬度,、左,、右邊界位置屬性,,用于表示或設(shè)置窗體的高度和寬度以及在屏幕上的位置,;
(7)BackColor:用于定義窗體的顏色,; (8)Picture:用于設(shè)置一個(gè)圖片文件作為窗體的背景,;
(9)Moveable:是否允許窗體移動(dòng); (10)MinButton、MaxButton:控制最小化、最大化按鈕。
(11)MousePointer、MouseIcon:用于設(shè)置當(dāng)光標(biāo)進(jìn)入本窗體時(shí)顯示的系統(tǒng)庫(kù)存圖像(MousePointer),、或者自定義圖像
(MouseIcon),; (12)Font:設(shè)置顯示在窗體上的(默認(rèn))字體,; 所創(chuàng)建的窗體上可以創(chuàng)建各種各樣的控件,。在工具箱
中提供了系統(tǒng)常用控件。常用控件有: Label控件:靜態(tài)文本控件; TextBox:文本輸入控件,; Frame:框架控件,,
是一個(gè)控件的容器,,可在其上放置控件; CommandButton:命令按鈕,; CheckBox:檢查框,,有選中、未選中二個(gè)狀
態(tài),; OptionButton: 選項(xiàng)按鈕,,有選中,、未選中,、灰色等,; ComboBox:下拉式列表框;
ListBox:列表框; HscrollBar:水平滾動(dòng)條; VscrollBar:垂直滾動(dòng)條; Timer:時(shí)鐘
控件; DriverListBox:驅(qū)動(dòng)器列表框。可顯示機(jī)器上所有驅(qū)動(dòng)器; DirListBox:目錄清單列表框,。列出定制驅(qū)
動(dòng)器上所有目錄; FileListBox:文件清單列表框,。列出制定目錄下的所有文件,; Sharp:圖形控件,可以顯示矩形、線
等圖形,; Line:同Sharp類似,,僅可以顯示線; Image:顯示圖像的控件,; PictureBox:顯示圖像
的控件,,若僅僅顯示,使用Image控件,; Data:數(shù)據(jù)源控件,; OLE:用于插入OLE對(duì)象的控件; 為了添加其它
控件,,請(qǐng)選擇 [工程]/[部件] 菜單項(xiàng)來添加其它控件到工具箱中,。 將上述控件插入窗體的方法是:先在工具箱中(左鍵)單擊相應(yīng)控件圖標(biāo),
隨后在窗體上目標(biāo)位置附近單擊左鍵,,所選中的控件就出現(xiàn)在窗體上,。 用鼠標(biāo)按住控件不放并拖動(dòng),可以將控件移動(dòng)到其它合適的位置,,也可以移動(dòng)鼠
標(biāo)光標(biāo)到控件邊界,,當(dāng)光標(biāo)改變?yōu)殡p向箭頭時(shí),按下鼠標(biāo)左鍵并拖動(dòng),,可以改變控鍵的大小,。 為了改變控件的屬性,可以單擊目標(biāo)控件一下,,屬性窗口
中將出現(xiàn)其屬性清單,。選中相應(yīng)的屬性值輸入框,就可以輸入新值或者可以通過下拉式列表選擇其它屬性值,。 為了給某個(gè)窗體或控件編寫事件代碼,,需
要用鼠標(biāo)雙擊窗體空白區(qū)或控件區(qū),VB IDE將給出事件代碼編寫窗口,。 事件的響應(yīng)代碼是一個(gè)函數(shù),,其命名規(guī)則是“對(duì)象名+下劃線+事件
名”。編寫代碼的方法見下一小節(jié),。 常見的事件有: Click:光標(biāo)/鼠標(biāo)單擊事件,; DblClick:鼠標(biāo)雙擊;
MouseMove:光標(biāo)移動(dòng),; GotFocus:得到輸入焦點(diǎn),; LostFocus:失去輸入焦點(diǎn);
KeyPress:擊鍵,。 3.編寫代碼 VB “代碼編輯器”
是一個(gè)窗口,,大多數(shù)代碼都在此窗口上編寫,它象一個(gè)高度專門化的字處理軟件,有許多便于編寫 Visual Basic 代碼的功能,。因?yàn)橐僮髂K中的
Visual Basic
代碼,,所以要為每一個(gè)從“工程資源管理器”中選擇的模塊打開一個(gè)獨(dú)立的“代碼編輯器”窗口。在每個(gè)模塊中,,對(duì)于模塊中所包含的每個(gè)對(duì)象,,將模塊中的代碼再
細(xì)分出與對(duì)象對(duì)應(yīng)的獨(dú)立部分。用“對(duì)象列表框”實(shí)現(xiàn)各部分間的切換,。
在窗體模塊中,,該列表包含一個(gè)通用段,一個(gè)屬于窗體自身的段以及窗體所包含的每一控件的段,。對(duì)于類模塊,,列表包括一個(gè)通用段和一個(gè)類段;對(duì)于標(biāo)準(zhǔn)模塊,,只
有一個(gè)通用段被顯示,。 每一段代碼都可包含幾個(gè)用“過程列表框”訪問的不同過程。對(duì)窗體或控件的每一個(gè)事件過程,,窗體模塊的過程列表都包含一個(gè)
獨(dú)立的段,。例如,Label 控件的過程列表就包含 Change 事件段,、Click 事件段和 DblClick
事件段等等,。類模塊只列舉類本身的事件過程——初始化和終止。標(biāo)準(zhǔn)模塊不列舉任何事件過程,,因?yàn)闃?biāo)準(zhǔn)模塊不支持事件,。模塊通用段的過程列表只包含唯一段
——聲明段,其中放置模塊級(jí)的變量,、常數(shù)和 DLL 聲明,。當(dāng)在模塊中添加子過程或函數(shù)過程時(shí),那些過程被添加到聲明段下方的“過程列表框”中,。
代碼的兩種不同視圖都可用于“代碼編輯器”窗口,。可以一次只查看一個(gè)過程,,也可以查看模塊中的所有過程,,這些過程彼此之間用線隔開。為了在兩個(gè)視圖之間
進(jìn)行切換,,利用編輯器窗口左下角的“查看選擇”按鈕,。 VB提供了自動(dòng)完成編碼的功能:VB
能自動(dòng)填充語(yǔ)句、屬性和參數(shù),,這些性能使編寫代碼更加方便,。在輸入代碼時(shí),編輯器列舉適當(dāng)?shù)倪x擇,、語(yǔ)句或函數(shù)原型或值,。通過“工具”菜單上的“選項(xiàng)”命令
訪問“選項(xiàng)”對(duì)話框,在“選項(xiàng)”對(duì)話框的“編輯器”選項(xiàng)卡上可用這樣的選項(xiàng),,由它們決定是允許還是禁止各代碼的設(shè)置值,。 在代碼中輸入一控件名
時(shí),“自動(dòng)列出成員特性”會(huì)亮出這個(gè)控件的下拉式屬性表,。鍵入屬性名的前幾個(gè)字母,,就會(huì)從表中選中該名字,按 Tab
鍵將完成這次輸入,。當(dāng)不能確認(rèn)給定的控件有什么樣的屬性時(shí),,這個(gè)選項(xiàng)是非常有幫助的。即使選擇了禁止“自動(dòng)列出成員特性”,,仍可使用 Ctrl + J
組合鍵得到這種性能,。 “自動(dòng)快速信息”功能顯示語(yǔ)句和函數(shù)的語(yǔ)法。當(dāng)輸入合法的 Visual Basic
語(yǔ)句或函數(shù)名之后,,語(yǔ)法立即顯示在當(dāng)前行的下面,,并用黑體字顯示它的第一個(gè)參數(shù)。在輸入第一個(gè)參數(shù)值之后,,第二個(gè)參數(shù)又出現(xiàn)了,,同樣也是黑體字。“自動(dòng)快
速信息”也可以用 Ctrl+I 組合鍵得到,。 4.標(biāo)準(zhǔn)模塊 用于存儲(chǔ)一些全局性的函數(shù)或過程,,以及一些全局常量、變量的聲明等,。
比如程序中需要的一些計(jì)算方法,,將其獨(dú)立到模塊中就比較容易維護(hù)。 在工程資源管理器中右擊鼠標(biāo),,選擇快捷菜單的[添加]/[添加模塊]即可添
加一個(gè)新的模塊,。 5.類模塊 VB有限度的支持了類。不象SmallTalk,、C++,、Java等真正的面向?qū)ο笳Z(yǔ)言,VB對(duì)繼
承,、多態(tài)的支持采用了一種變通的方式,,即采用接口和界面等類似于COM模型的方式。其實(shí),,之所以這么做,,就是為了讓VB支持COM模型,。 所謂
類,就是對(duì)一系列相同對(duì)象的抽象描述,。有點(diǎn)類似于數(shù)據(jù)類型,,可以對(duì)類進(jìn)行實(shí)例化,也就是說明一個(gè)類對(duì)象,。每個(gè)類必須存放在一個(gè)類模塊里,。類可以擁有屬性、
方法,、事件等,,如同控件一樣。 通過創(chuàng)建類模塊并賦以屬性和方法,,就定義了類,,接著就可以由該類創(chuàng)建任意數(shù)量的對(duì)象。對(duì)象模型給出了基于對(duì)象程
序的結(jié)構(gòu),。通過定義程序中對(duì)象之間的關(guān)系,,對(duì)象模型能夠以一種使編程變得更容易的方式來組織對(duì)象。一般來說,,對(duì)象模型表達(dá)了這樣一個(gè)事實(shí):即某些對(duì)象是
“更大的”,,或者說比其它對(duì)象更重要一些——可以認(rèn)為這些對(duì)象是包含其它對(duì)象的對(duì)象,或者是由其它對(duì)象所組成的對(duì)象,。例如,,在編程時(shí),可能創(chuàng)建一個(gè)
SmallBusiness 對(duì)象來作為程序的核心,??赡芟胱屵@個(gè) SmallBusiness 對(duì)象包含與其關(guān)聯(lián)的其它類型的對(duì)象,比如
Employee 對(duì)象和 Customer 對(duì)象,??赡芡瑫r(shí)也希望它包含一個(gè) Product
對(duì)象。這樣就和現(xiàn)實(shí)世界相一致起來,。對(duì)象模型給出了基于對(duì)象程序的結(jié)構(gòu),。通過定義程序中所使用的對(duì)象之間的關(guān)系,對(duì)象模型能夠以一種使編程變得更容易的方
式來組織對(duì)象,。 一般來說,,對(duì)象模型表達(dá)了這樣一個(gè)事實(shí):即某些對(duì)象是“更大的”,或者說比其它對(duì)象更重要一些——可以認(rèn)為這些對(duì)象是包含其它
對(duì)象的對(duì)象,,或者是由其它對(duì)象所組成的對(duì)象,。 例如,在編程時(shí),,可能創(chuàng)建一個(gè) SmallBusiness
對(duì)象來作為程序的核心,??赡芟胱屵@個(gè) SmallBusiness 對(duì)象包含與其關(guān)聯(lián)的其它類型的對(duì)象,比如 Employee 對(duì)象和
Customer 對(duì)象,??赡芡瑫r(shí)也希望它包含一個(gè) Product
對(duì)象。理解類的含義是以后進(jìn)一步了解和實(shí)現(xiàn)ActiveX,、COM等的基礎(chǔ),,只有您清楚的理解了類,,接下來就會(huì)事半功倍,。
六、應(yīng)用程序的調(diào)試,、編譯和發(fā)布
除非一個(gè)什么也不做的程序,,一般都會(huì)出現(xiàn)這樣那樣的錯(cuò)誤。有簡(jiǎn)單的打字錯(cuò)誤,,也可能拚錯(cuò)了某個(gè)關(guān)鍵字,、甚至可能是編程的邏輯出現(xiàn)了偏差,導(dǎo)致程
序的結(jié)果無法理解,,這時(shí)就需要調(diào)試了,。VB6提供了集成的調(diào)試器,可以設(shè)置斷點(diǎn),、監(jiān)視表達(dá)式等方式,。 VB6采用了即時(shí)編譯技術(shù),就是在你編寫
代碼的同時(shí)檢查代碼的語(yǔ)法,,如果有錯(cuò)誤后,,就會(huì)及時(shí)提醒修改。所以一般情況下不會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤,。 當(dāng)修改了程序的所有錯(cuò)誤后,,就可以將其編譯為
EXE形式的可執(zhí)行程序。選擇菜單[文件]/[生成工程]即會(huì)出現(xiàn)一個(gè)對(duì)話框,。單擊“選項(xiàng)”按鈕可以設(shè)置幾個(gè)工程的屬性,,比如版本號(hào)、產(chǎn)品名稱,、公司名
稱,、是否編譯為本地代碼等。所設(shè)置的屬性將被存入EXE可執(zhí)行文件,。為了發(fā)布您的程序,,請(qǐng)?jiān)谙到y(tǒng)菜單條中選取
“Package&Deployment向?qū)?#8221;項(xiàng),進(jìn)入向?qū)Ш?,根?jù)畫面提示逐步操作即可,。
七,、用VB6進(jìn)行數(shù)據(jù)庫(kù)編程
在VB6中,微軟建議數(shù)據(jù)庫(kù)編程采用基于OLE DB的ADO模型,,ADO模型是一個(gè)簡(jiǎn)單,、一致的應(yīng)用程序編程接口
(API),使應(yīng)用程序能夠訪問和修改眾多類型的數(shù)據(jù)源,。OLE DB
為任何數(shù)據(jù)源提供了高性能的訪問,,這些數(shù)據(jù)源包括關(guān)系和非關(guān)系數(shù)據(jù)庫(kù)、電子郵件和文件系統(tǒng),、文本和圖形,、自定義業(yè)務(wù)對(duì)象等等。ADO 在關(guān)鍵的
Internet
方案中使用最少的網(wǎng)絡(luò)流量,,并且在前端和數(shù)據(jù)源之間使用最少的層數(shù),,所有這些都是為了提供經(jīng)濟(jì)、高性能的接口,。當(dāng)然,,根據(jù)用途,仍然有使用DAO,、RDO
的時(shí)候,,例如:如果采用Access 97作為桌面數(shù)據(jù)庫(kù),完全可以使用 DAO 模型,。不過,,還是讓我們緊跟潮流、學(xué)習(xí)ADO吧,。 1.與數(shù)
據(jù)庫(kù)相關(guān)的術(shù)語(yǔ),、對(duì)象 (1)ADO (ActiveX 數(shù)據(jù)對(duì)象) 這項(xiàng)新的數(shù)據(jù)訪問技術(shù)的特性包括:更簡(jiǎn)單的對(duì)象模型;與其它
Microsoft 和非 Microsoft
的技術(shù)更好的集成,;為本地和遠(yuǎn)程數(shù)據(jù)提供的通用接口,;可遠(yuǎn)程訪問的和斷開的記錄集;用戶可訪問的數(shù)據(jù)綁定接口,;以及層次結(jié)構(gòu)的記錄集,。 (2)
數(shù)據(jù)環(huán)境 是一個(gè)創(chuàng)建 ADO
對(duì)象的交互式的設(shè)計(jì)環(huán)境??勺鳛閿?shù)據(jù)源供窗體或報(bào)表上的數(shù)據(jù)識(shí)別對(duì)象使用,,或者在程序中作為顯露在數(shù)據(jù)環(huán)境對(duì)象之外的方法和屬性進(jìn)行訪問。數(shù)據(jù)環(huán)境設(shè)計(jì)器
支持 UserConnection,,以及拖放,、層次結(jié)構(gòu)、分組以及合計(jì)等,。 (3)ADO Data 控件 這是一種新的,、OLE
DB 識(shí)別的數(shù)據(jù)源控件,,其功能與內(nèi)部的 Data 控件和 Remote Data
控件十分相似,通過這種方式允許您用最少的代碼來創(chuàng)建數(shù)據(jù)庫(kù)應(yīng)用程序,。 (4)OLE DB 支持 OLE DB 是一組 COM
接口,,它為應(yīng)用程序訪問保存在不同信息源中的數(shù)據(jù)提供了統(tǒng)一的訪問方法,這些信息源可以是關(guān)系型的,,也可以是非關(guān)系型的,。這些接口支持大量可應(yīng)用于數(shù)據(jù)源
的 DBMS 功能,使數(shù)據(jù)源能夠共享其數(shù)據(jù),。ADO 是編程人員訪問 OLE DB 的方法,。所有新的數(shù)據(jù)綁定控件、數(shù)據(jù)環(huán)境,、和數(shù)據(jù)報(bào)表設(shè)計(jì)器都是
OLE DB 識(shí)別的,。 (5)可視化數(shù)據(jù)庫(kù)工具集成(查詢?cè)O(shè)計(jì)器和數(shù)據(jù)庫(kù)設(shè)計(jì)器) 可視地創(chuàng)建和修改數(shù)據(jù)庫(kù)結(jié)構(gòu)和查詢:創(chuàng)建SQL
Server 和 Oracle 數(shù)據(jù)庫(kù)表,,利用拖放來創(chuàng)建視圖,、自動(dòng)更改列的數(shù)據(jù)類型。 (6)數(shù)據(jù)報(bào)表 允許您利用拖放技術(shù)來
快速地從任何記錄集(包括層次結(jié)構(gòu)的記錄集)創(chuàng)建報(bào)表,。 (7)數(shù)據(jù)源 創(chuàng)建用作數(shù)據(jù)源,、以便綁定其它控件的用戶控件和類。
(8)SQL 編輯器 允許您向現(xiàn)有的 SQL Server 和 Oracle
數(shù)據(jù)庫(kù)添加新的存儲(chǔ)過程,。也可以使用此編輯器來編寫觸發(fā)器,。 (9)DataGrid 控件 一個(gè) DBGrid 的 OLE DB
識(shí)別版本,該控件可以快速生成一個(gè)應(yīng)用程序來查看和編輯記錄集,。也支持新的 ADO Data 控件,。 (10)DataList
控件、DataCombo 控件 這些控件是 DBList 和 DBCombo 控件的 OLE DB 版本,。它們還支持新的 ADO
Data 控件,。 2.ADO對(duì)象層次 理解了上述概念和對(duì)象,再讓我們來看一看ADO的對(duì)象層次
(圖3),。組成這個(gè)層次的各個(gè)對(duì)象被廣泛的應(yīng)用在 IIS/ASP
應(yīng)用方面,。當(dāng)我們需要對(duì)程序進(jìn)行精雕細(xì)刻時(shí),就必然需要“程序化”的控制它們——也就是要編寫代碼,,記住了解對(duì)象層次以及每個(gè)對(duì)象的屬性,、方法是非常必要
的。下面是ADO編程模型中重要對(duì)象的簡(jiǎn)單介紹:
(1)命令(Command) 通過已建立的連接發(fā)出的“命令”可以某種方式來操作數(shù)據(jù)源,。一般情況下,,命令可以在數(shù)據(jù)源中添加、刪
除或更新數(shù)據(jù),,或者在表中以行的格式檢索數(shù)據(jù),。 (2)參數(shù)(Parameter) 通常,,命令需要的變量部分即“參數(shù)”可以在命令
發(fā)布之前進(jìn)行更改。例如,,可重復(fù)發(fā)出相同的數(shù)據(jù)檢索命令,,但每一次均可更改指定的檢索信息。 (3)記錄集(Recordset)
如果命令是在表中按信息行返回?cái)?shù)據(jù)的查詢(行返回查詢),,則這些行將會(huì)存儲(chǔ)在本地,。對(duì)象模型將該存儲(chǔ)體現(xiàn)為 Recordset
對(duì)象。但不存在僅代表單獨(dú)一個(gè) Recordset 行的對(duì)象,。 (4)對(duì)象模型以 Field 對(duì)象體現(xiàn)字段 (5)錯(cuò)誤
(Error) 錯(cuò)誤隨時(shí)可在應(yīng)用程序中發(fā)生,,通常是由于無法建立連接、執(zhí)行命令或?qū)δ承顟B(tài)(例如,,試圖使用沒有初始化的記錄集)的對(duì)象進(jìn)行
操作,。 (6)集合 ADO
提供“集合”,這是一種可方便地包含其他特殊類型對(duì)象的對(duì)象類型,。使用集合方法可按名稱(文本字符串)或序號(hào)(整型數(shù))對(duì)集合中的對(duì)象進(jìn)行檢索,。
(7)事件 ADO
將“事件”的概念引入編程模型。事件是對(duì)將要發(fā)生或已經(jīng)發(fā)生的某些操作的通知,。一般情況下,,可用事件高效地編寫包含幾個(gè)異步任務(wù)的應(yīng)用程序。
3.ADO應(yīng)用舉例 為了在程序中能夠使用ADO對(duì)象,,請(qǐng)選中菜單 [工程]/[部件],,隨后勾選相應(yīng)的部件即可,如 ADO Data
Control,;如果想在代碼中操縱ADO對(duì)象,,請(qǐng)選擇菜單 [工程]/[應(yīng)用],然后選中相應(yīng)的項(xiàng)目即可,,如“Microsoft ActiveX
Data Objects 2.0 Library”,。 利用VB6自帶的Nwind.mdb
數(shù)據(jù)庫(kù),下面簡(jiǎn)單介紹如何建立一個(gè)用于輸入雇員信息的窗體: 首先為工具箱添加控件 ADO Data Control(ADODC),、ADO
DataGrid(DataGird),,然后創(chuàng)建一個(gè)新窗體,建立一個(gè) ADODC 的新實(shí)例到窗體的上方,,設(shè)置其關(guān)鍵屬性如下:
Name=“adodc1”
ConnectString=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=Nwind.mdb”
RecordSource=“Employees” 接下來創(chuàng)建一個(gè)DataGrid控件的實(shí)例,,設(shè)置其屬性為:
DataSource=“adodc1” 隨后將光標(biāo)移動(dòng)到 DataGrid 的上方,右擊鼠標(biāo),,選擇“檢索字段”快捷菜單,。此時(shí)您敲 F5
試試看,程序已經(jīng)工作了! 如何設(shè)計(jì)一個(gè)打印員工清單的報(bào)表呢,?不象VB5那樣提供一個(gè)附帶的第三方報(bào)表控件,,VB6提供了集成的
DataReport,使用 DataReport
設(shè)計(jì)器設(shè)計(jì)報(bào)表非常方便,。其步驟如下: (1)選擇菜單“工程/添加ActiveX設(shè)計(jì)器/數(shù)據(jù)環(huán)境”,,
屏幕上將出現(xiàn)一個(gè)設(shè)計(jì)器窗口。右擊Connection1 項(xiàng),,更改其屬性,,令其采用“Microsoft OLE DB Access
Provider”及Nwind.mdb 數(shù)據(jù)庫(kù),然后增加一個(gè)新命令“Command”,,令其連接值為
Connection1,,數(shù)據(jù)對(duì)象的類型為表,而值為“Employees”表,。 (2)選擇工程菜單,,建立一個(gè)DataReport,設(shè)置其
屬性,。
(3)然后在設(shè)計(jì)畫面上右擊鼠標(biāo),,檢索字段,接下來根據(jù)需要和美觀重新排列各字段的位置和大小,、字體,。 (4)引用報(bào)表,。為了在運(yùn)行
時(shí)打印報(bào)表,,可以在窗體上添加一個(gè)按鈕,在其 Click 事件里用代碼來控制報(bào)表的打印,。例如: Private Sub
btnPrint_Click() DataReport1.PrintReport End Sub 當(dāng)然,,上述關(guān)于數(shù)
據(jù)庫(kù)的介紹才剛剛接觸了ADO的一點(diǎn)皮毛,如果想成為高手,,還請(qǐng)多多練習(xí),。
八、用Visual Basic 6.0進(jìn)行多媒體編程
用VB6可以進(jìn)行多媒體編程嗎,?當(dāng)然可以,。VB的運(yùn)行效率雖然低于VC、Delphi,,但是用于多媒體編程仍然是勝任的,,尤其VB從5.0開始
提供了本地代碼編譯器,其運(yùn)行效率已經(jīng)突飛猛進(jìn),,今非昔比,。 其實(shí)所謂多媒體,其“多”不過是聲音、圖像,、觸摸屏等等技術(shù)的有機(jī)組合而已,。以下
簡(jiǎn)單講解如何顯示圖像、播放AVI視頻動(dòng)畫等的方法: 1.顯示圖像 您看到了VB6工具箱上的 PictureBox 和
Image 控件圖標(biāo)了嗎,?它們都可以用于顯示圖像,,包括JPEG、BMP,、GIF,、WMF等多種流行的圖像文件格式。 請(qǐng)建立一個(gè)窗體,,建立
一個(gè) PictureBox 控件,,將其 Picture 屬性設(shè)置為預(yù)顯示的文件的全稱路徑名。圖像就顯示出來了,。 為了控制其在運(yùn)行時(shí)刻的
變化,,一般可以采用如下辦法: (1)改變其 Left、Top 值來移動(dòng)其位置,,達(dá)到動(dòng)畫的效果,; (2)通過創(chuàng)建兩個(gè)
PictureBox 控件,一個(gè)可見,,一個(gè)不可見,,并調(diào)用其PaintPicture
方法來將不可見控件上的圖像逐步復(fù)制到可見的控件上。采用這種方法可以做到圖片的擦入擦出,、百葉窗式的畫面切換等效果,; (3)通過對(duì)
PictureBox 的 DC 值操縱,可以動(dòng)畫調(diào)色板,,達(dá)到淡入淡出的效果?,F(xiàn)在的程序一般不再如此處理,而是將 PictureBox
分割成很小的塊塊,,然后隨機(jī)將其擦除或顯現(xiàn)來達(dá)到淡入淡出的效果,; 在實(shí)踐中,大家一定會(huì)發(fā)現(xiàn)實(shí)現(xiàn)各種漂亮效果的方法,。請(qǐng)到時(shí)一定要給我來信啦
([email protected]),。 2.播放AVI視頻 播放AVI視頻可以采用Windows 9x提供的MCI
控件。媒體控制接口 (MCI)
可以用于播放或錄制音頻,、視頻,、波形文件等多種媒體信息。從概念上說,,這種控件就是一組按鈕,,它被用來向諸如聲卡,、MIDI 序列發(fā)生器、CD-ROM
驅(qū)動(dòng)器,、視頻 CD 播放器和視頻磁帶記錄器及播放器等設(shè)備發(fā)出 MCI 命令,。 使用 MCI
控件記錄音頻信號(hào)之前,應(yīng)打開一個(gè)新的文件,。這樣就可以保證記錄聲音的數(shù)據(jù)文件格式與系統(tǒng)記錄格式完全兼容,。在關(guān)閉 MCI 設(shè)備之前,還應(yīng)該發(fā)出
MCI Save 命令,,把記錄的數(shù)據(jù)保存到文件中去,。MCI 控件允許通過多種方法編程:
在運(yùn)行時(shí),控件是否可見,;可以增加或完全重新定義控件中按鈕的功能等,;也可通過MCI的方法或?qū)傩詠砜刂泼襟w的播放。 下面的代碼演示了播放一
個(gè)AVI文件的過程,。將這些代碼放到 Form_Load 過程,,應(yīng)用程序就可以使用 MCI 控件來對(duì)文件 Test.AVI
進(jìn)行播放。在試運(yùn)行這個(gè)示例之前,,首先應(yīng)創(chuàng)建一個(gè)包含 MCI 控件的窗體,。 Private Sub Form_Load ()
Set properties needed by MCI to open. MMControl1.Notify =
FALSE MMControl1.Wait = TRUE MMControl1.Shareable = FALSE
MMControl1.DeviceType = “ MMMovie” MMControl1.FileName = “
C:\Test.AVI” '打開 MCI MMMovie 設(shè)備。 MMControl1.Command =
“Open” End Sub 為了正確管理多媒體資源,,在退出應(yīng)用程序之前,,必須關(guān)閉已經(jīng)打開的 MCI 設(shè)備。將下面的語(yǔ)句放到
Form_Unload 過程: Private Sub Form_Unload (Cancel As Integer)
MMControl1.Command = “Close” End Sub 通過MCI還可以完成很多很多事情,,只要有相應(yīng)的
VCD/DVD驅(qū)動(dòng)程序,,您甚至可以在自己的程序里播放VCD/DVD。 3.字符動(dòng)畫 WinAmp
的版權(quán)畫面是不是很“眩”,?用VB實(shí)現(xiàn)非常簡(jiǎn)單,。 首先建立一個(gè)窗體,在此窗體上建立一個(gè) Frame
容器控件,,根據(jù)需要,在此控件上建立若干個(gè) TextBox或 Label或 Image 控件,,輸入您的版權(quán)信息或其它想表現(xiàn)的文字,、圖案。
然后再建立一個(gè) Timer 控件,,將Interval 設(shè)置為 10,,然后在其 Timer 事件中操縱 Frame 的位置就可以有動(dòng)畫效果了:
Private Sub Timer1_Timer() Frame1.Top = Frame1.Top - 20
DoEvents End Sub 不過,你應(yīng)該加入適當(dāng)?shù)呐袛嗪湾e(cuò)誤處理語(yǔ)句以免程序表現(xiàn)出火,。
九,、用Visual Basic 6.0設(shè)計(jì)ActiveX/ActiveX Doc
基于部件的開發(fā)是目前最流行的方法論。 程序員可以把經(jīng)過測(cè)試的標(biāo)準(zhǔn)部件裝配成應(yīng)用程序,所以應(yīng)用部件開發(fā)方法可以縮短編程時(shí)間,,并
開發(fā)出更強(qiáng)有力的產(chǎn)品,。轉(zhuǎn)向部件軟件已成為軟件工業(yè)中最引人注目的一大趨勢(shì)。在Windows 平臺(tái)上的部件編程,,主要是微軟公司致力的部件對(duì)象模型
(COM),,包括 Automation 和 ActiveX 規(guī)范,使用戶所創(chuàng)建的軟件部件可以與購(gòu)買的軟件部件一起順利運(yùn)行,。 VB6使得
實(shí)現(xiàn)ActiveX 部件的創(chuàng)建更加容易,。Visual Basic 為快速創(chuàng)建、調(diào)試和部署軟件部件提供了 ActiveX 控件,、ActiveX
文檔,、代碼部件以及提供對(duì)象的應(yīng)用程序等向?qū)Щ蚬ぞ摺?br> 確定部件的類型可以這樣考慮:如果需要提供服務(wù)的部件是不可視的,就要建立一個(gè)代碼部
件,,或者是ActiveX EXE或者是ActiveX DLL,。
如果所需要建立的部件能夠與您的應(yīng)用程序運(yùn)行在同一個(gè)進(jìn)程中,則應(yīng)該建立一個(gè)ActiveX DLL,。例如,,能夠執(zhí)行復(fù)雜計(jì)算的部件就屬于這種情況。
如果您需要的是一個(gè)可視的部件,,并且在設(shè)計(jì)時(shí)能夠被拖放到一個(gè)應(yīng)用程序中,,那么應(yīng)該建立的是ActiveX控件。例如,,一個(gè)能夠正確格式化并驗(yàn)證電話號(hào)
碼的“電話號(hào)碼”控件,,就屬于這種情況;這樣的控件無疑在許多應(yīng)用程序中都是有用的,。 以下僅以VB6本身帶的例子(建立一個(gè)ActiveX
DLL,,向外提供一個(gè)將字符串順序顛倒的函數(shù))為例,作一簡(jiǎn)單講解: (1)首先新建工程,,類型為“ActiveX DLL工程”,。
(2)VB 將自動(dòng)為該工程自動(dòng)添加一個(gè)類模塊 Class1。 (3)按 F4 鍵打開“屬性”窗口,。雙擊“名稱”屬性并把它改成
Thing,。以后在通過類創(chuàng)建對(duì)象時(shí)需要使用這個(gè)名稱。 (4)Instancing 屬性的缺省值是 MultiUse,,不必改變,。
(5)在“工程”菜單中,單擊“Project1 屬性”打開“工程屬性”對(duì)話框,。選擇“通用”選項(xiàng)卡,,填寫以下信息,,然后單擊“確定”。
工程名:ThingDemo ,,同時(shí)用作部件的類型庫(kù)的名稱,,如果兩個(gè)部件各自提供了一個(gè) Thing
類,那么需要對(duì)類名進(jìn)行完全的限定,,以區(qū)分到底要使用哪一個(gè)部件的 Thing 類,,例如 ThingDemo.Thing。 啟動(dòng)對(duì)
象:Sub Main(),。 工程描述:描述出工程的功能或作用等 (6)添加一個(gè)模塊,,并在模塊中鍵入以下代碼:
Public gdatServerStarted As Date Sub Main() '部件開始時(shí)要執(zhí)行的代碼,
'對(duì)第一個(gè)對(duì)象的請(qǐng)求作出反應(yīng),。 gdatServerStarted = Now Debug.Print “E
xecuting Sub Main” End Sub'為對(duì)象提供唯一標(biāo)識(shí)符的函數(shù),。 Public Function
GetDebugID() As Long Static lngDebugID As Long lngDebugID =
lngDebugID + 1 GetDebugID = lngDebugID End Function (7)保存
工程。工程名為 ThingDemo,。 (8)接下來,,要為類創(chuàng)建屬性,這需要在類模塊中添加公共變量和屬性過程,。要為類創(chuàng)建方法,,需要在類模
塊中添加 Public Sub 和 Public Function。下面的步驟為 Thing 類創(chuàng)建了兩個(gè)屬性和一個(gè)方法: Name
屬性是可以由客戶應(yīng)用程序檢索并設(shè)置的字符串,。 DebugID (只讀)屬性返回一個(gè)順序號(hào),,表示 Thing 對(duì)象創(chuàng)建的次序。
ReverseName 方法顛倒 Name 屬性中字母的順序,。 (9)在類模塊中聲明 Public Name As
String (10)在 Thing 類模塊中創(chuàng)建一個(gè)只讀的屬性DebugID,,請(qǐng)加入以下代碼: Private
mlngDebugID As Long ' 加到聲明部分 Public Property Get DebugID() As Long
DebugID = mlngDebugID End Property 由于 DebugID
是只讀的屬性,因此客戶程序僅能讀取而不能修改它,。引用的方法是 對(duì)象名.屬性,,例如: Private Sub
Command1_Click() Dim t As ThingDemo.Thing Set t = New
ThingDemo.Thing MsgBox t.DebugID End Sub (11)創(chuàng)建
ReverseName 方法: 在“工具”菜單中,單擊“添加過程”打開“添加過程”對(duì)話框,。在“名稱”框中,,輸入
ReverseName。單擊“子程序”和“公共的”,,然后單擊“確定”,。 在 Thing 類模塊的新的 Sub 過程中輸入下列代碼:
Public Sub ReverseName() Dim intCt As Integer Dim strNew As
String For intCt = 1 To Len(Name) strNew = Mid$(Name, intCt,
1) & strNew Next Name = strNew End Sub (12)類模塊有兩
個(gè)內(nèi)置的事件:Initialize 和 Terminate。Initialize
事件過程中的代碼在創(chuàng)建對(duì)象時(shí)首先執(zhí)行,,領(lǐng)先于其它任何設(shè)置屬性或執(zhí)行方法的動(dòng)作。 在對(duì)象的所有引用都被釋放以后要執(zhí)行 Terminate
事件中的代碼,,然后對(duì)象就被破壞,。 在VB的例子中,,加入了一些代碼來觀察對(duì)象被創(chuàng)建和銷毀的狀態(tài)提示代碼,在此忽略,。 (13)
至此,,整個(gè)工程建立完畢,就可以測(cè)試乃至編譯了,。 (14)測(cè)試的方法很簡(jiǎn)單,,再“添加”一個(gè)測(cè)試工程,然后將測(cè)試工程和上述的工程組成一個(gè)
“工程組”,。然后在“工程”菜單中,,單擊“引用”打開“引用”對(duì)話框。選擇“ThingDemo”,,然后單擊“確定”,。這樣測(cè)試工程就可以使用
ThingDemo 了,包括屬性,、方法,、事件等。 ActiveX EXE 的設(shè)計(jì)方法和ActiveX
DLL一樣,,只不過DLL運(yùn)行在調(diào)用者進(jìn)程,,而EXE擁有自己的進(jìn)程,甚至可以被部署在網(wǎng)絡(luò)中的任意一臺(tái)機(jī)器上,,只要他們支持 DCOM 即可,。
ActiveX 控件與ActiveX DLL
有所不同,控件一般都是可視的,,而DLL都是不可視的,,可以接受用戶的輸入和向外部顯露某種信息。有了VB6,,其設(shè)計(jì)方法卻并不復(fù)雜,,讀者有了上述基礎(chǔ),
再稍微閱讀一下MSDN資料,,就可以輕松設(shè)計(jì)自己的控件,。
十、用Visual Basic 6.0設(shè)計(jì)DHTML/ASP
利用VB的Internet 編程特性,,程序員可以制作運(yùn)行在客戶端或服務(wù)器端的應(yīng)用程序,,在基于窗體的應(yīng)用程序內(nèi)部顯示 HTML
頁(yè)面,或者可以在 Web 上使用 ActiveX 組件,。 如果你是一個(gè)VB愛好者,,并且最終用戶總是使用IE瀏覽器,這時(shí)你就可以利用
VB6提供的DHTML/IIS能力來設(shè)計(jì)您的B/S模式的應(yīng)用,。如果你的用戶使用IE以外的瀏覽器,,請(qǐng)不要使用ActiveX
DOC/DHTML一類的技術(shù),。 DHTML 應(yīng)用程序是一個(gè)
VB程序,它在一個(gè)交互的,、基于瀏覽器的應(yīng)用程序中使用一種動(dòng)態(tài)HTML和已編譯 Visual Basic 代碼組合,。一個(gè) DHTML
應(yīng)用程序駐留在瀏覽器所在的機(jī)器上,它在那里解釋和響應(yīng)瀏覽器中最終用戶執(zhí)行的操作,。 一個(gè)DHTML 應(yīng)用程序可以是一個(gè)單一的 HTML
頁(yè)面,,它可以完成很多工作,例如: ·從頁(yè)面獲取數(shù)據(jù)并使用這種方法查詢一個(gè)數(shù)據(jù)庫(kù),。 ·更新頁(yè)面的外觀和行為,。 ·在
響應(yīng)用戶請(qǐng)求時(shí)創(chuàng)建 HTML 元素并插入到一個(gè)頁(yè)面。 動(dòng)態(tài) HTML 是對(duì) HTML
的擴(kuò)充,,可不依賴于腳本或服務(wù)器端的處理,,就能夠動(dòng)態(tài)地更新它們的內(nèi)容以及與用戶進(jìn)行交互。當(dāng)創(chuàng)建一個(gè) DHTML 應(yīng)用程序時(shí),,產(chǎn)生的頁(yè)面使用在
Internet Explorer 4.X中的動(dòng)態(tài) HTML 技術(shù),。動(dòng)態(tài) HTML 對(duì)象模型允許以一種新的方法與
HTML頁(yè)面進(jìn)行交互—例如,操縱它們的屬性,、方法和事件,,以及對(duì)頁(yè)面的布局進(jìn)行精細(xì)的控制。
使用DTML對(duì)象模型,,可以訪問和操作應(yīng)用程序HTML頁(yè)面中的任何東西,。一個(gè)頁(yè)面中的HTML元素可以作為單獨(dú)的對(duì)象使用,這意味著可以通過
讀取和設(shè)置屬性以及調(diào)用方法來檢查和修改元素和它們的屬性,。元素中的文本可以通過元素的屬性和方法得到,。在以前,您必須使用
Java腳本/VB腳本等技術(shù)手段,,并且控制起來比較麻煩,,現(xiàn)在隨著DHTML的流行,你可以更加實(shí)時(shí),、容易的控制HTML頁(yè)面的顯示以及與用戶的交互
了,。而VB6提供了這么好的工具,你自然要學(xué)習(xí)它提高設(shè)計(jì)能力啦,! 如同
Java腳本所“見”的對(duì)象層次,,在VB6中的層次大同小異,如果你有Java腳本或VB腳本的編程經(jīng)驗(yàn),,應(yīng)該對(duì)這些概念非常熟悉,。 對(duì)于VB
的目標(biāo),對(duì)象模型中的兩個(gè)主要對(duì)象是BaseWindow對(duì)象和Document對(duì)象。
BaseWindow對(duì)象表示瀏覽器的一個(gè)實(shí)例,,它被用來顯示Document對(duì)象,,其實(shí)就是您打開的某個(gè)真正的窗口,。Document對(duì)象表示在瀏覽器
中查看的HTML頁(yè)面,,使用Document對(duì)象的事件訪問動(dòng)態(tài)HTML對(duì)象模型并且在瀏覽器中處理用戶的操作。通過對(duì)這兩個(gè)對(duì)象及其包含的子對(duì)象的操
縱,,就等于操縱了HTML的方方面面,。 另外,動(dòng)態(tài)HTML還支持很多事件,,例如: ·onkeydown:當(dāng)一個(gè)鍵被按下時(shí)激發(fā),。
·onkeypress: 當(dāng)用戶的鍵盤輸入被轉(zhuǎn)換為一個(gè)字符時(shí)激發(fā)。 ·keyup: 鍵被釋放,。
·onclick: 用戶單擊事件,,或按ENTER也可激發(fā)這個(gè)事件。 ·doubleclick: 用戶雙擊事件,。
·Visual Basic事件: DHTML相同的事件注釋,。 ·onfocus: 輸入焦點(diǎn)進(jìn)入控件時(shí)觸發(fā)此事件。
·onsubmit: 當(dāng)用戶在表格上選擇“提交”按鈕時(shí)激發(fā),。 為了克服Internet應(yīng)用程序沒有狀態(tài)的問題,,DHTML應(yīng)用程序提供了
一組函數(shù)來保存或恢復(fù)連接的狀態(tài),當(dāng)然,,狀態(tài)信息被保存在 cookie
中,。函數(shù)GetProperty和PutProperty分別保存和獲取數(shù)據(jù)。只要最終用戶的Web瀏覽器窗口是打開的,,這些函數(shù)就保存著數(shù)據(jù),。
下面再談?wù)処IS應(yīng)用程序:IIS 應(yīng)用程序是一個(gè) VB 應(yīng)用程序,它在一個(gè)動(dòng)態(tài)的,、基于瀏覽器的應(yīng)用程序中使用
HTML和已編譯VB代碼的組合,。IIS 應(yīng)用程序駐留在一個(gè) Web
服務(wù)器上,它接受來自瀏覽器的請(qǐng)求,,運(yùn)行與請(qǐng)求相關(guān)聯(lián)的代碼并返回響應(yīng)到瀏覽器,。通過 IIS
應(yīng)用程序的這些應(yīng)用,您可以根據(jù)用戶在瀏覽器上進(jìn)行的操作執(zhí)行復(fù)雜的處理,。IIS 應(yīng)用程序可以使用 VB 代碼來執(zhí)行以前用腳本,、CGI 處理和其他
Internet 應(yīng)用程序開發(fā)方法完成的大多數(shù)相同的處理。 IIS 應(yīng)用程序是根據(jù)微軟IIS(Internet服務(wù)器)而命名的,,而
IIS是Web 服務(wù)器,,用于運(yùn)行您的程序。IIS 應(yīng)用程序可以在 Internet/Intranet
中的任何瀏覽器上運(yùn)行,,因此它很容易得到廣泛的支持,。 IIS 應(yīng)用程序在表面上和 ASP
相似,。但是,每一種都有自己獨(dú)特的優(yōu)點(diǎn),。ASP適合于對(duì)制作 Web 頁(yè)面感興趣的腳本開發(fā)者,,它提供了將腳本和 HTML 混合起來的獨(dú)特能力。IIS
應(yīng)用程序適合于構(gòu)造基于 Web 應(yīng)用程序而不是 Web 頁(yè)面的 Visual Basic 開發(fā)者,。IIS
應(yīng)用程序允許復(fù)雜的事務(wù)處理,,并且?guī)缀跞魏蔚臑g覽器或平臺(tái)都可以很容易地訪問它。 所謂的IIS 應(yīng)用程序是以一個(gè).asp (Active
Server Pages)文件為宿主的,,并且利用 ASP 對(duì)象模型中的幾個(gè)對(duì)象,。Webclass 使用這些對(duì)象來訪問和操作來自一個(gè) HTML
頁(yè)面的信息。一個(gè) Webclass 可以使用ASP的對(duì)象,。 Webclass 是一個(gè)駐留在 Web 服務(wù)器上并響應(yīng)瀏覽器輸入的
Visual Basic 部件,。當(dāng)創(chuàng)建一個(gè) IIS 應(yīng)用程序時(shí),您使用 IIS 應(yīng)用程序設(shè)計(jì)器創(chuàng)建它的Webclass,。Webclass
一般包含Webitem和向客戶交付這些 Webitem 的代碼,。 ASP對(duì)象則包括如: ·Request:從瀏覽器的最終用
戶接受請(qǐng)求。 ·Response:向?yàn)g覽器發(fā)送信息以便向用戶顯示它,。 ·Session:維護(hù)有關(guān)當(dāng)前用戶會(huì)話的信息并保存和獲
取狀態(tài)信息,。 ·Application:多個(gè) Webclass 實(shí)例共享的管理狀態(tài)。 ·Server:創(chuàng)建其他的對(duì)象并確定服
務(wù)器特定的屬性,,這些屬性可能影響 Webclass 的處理,。 鑒于
DHTML/IIS應(yīng)用程序的概念和實(shí)現(xiàn)無法在較短的篇幅內(nèi)說清楚,因此僅僅對(duì)概念部分給予簡(jiǎn)要說明,。
十一,、Visual Basic 6.0調(diào)用Win 32 API
VB6的功能非常強(qiáng)大,但是仍然有一些未包含的功能,,此時(shí)就需要直接調(diào)用動(dòng)態(tài)鏈接庫(kù)(DLL)中的過程了,。通過 DLL,程序員可以訪問構(gòu)成
Microsoft Windows 操作系統(tǒng)主體的成千上萬(wàn)個(gè)過程,,以及其它語(yǔ)言編寫的各種例程,。 DLL
是一種過程庫(kù),應(yīng)用程序可以在運(yùn)行時(shí)鏈接并使用它,,這種鏈接不同于編譯時(shí)的靜態(tài)鏈接,。這意味著DLL
庫(kù)的更新可以獨(dú)立地進(jìn)行,而且許多個(gè)應(yīng)用程序可以共享同一個(gè) DLL,。Windows 本身就是由若干個(gè) DLL
組成的,,其它應(yīng)用程序可以調(diào)用這些庫(kù)中的過程,完成窗口與圖形的顯示、內(nèi)存管理或其他任務(wù),。這些過程有時(shí)被稱為 Windows
API(應(yīng)用程序接口),。 為了調(diào)用DLL 過程,必須首先在模塊中聲明,,例如聲明 SetWindowTextA的格式為:
Private Declare Function SetWindowText Lib “user32” _ Alias
“SetWindowTextA” (ByVal hwnd As Long, _ ByVal lpString As String)
As Long 過程,、函數(shù)、常量的精確語(yǔ)法定義可以用 API Viewer 應(yīng)用程序找到,,在 Win32api.txt
文件中也可以找到它,。如果將 Declare 放在 Form 或者 Class 模塊內(nèi),那么必須在它的前面加上 Private 關(guān)鍵字,。同一個(gè)
DLL 過程在一個(gè)工程中只需聲明一次;然后可以任意調(diào)用,。 調(diào)用 DLL
過程如同調(diào)用VB本身提供的函數(shù)一樣,,在感覺上沒有什么不同。例如調(diào)用上述函數(shù)的語(yǔ)法為: Private Sub Form_Load()
SetWindowText Form1.hWnd, “Hello World” End Sub 在運(yùn)行這段代碼時(shí),,函數(shù)
首先使用 hWnd 屬性確定要修改標(biāo)題欄的窗口(Form1.hWnd),,然后將標(biāo)題欄修改為“Hello World”。
十二,、Visual Basic 6.0的其它激動(dòng)人心的特性或功能
1.存儲(chǔ)過程編輯器,、可視化數(shù)據(jù)庫(kù)工具集成 SQL 編輯器允許您從 VB開發(fā)環(huán)境內(nèi)部創(chuàng)建和編輯用SQL Server 和
Oracle
編寫的存儲(chǔ)過程和觸發(fā)器。大大方便了編寫C/S模式或3層結(jié)構(gòu)數(shù)據(jù)庫(kù)的應(yīng)用軟件,。查詢?cè)O(shè)計(jì)器和數(shù)據(jù)庫(kù)設(shè)計(jì)器允許您可視地創(chuàng)建并修改數(shù)據(jù)庫(kù)結(jié)構(gòu)描述和查詢:
創(chuàng)建 SQL Server 和 Oracle 數(shù)據(jù)庫(kù)表,、通過拖放來創(chuàng)建視圖、以及自動(dòng)更改列的數(shù)據(jù)類型,。 VB6的這一新特性極大的提高了
程序員的生產(chǎn)率,。 2.Coolbar 控件 有很多朋友想設(shè)計(jì)一個(gè)和Office97的工具條類似的東西,現(xiàn)在好了,,不要使用第三
方控件,,就可以輕松達(dá)到這個(gè)目的。 3.DataRepeater 控件 VB程序員再也用不著羨慕Delphi提供的類似功能了,。
現(xiàn)在VB6提供了DataRepaeater控件,,它與 Access 的連續(xù)窗體類似,將 UserControl 插入DataRepeater
中就可以創(chuàng)建數(shù)據(jù)庫(kù)的一個(gè)自定義視圖,。UserControl 可以包含 TextBox,、CheckBox、DataGrid
或其他綁定到數(shù)據(jù)字段的控件,。 4.文件系統(tǒng)對(duì)象 一套經(jīng)過優(yōu)化的,、遍歷文件系統(tǒng)以及創(chuàng)建文本文件和目錄的例程。 VB早
已不僅僅是一種語(yǔ)言,經(jīng)微軟公司的多年演繹,,它在編程,、Office系列軟件、Internet等很多領(lǐng)域施展身手,,作為微軟戰(zhàn)略的重要組成,,選擇并使用
VB是一種合乎潮流的選擇。
原作者: 龐一鳴
|