精典VB最簡單入門教程_第1頁
精典VB最簡單入門教程_第2頁
精典VB最簡單入門教程_第3頁
精典VB最簡單入門教程_第4頁
精典VB最簡單入門教程_第5頁
已閱讀5頁,還剩82頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VB最簡單入門教程.PAGE 精典制作工作室!歡迎下載使用!VB最簡單入門教程 HYPERLINK mailto: Sunming29制作Tahoma,8,134PAGE 86目 錄(提示:按ctrl,并單擊鼠標(biāo),可以跳到相應(yīng)頁) TOC o 1-3 h z u HYPERLINK l _Toc265407797 HYPERLINK l _Toc265407798 1.1 1 我們需要什么3 HYPERLINK l _Toc265407799 1.2 2 第二章:事件、屬性及數(shù)據(jù)類型3 HYPERLINK l _Toc265407800 1.3 3 第三章:VB語言6HYPERLINK l B

2、ookmark81.4 4-1第四章按鈕(一)12 HYPERLINK l _Toc265407802 1.5 4- 第四章按鈕(二) PAGEREF _Toc265407802 h 19 HYPERLINK l _Toc265407803 1.6 5 第五章菜單27 HYPERLINK l _Toc265407804 1.7 6-1第六章輸入(一)34 HYPERLINK l _Toc265407805 1.8 6-2第六章輸入(二)42 HYPERLINK l _Toc265407806 1.9 6-3第六章輸入(三)52 HYPERLINK l _Toc265407807 1.10 7第

3、七章輸出59 HYPERLINK l _Toc265407808 附錄63 HYPERLINK l _Toc265407809 2.1 VB教程631.1 1我們需要什么我們需要什么?當(dāng)我們在一個精彩的游戲世界中游歷了一番之后,或是驚嘆于某一工具軟件的小巧精致之余,多少總會產(chǎn)生些許編程的沖動。編程嗎,在以前如果你對電腦還是一個門外漢,那實(shí)在是一件可望而不可及的事情。如果運(yùn)用基于DOS下的編程語言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。編程是需要天賦的,你必須在大腦中對整個程序有一個清晰的輪廓,一個高效的流程,這并不是每個人都能做到的,你必須思之慎之,這也使編程變成

4、一件最枯燥無味的事情。但在第四代計算機(jī)語言(可視化編程)出現(xiàn)后,可以確切的說它開發(fā)了人們的更多天賦,并不局限于那些頭腦異常清晰的人,每一個人都可以發(fā)現(xiàn)自己也可以編出一些從前不敢問津的程序,想象力的充分發(fā)揮才是第四代語言的精粹。Visual Basic(以下簡稱VB)可以說是可視化語言的先驅(qū)了,而且它也是可視化程度最高的一個,從幾年前VB誕生之日起到現(xiàn)在,它已經(jīng)經(jīng)歷了五個版本,而且現(xiàn)在微軟正在緊張的進(jìn)行著VB6.0的研制、測試,這么高的更新率,不外乎說明兩個問題:用戶對VB的熱衷,微軟對VB的重視。不可否認(rèn)微軟對市場的預(yù)測能力是極為高明的,而它強(qiáng)大的技術(shù)、財力支持也使它在許多以前未進(jìn)入的領(lǐng)域,在

5、不長的時間內(nèi)有成為最有力的競爭對手,如IE之于瀏覽器領(lǐng)域,帝國時代之于游戲都是最好的例證。對于VB現(xiàn)在也有一個很強(qiáng)的競爭對手Delphi,有人把它稱作VB殺手,這顯然有偏激之處,VB的確有它的不足之處,但Delphi又何嘗不是呢,而且以微軟對VB的傾心,VB的功能必然會越來越強(qiáng)大。VB的誕生VB的出現(xiàn)可以說是Microsoft Windows的日漸成熟的必然產(chǎn)物。Microsoft Windows為程序員和最終用戶提供了一個共同的人機(jī)界面。對用戶,Windows提供了一個圖形鼠標(biāo)的操作環(huán)境,該環(huán)境對所有的應(yīng)用程序都一樣;對于程序員,Windows提供了一組預(yù)定義工具稱之為Microsoft W

6、indows 的軟件開發(fā)工具箱(SDK),該工具能使程序員建立一個與Windows界面相同的應(yīng)用程序,而且,程序員不必關(guān)心最終用戶的硬件配置情況。在這一開發(fā)環(huán)境中,程序員唯一困難的是Microsoft SDK提供了六百多個函數(shù)和與其一致的事件驅(qū)動(event-driven)編程技術(shù)。兩種新方法的交叉使眾多的程序員重新陷入困境,程序員不僅要掌握程序驅(qū)動編程技術(shù)和六百多個函數(shù)的功能,而且還得用C語言描述這些問題。因此一般情況下,程序員首先要掌握C程序設(shè)計技術(shù),而后再開始學(xué)習(xí)SDK。這樣的條件下就要求在Microsoft多任務(wù)環(huán)境下出現(xiàn)一種操作方便,使用簡單的新工具Visual Basic由此誕生。

7、 何為可視 英文Visual的意思是“視覺的”,“可視的Baisc”這個名字可能抽象了點(diǎn),但實(shí)際上它卻是最直觀的編程方法,之所以叫做“可視”,你只要看到VB的界面就會明白,實(shí)際上你無需編程,就可以完成許多步驟。在VB中引入了控件的概念,在Windows中控件的身影無處不在,各種各樣的按鈕、文本框、無線鈕,都是控件的種類,VB把這些控件模式化,并且每個控件都有若干屬性用來控制控件的外觀,工作方法。這樣你就可以象在畫板上一樣,隨意點(diǎn)幾下鼠標(biāo),一個按鈕就完成了,這些在以前的編程語言下是要經(jīng)過相當(dāng)復(fù)雜的工作的。1.2 2第二章:事件、屬性及數(shù)據(jù)類型以后兩章可能會比較枯燥,但不可否認(rèn)也很重要,所以為了學(xué)

