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