8、好VB,我們一定要打好基礎(chǔ)才行。一、事件通過上一章的例子,你可能對“面向?qū)ο蟮木幊獭币呀?jīng)有了一定了解,它是由事件驅(qū)動的,對于不同的對象,所能感應(yīng)到的事件也會不同,譬如說當(dāng)你把鼠標(biāo)移進(jìn)某一區(qū)域時就會觸發(fā)MouseMove事件,這很直觀,也容易理解,但也有些事件比較抽象,下面我來對一般的事件進(jìn)行一下解釋。窗體和圖象框類事件 Paint事件:當(dāng)某一對象在屏幕中被移動,改變尺寸或清除后,程序會自動調(diào)用Paint事件。注意:當(dāng)對象的AutoDraw屬性為True(1)時,程序不會調(diào)用Paint事件。 Resize事件:當(dāng)對象的大小改變時觸發(fā)Resize事件。 Load事件:僅適用于窗體對象,當(dāng)窗體被裝載

9、時運(yùn)行。 Unload事件:僅適用于窗體對象,當(dāng)窗體被卸載時運(yùn)行。 2.當(dāng)前光標(biāo)(Focus)事件GotFocus事件:當(dāng)光標(biāo)聚焦于該對象時發(fā)生事件。 LostFocus事件:當(dāng)光標(biāo)離開該對象時發(fā)生事件。 注意:Focus英文為“焦點(diǎn)”、“聚焦”之意,最直觀的例子是,比如有兩個窗體,互相有一部分遮蓋,當(dāng)你點(diǎn)下面的窗體時,它就會全部顯示出來,這時它處在被激活的狀態(tài),并且標(biāo)題條變成藍(lán)色,這就是GotFocus事件,而相反,另外一個窗體被遮蓋,并且標(biāo)題條變灰,稱為LostFocus事件。上面所說的“光標(biāo)”并非指鼠標(biāo)指針。 3.鼠標(biāo)操作事件Click事件:鼠標(biāo)單擊對象。 DbClick事件:鼠標(biāo)雙擊事

10、件。 MouseDown、MouseUp屬性:按下/放開鼠標(biāo)鍵事件。 MouseMove事件:鼠標(biāo)移動事件。 DragDrop事件:拖放事件,相當(dāng)于MouseDown、MouseMove和MouseUp的組合。 DragOver事件:鼠標(biāo)在拖放過程中就會產(chǎn)生DragOver事件。 4.鍵盤操作屬性KeyDown、KeyUp事件:按鍵的按下/放開事件。 KeyPress事件:按鍵事件。 5.改變控制項(xiàng)事件Change事件:當(dāng)對象的內(nèi)容發(fā)生改變時,觸發(fā)Change事件。最典型的例子是文本框(TextBox)。 DropDown事件:下彈事件,僅用于組合框(ComboBox)對象。 PathChan

11、ge事件:路徑改變事件,僅用于文件列表框(FileBox)對象。 6.其他事件Timer事件:僅用于計時器,每隔一段時間被觸發(fā)一次。 二、屬性 每個對象都有它的屬性,并且“Name”屬性是共有的,有了“Name”屬性才可以在程序中進(jìn)行調(diào)用。對于屬性,可以在窗體的布局操作中完成,也可以在程序運(yùn)行中改變,這取決你的需要,但有些屬性是只讀的,它只能在控件布局時改變。我將在以后的實(shí)例中具體介紹各個屬性的作用。 三、數(shù)據(jù)類型 學(xué)過編程的人都知道大多數(shù)的計算機(jī)語言都規(guī)定了各自的數(shù)據(jù)類型,VB也不例外。其實(shí),在一個最簡單的程序中數(shù)據(jù)類型是可以不作規(guī)定的,也就是說,變量可以使用各種類型,但是在一個復(fù)雜的程序里

12、,這樣做就很危險,因?yàn)楹芸赡芙o同一個變量賦予了不同的類型,而導(dǎo)致程序出錯。所以,為了程序的嚴(yán)謹(jǐn)和便于查看,正確的定義數(shù)據(jù)類型是必要的。定義數(shù)據(jù)的另一個原因是,不同的數(shù)據(jù)占用不同的內(nèi)存數(shù)量,譬如整型(Interger)數(shù)據(jù)占2字節(jié),而長整型數(shù)據(jù)占4個字節(jié),定義合適的數(shù)據(jù)類型,不管你相信不相信,它可以節(jié)省內(nèi)存!VB常用的數(shù)據(jù)類型有:整型(Integer,表示-32768至32767之間的整數(shù))、長整型(Long,表示-2,147,483,648至2,147,483,647之間的整數(shù))、實(shí)型(Single,表示-3.37E+38至3.37E+38之間的實(shí)數(shù))、雙精度實(shí)型(Double,表示-1.67

13、E+308至1.67E+308之間的實(shí)數(shù)),字符(String,每個字符占一字節(jié),可以儲存065,535個字符),布爾(Boolean,只有兩個值True/-1,或False/0)。 數(shù)據(jù)類型的定義方法: 定義變量最簡單的方法是用“Dim”關(guān)鍵字,它的語法: Dim 【變量名】As 【數(shù)據(jù)類型】如:Dim Index As Integer也可以在一行中定義多個變量,如:Dim Index As Integer , Dim Number As Long把多個變量定義成同一類型可以寫成:Dim Index , Number As Integer 更可以在定義時進(jìn)行初賦值:Dim Index=有時為

14、了簡便,也以符號進(jìn)行簡單的定義,作用是和上面一樣的。整型可以用“%”代替,長整型可以用“&”代替,實(shí)型可以用“!”,雙精度實(shí)型可以用“#”定義,如剛才的第一個例子可以寫成:Dim Index% 等價于 Dim Index As Integer對于常量的定義用Const定義,如:Const COLOR=。 為了在程序中便于查閱,我們對變量和常量的寫法進(jìn)行規(guī)定,變量一般用小寫方式,常量則全部大寫。注意:使用常量的好處,對于程序中經(jīng)常出現(xiàn)的數(shù)值,應(yīng)設(shè)常量等于它,這樣一是書寫方便,其二,如果要改變該數(shù)值,只需改變定義常量的語句值,而不需改變每個語句,提高了效率。數(shù)組的定義類似于變量定義,所不同的是數(shù)組

15、需要指定數(shù)組中的元素個數(shù),例如: Dim IntegerArray(99) As Integer這個數(shù)組中包含100個元素,腳標(biāo)從0到99。也可以指定腳標(biāo)的起始值,例如:Dim IntegerArray(2 to 10) As Integer這個數(shù)組含有九個元素,腳標(biāo)從2到10。還可以定義多維數(shù)組:Dim ThreeD(4,2 to 5,3 to 6) As Integer上例定義了一個三維數(shù)組(444)。記錄的定義 記錄定義是把控制權(quán)交給用戶的方法,它讓用戶可以定義自己的數(shù)據(jù)類型,它使用關(guān)鍵字“Type”,方法是:Type 【數(shù)據(jù)類型標(biāo)識符】 As As As End Type例如,定義一個

16、地址數(shù)據(jù):Type AddressStreet As StringZipCode As StringPhone As StringEnd Type這個地址數(shù)據(jù)里包括三個屬性,街區(qū)、郵政編碼和電話,可以把某數(shù)據(jù)定義成此類型:Dim MyHome As Address要調(diào)用或改變“MyHome”的值時,類似于對對象的屬性的操作:變量名.域名“”為了簡化書寫重復(fù)的部分,可以用關(guān)鍵字“With”:With MyHome.Street=阜成路”.ZipCode=.Phone=End With1.3 3第三章:VB語言本章提要:VB語法與Basic的異同 注釋語句 長語句的分行 條件語句 循環(huán)語句 運(yùn)算操

17、作 數(shù)據(jù)定義與賦值 函數(shù)和過程 一、VB與BasicVB之所以叫做“Visual Basic”就是因?yàn)樗褂昧薆asic語言作為代碼,所以它們之間有著千絲萬縷的關(guān)系,如果學(xué)過Basic的話,看到VB的程序結(jié)構(gòu)會感到很親切。但VB作為新生物,也超越了Basic的限制,有了許多自己的特點(diǎn): VB建立了一種新的變量類型貨幣型變量,通過使用僅帶有二位小數(shù)的貨幣變量,就能避免因使用實(shí)型變量而帶來的數(shù)值積累誤差問題。 VB在調(diào)用函數(shù)(Function)時,必須在函數(shù)名后跟一對括號。 VB對白蘭地使用范圍重新做了規(guī)范,在Basic里把隱含變量都當(dāng)作全局變量,而在VB里對隱含變量都當(dāng)作局部變量。 VB里的說明

18、語句(Declare),僅支持動態(tài)鏈結(jié)庫(DLL)的子程序和無變量函數(shù)。 使用數(shù)組,必須事先用Dim或Redim進(jìn)行定義。 二、注釋語句 在使用注釋語句之前必須先了解注釋的作用,注釋不僅僅是對程序的解釋,有時它對于程序的調(diào)試也非常有用,譬如說可以利用注釋屏蔽一條語句以觀察變化,發(fā)現(xiàn)問題和錯誤。以后注釋語句將是我們在編程里最經(jīng)常用到的語句之一。在VB里,注釋語句有兩種,一種是用“Rem”關(guān)鍵字,這跟DOS里的批處理文件的用法一樣,還有一種是利用單引號“”,例如:Dim a As String 與Rem Dim a As String 的作用是一致的。三、長語句的分行 在比較早的版本中,因?yàn)闆]有象

19、C等語言用“;”隔開語句與語句,VB的語句是必須寫在一行里的,不過后來版本的VB里如許用分行符“_”把一個長語句分成若干行來存放。四、條件語句如果你學(xué)過任何一種編程的話,都會知道在程序里控制其流程的有兩種語句,條件與循環(huán),VB自然也不例外,其實(shí)不管哪種語言,條件和循環(huán)的樣子都差不多,只不過各有各的規(guī)矩罷了。在條件語句里,我們先來學(xué)習(xí)“IfThen”語句。它的一般語法是:If Then End If與C 語言不同,VB的條件語句更符合英語的語法,如果Then后面所跟的語句只有一條,可以寫成:If Then 而不用End If。有時我們還會用到If Then Else End If更可以在Else

20、里在嵌套If語句,如:If Then Else If Else End If所有這些可以用一個表格表示:條件1 True False 語句1 條件2 True False 語句2 條件3 True False 條件N True False 語句N 語句N1 用了過多的Else后你會感到很不方便,而且程序結(jié)構(gòu)也不清晰,所以大多數(shù)的語言還有Select語句幫助解決這個問題。VB里的Select語句的格式是這樣的:Select Case Case Case Case Case Else End Select例如:Select Case a%Case 1 Print “a=Case 2 Print “

21、a=Case Else Print “a does not equal to 1 or 2.”End Select五、循環(huán)語句循環(huán)結(jié)構(gòu)是計算機(jī)語言里一種重要的結(jié)構(gòu),它的應(yīng)用廣泛,最簡單的例子是累加器的作用,還可以用于窮舉法,更直觀的例子是把某件事重復(fù)指定的次數(shù),這樣就不用把要重復(fù)的語句輸入多次,而通過循環(huán)結(jié)構(gòu)完成,非常方便。C語言里有一個“for”循環(huán)語句,VB里也有“For”關(guān)鍵字,作用也差不多,只是VB的“For”語句更容易理解。它的格式是:For = To Step Next 在默認(rèn)情況下,Step被設(shè)為“1”,可以省略,Step也可以設(shè)為負(fù)值,例如:Dim a=For I=1 To 1

22、0 a=Next I這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給“a”這樣的效果和上面是一樣的,只不過是倒著加罷了,請看:Dim a=For I=10 To 1 Step 1a=Next IWhile語句也是一個很常用的循環(huán)語句,它的形式很多。Do While Loop語句 While Wend 語句 Do Loop While While后面都跟邏輯條件判斷,“Do While Loop語句”和“While Wend 語句”作用相似,都是先判斷While后面的條件是否為“真”,如果為“真”則執(zhí)行里面的語句,如果為“假”,則退出循環(huán),循環(huán)直至條件為“假”終止。“Do Loop

23、 While ”與前兩者的區(qū)別在于,它不管條件的真假,都會先執(zhí)行“Do”后面的語句,也就是說,它至少執(zhí)行語句一次。與While用法相似的還有Until語句,它是直至條件為真則終止循環(huán),句式把While上述三個語句的While換成Until即可,但是因?yàn)槿菀子浕?,所以我建議只用While即可。Until 可以相當(dāng)于While Not 。For循環(huán)和Whlie循環(huán)應(yīng)當(dāng)根據(jù)適當(dāng)?shù)沫h(huán)境使用,它們有時也可替換。六、運(yùn)算操作數(shù)學(xué)運(yùn)算 :加法運(yùn)算,也適合于字符串的之間的合并運(yùn)算。 :加法運(yùn)算。 *:乘法運(yùn)算。 /:除法運(yùn)算。 :整除運(yùn)算。 Mod:求余運(yùn)算。例如:a Mod b表示a被b整除以后的余數(shù)。 :

24、冪運(yùn)算。AB表示以A為底的B次方。 關(guān)系運(yùn)算 關(guān)系運(yùn)算也稱比較運(yùn)算,它表示不等式的真或假,VB共提供六種運(yùn)算符,分別是=邏輯運(yùn)算 邏輯運(yùn)算是對真或假的運(yùn)算,我將列表說明:A B Not A非 And與 Or或 Xor異或 Eqv相等 Imp蘊(yùn)含 T T F T T F T T T F F F T T F F F T T F T T F T F F T F F F T T TTrue FFalse七、 數(shù)據(jù)與定義本標(biāo)題的內(nèi)容已經(jīng)在上一章向大家詳述過,在這里就不再重復(fù)。八、函數(shù)與過程 函數(shù)與過程有許多相似的地方,它們之間最大也是最本質(zhì)的區(qū)別就在于,函數(shù)有一個返回值,而過程只是執(zhí)行一系列動作,所以可

25、以簡單的把函數(shù)理解成為一個變量,而VB中的每個事件都是一個過程,比如Command1_Click()就是一個過程。因?yàn)樵诔绦蛟O(shè)計中經(jīng)常會有重復(fù)的地方,所以把它做成一個函數(shù)或一個過程,在使用時進(jìn)行調(diào)用,可以節(jié)省大量的輸入代碼的時間,而且使用函數(shù)和過程也便于程序的結(jié)構(gòu)化和修改查看。函數(shù)和過程都可以有參數(shù),也可以沒有參數(shù)。關(guān)于函數(shù)和過程將在以后的章中配合實(shí)例講解,請您繼續(xù)VB教程。1.4 4-1第四章按鈕(一)從本章開始我們將正式進(jìn)入VB的編程世界,但這還僅僅是個開端,要編出功能強(qiáng)大的軟件,還要學(xué)很多東西,那就要看以后的VB高級教程了,我也得努力學(xué)??!按鈕是我們在Windows操作見到最多的控件,它

26、們有著各種各樣的功能:“確認(rèn)”、“取消”、“下一步”等等,這些都是按鈕的表現(xiàn),另外還有很多圖形話的按鈕,其實(shí)它們并沒什么不同,所有的按鈕都是通過單擊(click)事件實(shí)現(xiàn)的,只不過是在外表不同罷了。下面就讓我們建立一個最簡單的按鈕,雙擊工具箱的CommandButton,將在窗體上建立一個形如圖41的按鈕,它的缺省名(Name屬性)為Command1,我們可以把它改名為cmdExit,把Caption屬性設(shè)為“退出”,然后雙擊,按鈕填寫代碼:Private Sub cmdExit_Click()Unload MeEnd Sub按下F5或者工具條上的播放按鈕,運(yùn)行程序。圖42當(dāng)你按下退出按鈕的時

27、候,就會自動退出程序,原因是當(dāng)你單擊按鈕時激活了它的Click事件,執(zhí)行“Unload Me”語句,使得窗體被卸載。 上面舉了一個比較簡單的例子,下面的例子稍微復(fù)雜些: 新建窗體,控件布局如圖43所示,包括一個List控件,一個Text控件和兩個按鈕(Command1和Command2),(比較簡單的程序我們都采用缺省名),對它們屬性做如下修改:List1 Caption“請輸入你的名字” Text1 Text“”(空字符串) Button1 Caption“復(fù)原”EnabledFalse Button2 Caption=“清除” 把使用Button1的Enabled屬性設(shè)為False(假),

28、是使程序在初始時,無法單擊Command1。按F5,運(yùn)行程序,圖44,復(fù)原按鈕成為灰色,不可選。當(dāng)然現(xiàn)在程序還什么也不能做,下面我們在程序中添加代碼:首先在General里聲明全局變量:Dim StoreString As String 用來儲存字符串注意:為什么用全局變量?VB里每一個小過程都相當(dāng)于一個程序,程序里的變量稱為局部變量,是只能在程序內(nèi)部使用的,而當(dāng)程序調(diào)用結(jié)束后,由于從內(nèi)存中被清除,所以變量儲存的值也就消失了,這里的全局變量是用來在過程中傳遞字符串。接著填寫以下代碼:Private Sub Command1_Click()Text1.Text = StoreStringComm

29、and1.Enabled = FalseEnd SubPrivate Sub Command2_Click()StoreString = Text1.TextText1.Text = 清除Command1.Enabled = TrueEnd Sub運(yùn)行程序,如圖45。按下“清除”,文本框被清除,按下“復(fù)原”,文本有被恢復(fù),許多程序中的Undo/Redo就是利用這個原理實(shí)現(xiàn)的,現(xiàn)在知道為什么內(nèi)存越多越好了吧。我們在把程序修改一下,把Button2刪除,Button1的Enabled屬性改為True,Caption改為“清除”,填寫代碼:Private Sub Command1_Click()If

30、 Command1.Caption = 清除 ThenStoreString = Text1.TextText1.Text = 清除Command1.Caption = 復(fù)原ElseText1.Text = StoreStringCommand1.Caption = 清除End IfEnd Sub同樣可以上面的功能,但是卻少用了一個控件,控件使用少的程序啟動會快些。 下面的例子要更加復(fù)雜些,大家一定都用過Windows附件中的計算器,它是一個標(biāo)準(zhǔn)的科學(xué)計算器,利用VB我們也可以做到,只是沒有那么復(fù)雜,四則運(yùn)算而已。 先建立一個新的項(xiàng)目文件,里面包含一個Form1的窗體。然后,添加控件,包括一個

31、Text框(Text1),和17個按鈕,這17個按鈕使用的名稱都是Command1,只是Index屬性不同,就好象一個數(shù)組,創(chuàng)立一組按鈕的方法是,先在窗體上建立一個按鈕(Command1),然后在Command1上擊鼠標(biāo)右鍵,選擇復(fù)制(Copy),然后在窗體上任意部位擊右鍵,選擇粘貼(Paste),系統(tǒng)會提示是否創(chuàng)建控件組,選擇“是”,重復(fù)上面步驟,直至創(chuàng)立17個按鈕為止。各控件屬性如下表:Text1 BackColor&H00C0FFFF&Text“0.” Command1 Index 016Index 09 Caption=Index 10 Caption=Index 11Caption=

32、Index 12 Caption=Index 13 Caption=Index 14 Caption=Index 15 Caption=Index 16 Caption=“清除” 如果想改變一些其他的屬性,比如字體,可以自己定義一下Font屬性,如果相對多個控件的共同屬性進(jìn)行改變,可以在窗體上按下鼠標(biāo),拖動,把多個控件一起選定,然后對它們的共同屬性進(jìn)行修改。別看這個東西小,還費(fèi)了近我兩個小時呢,不覺大嘆手生,里面也有些地方很繞彎子,我盡量解釋清楚。在編寫程序之前,我們先來回顧一下計算器的使用。按下數(shù)字鍵在液晶屏上會出現(xiàn)數(shù)字,這是最基本的功能。 第一次按下運(yùn)算鍵,再按下數(shù)字鍵,將重新輸入第二個數(shù)

33、字,再次按下運(yùn)算鍵,將算出前兩個數(shù)的結(jié)果,然后按下數(shù)字鍵,將又重新輸入新的數(shù)字。 輸入數(shù)字后,按下“等于鍵”將仍輸出原來的數(shù)字,輸入運(yùn)算符和第二個數(shù)字后在按下“等于”,將得到二者的結(jié)果。然后又重復(fù)第二、三步。 按下“清除”,數(shù)據(jù)被全部清除。 了解了這些,我們一步一步實(shí)現(xiàn)。 先實(shí)現(xiàn)數(shù)據(jù)的輸入,請看代碼。 與未創(chuàng)立組的控件相比,它的事件里多了Index參數(shù),組里所有的對象都使用同一個事件。先在General里聲明窗體級全局變量:Dim Num1, Num2 As SingleDim StrNum1, StrNum2 As StringDim FirstNum As Boolean 判斷是否是數(shù)字開

34、頭因?yàn)門ext1里是存放字符串的,所以要把輸入的數(shù)據(jù)進(jìn)行運(yùn)算,必須把字符型變量轉(zhuǎn)變?yōu)閷?shí)型變量,分別用Num1、Num2和StrNum1、StrNum2進(jìn)行存放。在Form_Load事件里給變量初賦值:Num1 = 0Num2 = 0StrNum1 = StrNum2 = FirstNum = True因?yàn)?7個按鈕使用的是同一事件,所以我們用一個Select Case語句區(qū)分各個按鈕,雙擊任意按鈕輸入代碼:Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0 To 9If FirstNum ThenStrNum1

35、 = Str(Index)實(shí)型轉(zhuǎn)字符型FirstNum = False初賦值為假Else非初賦值StrNum1 = StrNum1 + Str(Index)End IfText1.Text = StrNum1顯示End SelectEnd Sub運(yùn)行程序的話已經(jīng)可以輸入數(shù)據(jù),下面我們來處理小數(shù)點(diǎn)。在General里聲明新的變量:Dim PointFlag As Boolean 判斷是否已有小數(shù)點(diǎn)我們知道小數(shù)點(diǎn)只能輸入一次,一個數(shù)據(jù)中不能有多個小數(shù)點(diǎn)存在,所以需要一個布爾變量做判斷。在Form_Load里進(jìn)行初賦值:PointFlag = False在Command的單擊事件里接著上面輸入新的代

36、碼:Case 10If Not PointFlag Then如果沒有小數(shù)點(diǎn)If FirstNum Then如果是第一個字符StrNum1 = 0.FirstNum = FalseElseStrNum1 = StrNum1 + .End IfElse已有小數(shù)點(diǎn)Exit Sub則退出單擊事件End IfPointFlag = TrueText1.Text = StrNum11.5 4-2第四章按鈕(二)下面會復(fù)雜一些,我們先跳過等號,而來處理四則運(yùn)算:先在General里聲明新變量:Dim Runsign As Integer 儲存運(yùn)算符號Dim SignFlag As Boolean 判斷是否已

37、有運(yùn)算符號然后在Form_Load中進(jìn)行初賦值:Runsign = 0SignFlag = False在接下的Command1_Click中繼續(xù)輸入代碼:Case 12 To 15FirstNum = True使下一次可以輸入新數(shù)據(jù)PointFlag = False還原標(biāo)記值If SignFlag Then前面已有運(yùn)算符未運(yùn)算Call RunElseSignFlag = TrueStrNum2 = StrNum1把字符串1復(fù)制給字符串2StrNum1 = 字符串1清空End IfRunsign = Index - 11 儲存鍵入的運(yùn)算符里面運(yùn)算的部分我用了一個過程,是因?yàn)樵诎聪碌忍枙r還會調(diào)用到

38、運(yùn)算過程,這樣可以減少代碼的輸入,也使程序便于瀏覽。建立過程(Procedure),可以在General部分直接輸入,也可以通過菜單里的“Add Procedure”添加。Run的代碼如下:Sub Run()Num1 = Val(StrNum2)Num2 = Val(StrNum1)Select Case RunsignCase 1加equal = Num1 + Num2Case 2減equal = Num1 - Num2Case 3乘equal = Num1 * Num2Case 4除equal = Num1 / Num2End SelectStrNum2 = Str(equal)StrNu

39、m1 = StrNum2Text1.Text = StrNum2End Sub 下面是其余的代碼:(在Command1_Click事件里,接著寫) Case 11If Not SignFlag ThenText1.Text = StrNum1equal = Val(StrNum1)FirstNum = TruePointFlag = FalseElseCall RunSignFlag = FalseEnd IfCase Else清除按鈕Call ClearData里面又用到了一個ClearData過程,實(shí)際上就是Form_Load里的變量初賦值,代碼如下:Sub ClearData()Num1

40、 = 0Num2 = 0StrNum1 = StrNum2 = FirstNum = TruePointFlag = FalseRunsign = 0SignFlag = FalseText1.Text = 0.End Sub這樣完整的程序就完成了,本章介紹了VB的第一個控件按鈕,并且舉例,希望你繼續(xù)看下一章菜單。 下面給出完整的程序代碼: Dim Num1, Num2 As SingleDim StrNum1, StrNum2 As StringDim FirstNum As Boolean 判斷是否是數(shù)字開頭Dim PointFlag As Boolean 判斷是否已有小數(shù)點(diǎn)Dim Run

41、sign As Integer 儲存運(yùn)算符號Dim SignFlag As Boolean 判斷是否已有運(yùn)算符號Sub ClearData()Num1 = 0Num2 = 0StrNum1 = StrNum2 = FirstNum = TruePointFlag = FalseRunsign = 0SignFlag = FalseText1.Text = 0.End SubSub Run()Num1 = Val(StrNum2)Num2 = Val(StrNum1)Select Case RunsignCase 1equal = Num1 + Num2Case 2equal = Num1 -

42、Num2Case 3equal = Num1 * Num2Case 4equal = Num1 / Num2End SelectStrNum2 = Str(equal)StrNum1 = StrNum2Text1.Text = StrNum2End SubPrivate Sub about_Click()MsgBox Create by 周曉陽。1998/7/27, vbDefaultButton1, VB教程第四章范例End SubPrivate Sub Command1_Click(Index As Integer)Select Case IndexCase 0 To 9If FirstN

43、um ThenStrNum1 = Str(Index)FirstNum = FalseElseStrNum1 = StrNum1 + Str(Index)End IfText1.Text = StrNum1Case 10If Not PointFlag ThenIf FirstNum ThenStrNum1 = 0.FirstNum = FalseElseStrNum1 = StrNum1 + .End IfElseExit SubEnd IfPointFlag = TrueText1.Text = StrNum1Case 12 To 15FirstNum = TruePointFlag =

44、False還原標(biāo)記值If SignFlag ThenCall RunElseSignFlag = TrueStrNum2 = StrNum1StrNum1 = End IfRunsign = Index - 11Case 11If Not SignFlag ThenText1.Text = StrNum1equal = Val(StrNum1)FirstNum = TruePointFlag = FalseElseCall RunSignFlag = FalseEnd IfCase ElseCall ClearDataEnd SelectEnd SubPrivate Sub Form_Load

45、()Call ClearDataEnd Sub 補(bǔ)充說明 按鈕還有兩個重要的屬性Default(默認(rèn)屬性)和Cancel(取消屬性),兩個屬性都以布爾賦值,把Default設(shè)為True,則在按下回車鍵時,不論焦點(diǎn)處于何處,都會觸發(fā)該按鈕的Click事件,而當(dāng)Cancel屬性被設(shè)為True,在按下ESC鍵時,該按鈕的Click屬性發(fā)生。下面舉個例子: 建立一個新窗體和兩個按鈕,Name屬性分別為cmdOK和cmdCancel,把前者的Default設(shè)為True,后者的Cancel設(shè)為True,Caption屬性分別為OK和Cancel。如圖48。填寫代碼后運(yùn)行:Private Sub cmdCa

46、ncel_Click()MsgBox Cancel按鈕被按下, vbDefaultButton1, 提示End SubPrivate Sub cmdOK_Click()MsgBox OK按鈕被按下, vbDefaultButton1, 提示End Sub結(jié)果如圖49、410:快捷鍵大家一定都知道,在VB如何實(shí)現(xiàn)呢。其實(shí)很簡單,在剛才的例子里在建立一個按鈕Command1,把它的Caption屬性設(shè)為Click &ME,如圖411,在M的下面有一條下劃線,運(yùn)行程序,當(dāng)你按下Alt+M的時候就觸發(fā)了Command1_Click事件:Private Sub Command1_Click()MsgBo

47、x Click ME 按鈕被按下, vbDefaultButton1, 提示End Sub據(jù)我所知,有許多用戶有使用快捷鍵的習(xí)慣,注意細(xì)節(jié)上的問題能夠使將來你的程序得到更多人的欣賞,不是嗎? 1.6 5第五章菜單我們經(jīng)常在Windows操作里遇到各種各樣的菜單,菜單的操作把各種命令結(jié)構(gòu)化、分分類化,也節(jié)省了命令所占的空間,從作用上來講,菜單類似于按鈕,但它只有一個事件Click。VB作為Windows下的可視編程工具,菜單的設(shè)計當(dāng)然很容易實(shí)現(xiàn),VB3.0按下Ctrl+M,VB4.0以上的版本請按下Ctrl+E,便可呼叫出菜設(shè)計的窗口,無論VB的版本,這個窗口的樣式是大同小異的,請見圖51。前面

48、說過,菜單相當(dāng)于簡單的按鈕,它有幾個屬性,其中的大部分我們都曾經(jīng)見過,包括Name、Caption、Index、Checked、Enabled、Visible、快捷鍵和熱鍵等等。其中Name是必須的。下面請跟我一起設(shè)計第一個菜單。首先在Caption添入“文件”,Name為“mnuFile”,按下Next按鈕,這樣就建立了第一級菜單,注意菜單設(shè)計窗口的左中有四個箭頭,按下向右的箭頭,出現(xiàn)了一排小點(diǎn),如圖52,在VB里這叫縮排,這樣就可以開始建立第二級菜單。小知識:實(shí)際上我們在生活就中經(jīng)常用到縮排,寫文章時開頭要空兩格就是一種縮排,在編寫程序時更需要縮排,這樣使程序結(jié)構(gòu)化,便于觀察,當(dāng)然菜單設(shè)計

49、里的縮排有更多的用處。接著填寫下一菜單項(xiàng),Caption為“新文件”,Name為“mnuFileNew”,按下Next鍵。小知識:VB一共如許建立6級子菜單,如圖53,盡量不要建立這樣的菜單,要知道藏在越深處的菜單項(xiàng)越難以被人發(fā)現(xiàn),一個友好的程序界面應(yīng)該讓用戶馬上找到需要的命令。接著重復(fù)以上步驟,創(chuàng)建以下三個菜單項(xiàng):Caption 保存Name mnuFileSaveLevel 1 Caption 另存為Name mnuFileSaveAsLevel 1 Caption 載入Name mnuFileLoadLevel 1 我們在菜單里還經(jīng)??吹桨巡煌?xiàng)分開的分隔條,在VB里也很容易做到,把Ca

50、ption設(shè)為“-”(減號),Name為mnuBar1。最后增加這個菜單條的最后一項(xiàng),Caption為“退出”,Name為mnuFileExit?,F(xiàn)在可以退出菜單設(shè)計窗口,菜單如圖54。怎么樣,經(jīng)過幾章的學(xué)習(xí),是不是覺得Windows世界也不是那么神秘?也對,也不對。的確,我們很輕易的實(shí)現(xiàn)了這么多的功能,但如果你仔細(xì)想想,我們的程序還什么也不會做呢!可以說是徒有其表,要實(shí)現(xiàn)強(qiáng)大的功能,恐怕要學(xué)很長很長時間,而現(xiàn)在僅僅是個開頭,并不是想入非非的時候,我們還要繼續(xù)努力!現(xiàn)在再次按下Ctrl+E,重回菜單設(shè)計窗口,接著添加菜單。(按下向左的箭頭,可以使菜單上升一級,Level代表菜單的級別),根據(jù)下

51、表添加新的菜單項(xiàng):Caption 編輯Name mnuEditLevel 0 Caption 剪切Name mnuEditCutLevel 1Short-Cut Ctrl+X Caption 復(fù)制Name mnuEditCopyLevel 1Short-Cut Ctrl+C Caption 粘貼Name mnuEditPasteLevel 1Short-Cut Ctrl+V Caption 關(guān)于Name mnuAboutLevel 0 其中Short-Cut就是平常我們說的熱鍵,你可以在菜單設(shè)計窗口中找到,設(shè)置一個你需要的組合鍵,這樣不論窗口的焦點(diǎn)處于何處,菜單在第幾層,只要按下熱鍵,就相當(dāng)于

52、調(diào)用了該項(xiàng)的Click事件。結(jié)果如圖55。從Win95以來程序里引入了鼠標(biāo)右鍵功能,使鼠標(biāo)有了更大的用處,在VB里我們也很容易實(shí)現(xiàn)。打開Form_MouseDown事件,該事件有兩個參數(shù):Button,當(dāng)按下左鍵時Button返回1,當(dāng)按下右鍵時Button返回2,;Shift,是指在點(diǎn)擊鼠標(biāo)時按下的鍵盤鍵,如Shift、Ctrl、Alt,這些我們將在以后討論,但很難避免在一章中不涉及到不該涉及的內(nèi)容,學(xué)習(xí)時有個大概的理解即可。下面在該事件里添加代碼(效果如圖56):Private Sub Form_MouseDown(Button As Integer, Shift As Integer,

53、X As Single, Y As Single)If Button = 2 ThenPopupMenu mnuEdit, vbPopupMenuLeftAlignElseExit SubEnd IfEnd Sub在上面的代碼中我們用到了PopupMenu方法,它的語法是:object.PopupMenu 菜單名,標(biāo)記,X坐標(biāo),Y坐標(biāo)標(biāo)記是用來表明彈出菜單位于鼠標(biāo)指針位置的,它有三個值:vbPopupMenuLeftAlign 位于鼠標(biāo)左 vbPopupMenuRightAlign 位于鼠標(biāo)右 VbPopupMenuCenterAlign 位于鼠標(biāo)中部 X、Y值可以用來制定菜單彈出的位置,可以

54、省略。關(guān)于菜單的Visible、Enabled等屬性請自己嘗試。1.7 6-1第六章輸入(一)我們?yōu)槭裁匆O(shè)計計算機(jī)程序呢,當(dāng)然是為了計算機(jī)能為我們完成工作,但是要完成不同的任務(wù),我們就必須對計算機(jī)下達(dá)命令,然后計算機(jī)在把信息返饋回來任務(wù)是否完成。以上就是所謂的人機(jī)對話或交互功能,尤其是在Windows操作里我們需要進(jìn)行更多的輸入工作,我們需要填寫各種各樣的表格,設(shè)置程序的重要參數(shù),把數(shù)據(jù)輸入給計算機(jī),再又它完成既定的工作就是今天我們本章要重點(diǎn)討論的問題在VB中如何建立完整的輸入機(jī)制。在VB中提供了一個函數(shù)InputBox能幫助我們建立一個最簡單的輸入窗體,語法如下:InputBox(prom

55、pt,title,default,xpos,ypos,helpfile,context)該函數(shù)返回一個字符串表達(dá)式,其參數(shù)含義為:(“”表示可缺?。﹑rompt字符串表達(dá)式,最大長度為1024字符,窗體上的提示部分。Title字符串表達(dá)式,顯示標(biāo)題欄里的文本。Default字符串表達(dá)式,窗體中文本框的缺省值。xpos,ypos數(shù)值表達(dá)式,以Twips為單位指定窗體出現(xiàn)在屏幕上的位置。helpfile字符串表達(dá)式,是幫助文件的完整路徑。Context數(shù)值表達(dá)式,指定適合的幫助主題??赡苣憧戳松厦娴恼f明并不明白,那么下面我們就用Input語句完成一個最簡單的程序。小知識:屏幕坐標(biāo)在計算機(jī)的屏幕上也

56、有一個類似于我們在中學(xué)里常用到的直角坐標(biāo)系,之不過它的原點(diǎn)不在左下,而是在屏幕的右上角,屏幕的最右上方坐標(biāo)為(0,0),它的橫坐標(biāo)和我們的習(xí)慣是一致的,而縱坐標(biāo)則是越向下越大,不僅是屏幕,所有的對象里都是一樣,需要記清。見圖61新建一個項(xiàng)目(project),在Form_load里填寫一行代碼:a$ = InputBox(舉薦你最欣賞的網(wǎng)站, 最佳網(wǎng)站投票, VB小驛)按下F5運(yùn)行程序,在Form1出現(xiàn)之前先會彈出一個輸入對話框,如圖62。這時,無論你按下OK還是Cancel都是沒有區(qū)別的,因?yàn)槲覀儾]有對輸入數(shù)據(jù)進(jìn)行處理,下面我們完成一個更加復(fù)雜些的程序。新建一個項(xiàng)目文件,把窗口布局成類似于

57、圖63的結(jié)構(gòu),各對象屬性如下表:Form1 Caption “最佳網(wǎng)站投票演示”BorderStyle 3不可調(diào)整大小ControlBox 0False Frame1 Caption “輸入框?qū)傩浴?Label1 Autosize 1TrueIndex 0至50至5 Caption “提示語句”“標(biāo)題”“缺省網(wǎng)站”“X坐標(biāo)”“Y坐標(biāo)”“”Index 4 Enabled FalseIndex 4 Enabled False Text1 Text “”(空字符串)Index 0至4Index 3 Text 0Index 4 Text 0 Check1 Caption “指定輸入框位置” Butto

58、n1 Index 0,1Index 0 Caption “顯示輸入框”1 Caption “退出程序” 本例中出現(xiàn)了一個Frame1控件,它是一種框架,可以用來把窗體分成好幾個部分,首先應(yīng)該在窗體上畫出Frame1控件,然后再選擇相應(yīng)的控件,在Frame1上描出輪廓,使其是出現(xiàn)在Frame1之上,本例中除去兩個按鈕,其余都在Frame1上面。本例中用到了幾組控件數(shù)組,其創(chuàng)建方法是,在選定的點(diǎn)右鍵,選擇Copy,再在窗體其他部位單擊右鍵,選擇Paste即可,注意,若要使粘貼的對象在Frame1上,請在Frame1上單擊右鍵選擇Paste。我們通過這個窗體,對輸入框進(jìn)行完整的控制,原理是這樣的:當(dāng)

59、我們把窗體中要填寫的對輸入框的參數(shù)完成后按下OK按鈕,就會出現(xiàn)我們設(shè)計的那個輸入框,我們從輸入框退出時則返回我們投票的結(jié)果,代碼如下.窗體初次被裝入時,Label1(3)、Label(4)和Text1(3)、Text1(4)的Enabled屬性都是False,我們需要通過改變Check1的Value(1,被選中,0,未選中)是他們有效或無效。聲明全局變量(General):Dim PosChk As Boolean 檢查X、Y坐標(biāo)是否有效Check1_Click 事件:Private Sub Check1_Click()If Check1.Value = 1 ThenLabel1(3).Ena

60、bled = TrueLabel1(4).Enabled = TrueText1(3).Enabled = TrueText1(4).Enabled = TruePosChk = TrueElseLabel1(3).Enabled = FalseLabel1(4).Enabled = FalseText1(3).Enabled = FalseText1(4).Enabled = FalsePosChk = FalseEnd IfEnd Sub接著在按鈕中填寫代碼:Private Sub Command1_Click(Index As Integer)Dim Prompt, Title, Def

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論