VB課本_經(jīng)典版本的_第1頁
VB課本_經(jīng)典版本的_第2頁
VB課本_經(jīng)典版本的_第3頁
VB課本_經(jīng)典版本的_第4頁
VB課本_經(jīng)典版本的_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VB驛站編輯第一章 VB概論我們需要什么我們需要什么?當(dāng)我們在一個精彩的游戲世界中游歷了一番之后,或是驚嘆于某一工具軟件的小巧精致之余,多少總會產(chǎn)生些許編程的沖動。編程嗎,在以前如果你對電腦還是一個門外漢,那實在是一件可望而不可及的事情。如果運用基于DOS下的編程語言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。編程是需要天賦的,你必須在大腦中對整個程序有一個清晰的輪廓,一個高效的流程,這并不是每個人都能做到的,你必須思之慎之,這也使編程變成一件最枯燥無味的事情。但在第四代計算機語言(可視化編程)出現(xiàn)后,可以確切的說它開發(fā)了人們的更多天賦,并不局限于那些頭腦異常清晰的人

2、,每一個人都可以發(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ù)測能力是極為高明的,而它強大的技術(shù)、財力支持也使它在許多以前未進(jìn)入的領(lǐng)域,在不長的時間內(nèi)有成為最有力的競爭對手,如IE之于瀏覽器領(lǐng)域,帝國時代之于游戲都是最好的例證。對于VB現(xiàn)在也有一個很強的競爭對手Del

3、phi,有人把它稱作VB殺手,這顯然有偏激之處,VB的確有它的不足之處,但Delphi又何嘗不是呢,而且以微軟對VB的傾心,VB的功能必然會越來越強大。VB的誕生VB的出現(xiàn)可以說是Microsoft Windows的日漸成熟的必然產(chǎn)物。Microsoft Windows為程序員和最終用戶提供了一個共同的人機界面。對用戶,Windows提供了一個圖形鼠標(biāo)的操作環(huán)境,該環(huán)境對所有的應(yīng)用程序都一樣;對于程序員,Windows提供了一組預(yù)定義工具-稱之為Microsoft Windows 的軟件開發(fā)工具箱(SDK),該工具能使程序員建立一個與Windows界面相同的應(yīng)用程序,而且,程序員不必關(guān)心最終用

4、戶的硬件配置情況。在這一開發(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由此誕生。 何為可視     英文Visual的意思是“視覺的”,“可視的Baisc”這個名字可能抽象了點,

5、但實際上它卻是最直觀的編程方法,之所以叫做“可視”,你只要看到VB的界面就會明白,實際上你無需編程,就可以完成許多步驟。在VB中引入了控件的概念,在Windows中控件的身影無處不在,各種各樣的按鈕、文本框、無線鈕,都是控件的種類,VB把這些控件模式化,并且每個控件都有若干屬性用來控制控件的外觀,工作方法。這樣你就可以象在畫板上一樣,隨意點幾下鼠標(biāo),一個按鈕就完成了,這些在以前的編程語言下是要經(jīng)過相當(dāng)復(fù)雜的工作的。第二章:事件、屬性及數(shù)據(jù)類型以后兩章可能會比較枯燥,但不可否認(rèn)也很重要,所以為了學(xué)好VB,我們一定要打好基礎(chǔ)才行。一、事件通過上一章的例子,你可能對“面向?qū)ο蟮木幊獭币呀?jīng)有了一定了解

6、,它是由事件驅(qū)動的,對于不同的對象,所能感應(yīng)到的事件也會不同,譬如說當(dāng)你把鼠標(biāo)移進(jìn)某一區(qū)域時就會觸發(fā)MouseMove事件,這很直觀,也容易理解,但也有些事件比較抽象,下面我來對一般的事件進(jìn)行一下解釋。1. 窗體和圖象框類事件   · Paint事件:當(dāng)某一對象在屏幕中被移動,改變尺寸或清除后,程序會自動調(diào)用Paint事件。注意:當(dāng)對象的AutoDraw屬性為True(1)時,程序不會調(diào)用Paint事件。   · Resize事件:當(dāng)對象的大小改變時觸發(fā)Resize事件。   · Load事件:僅適用于窗體對象,當(dāng)窗體被裝載時運行。

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

8、標(biāo)指針。  3.鼠標(biāo)操作事件  · Click事件:鼠標(biāo)單擊對象。   · DbClick事件:鼠標(biāo)雙擊事件。   · MouseDown、MouseUp屬性:按下/放開鼠標(biāo)鍵事件。   · MouseMove事件:鼠標(biāo)移動事件。   · DragDrop事件:拖放事件,相當(dāng)于MouseDown、MouseMove和MouseUp的組合。   · DragOver事件:鼠標(biāo)在拖放過程中就會產(chǎn)生DragOver事件。   4.鍵盤操作屬性  

9、83; KeyDown、KeyUp事件:按鍵的按下/放開事件。   · KeyPress事件:按鍵事件。   5.改變控制項事件  · Change事件:當(dāng)對象的內(nèi)容發(fā)生改變時,觸發(fā)Change事件。最典型的例子是文本框(TextBox)。   · DropDown事件:下彈事件,僅用于組合框(ComboBox)對象。   · PathChange事件:路徑改變事件,僅用于文件列表框(FileBox)對象。   6.其他事件  · Timer事件:僅用于計時器,每隔一段時間被

10、觸發(fā)一次。 二、屬性    每個對象都有它的屬性,并且“Name”屬性是共有的,有了“Name”屬性才可以在程序中進(jìn)行調(diào)用。對于屬性,可以在窗體的布局操作中完成,也可以在程序運行中改變,這取決你的需要,但有些屬性是只讀的,它只能在控件布局時改變。我將在以后的實例中具體介紹各個屬性的作用。 三、數(shù)據(jù)類型 學(xué)過編程的人都知道大多數(shù)的計算機語言都規(guī)定了各自的數(shù)據(jù)類型,VB也不例外。其實,在一個最簡單的程序中數(shù)據(jù)類型是可以不作規(guī)定的,也就是說,變量可以使用各種類型,但是在一個復(fù)雜的程序里,這樣做就很危險,因為很可能給同一個變量賦予了不同的類型,而導(dǎo)致程序出錯。所以,為了程

11、序的嚴(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)存!1. VB常用的數(shù)據(jù)類型有:整型(Integer,表示-32768至32767之間的整數(shù))、長整型(Long,表示-2,147,483,648至2,147,483,647之間的整數(shù))、實型(Single,表示-3.37E+38至3.37E+38之間的實數(shù))、雙精度實型(Double,表示-1.67E+308至1.67E+308之間的實數(shù)),字符(String,每個字符占一字節(jié)

12、,可以儲存065,535個字符),布爾(Boolean,只有兩個值True/-1,或False/0)。 2. 數(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=3有時為了簡便,也以符號進(jìn)行簡單的定義,作用是和上面

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

14、于變量定義,所不同的是數(shù)組需要指定數(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ù)組(4×4×4)。  · 記錄的定義 記錄定義是把控制權(quán)交給用戶的方法,它讓用戶可以定義自己的數(shù)據(jù)類型,它使用關(guān)鍵字“Type”,方法是:

15、Type 【數(shù)據(jù)類型標(biāo)識符】<域名> As <數(shù)據(jù)類型><域名> As <數(shù)據(jù)類型><域名> As <數(shù)據(jù)類型>End Type例如,定義一個地址數(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)鍵字“Wit

16、h”:With MyHome.Street=”阜成路”.ZipCode=”100037”.Phone=”12345678”End With本章提要:  · VB語法與Basic的異同   · 注釋語句   · 長語句的分行   · 條件語句   · 循環(huán)語句   · 運算操作   · 數(shù)據(jù)定義與賦值   · 函數(shù)和過程 一、VB與Basic  · VB之所以叫做“Visual Basic”就是因為它使用了Basic語

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

18、clare),僅支持動態(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 的作用是一致的。三、長語句的分行 在比較早的

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

20、 Then <語句>而不用End If。有時我們還會用到If <條件> Then  <語句>Else   <語句>End If更可以在Else里在嵌套If語句,如:If <條件> Then  <語句>Else If   <語句>Else  <語句>End If所有這些可以用一個表格表示:條件1 True False 語句1 條件2 True False 語句2 條件3 True False 條件N True False 語句N 語句N1 用了過多的E

21、lse后你會感到很不方便,而且程序結(jié)構(gòu)也不清晰,所以大多數(shù)的語言還有Select語句幫助解決這個問題。VB里的Select語句的格式是這樣的:Select Case <變量名>Case <情況1>  Case <情況2>  Case <情況3>      Case Else  End Select例如:Select Case a%Case 1  Print “a=1”Case 2  Print “a=2”Case Else  Print “a does no

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

23、可以設(shè)為負(fù)值,例如:Dim a=0For I=1 To 10 a=a+INext I這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給“a”這樣的效果和上面是一樣的,只不過是倒著加罷了,請看:Dim a=0For I=10 To 1 Step 1a=a+INext IWhile語句也是一個很常用的循環(huán)語句,它的形式很多。  · Do While Loop語句   · While Wend 語句   · Do Loop While While后面都跟邏輯條件判斷,“Do While Loop語句”和“While Wend 語

24、句”作用相似,都是先判斷While后面的條件是否為“真”,如果為“真”則執(zhí)行里面的語句,如果為“假”,則退出循環(huán),循環(huán)直至條件為“假”終止?!癉o Loop While ”與前兩者的區(qū)別在于,它不管條件的真假,都會先執(zhí)行“Do”后面的語句,也就是說,它至少執(zhí)行語句一次。與While用法相似的還有Until語句,它是直至條件為真則終止循環(huán),句式把While上述三個語句的While換成Until即可,但是因為容易記混,所以我建議只用While即可。Until <條件>可以相當(dāng)于While Not <條件>。For循環(huán)和Whlie循環(huán)應(yīng)當(dāng)根據(jù)適當(dāng)?shù)沫h(huán)境使用,它們有時也可替換。

25、 六、運算操作1. 數(shù)學(xué)運算   · :加法運算,也適合于字符串的之間的合并運算。   · :加法運算。   · *:乘法運算。   · /:除法運算。   · :整除運算。   · Mod:求余運算。例如:a Mod b表示a被b整除以后的余數(shù)。   · :冪運算。AB表示以A為底的B次方。 1. 關(guān)系運算 關(guān)系運算也稱比較運算,它表示不等式的真或假,VB共提供六種運算符,分別是=(等于),>(大于),<(小于),>=(大于等

26、于),<=(小于等于)和<>(不等于)。2. 邏輯運算 邏輯運算是對真或假的運算,我將列表說明:A B Not A非 And與 Or或 Xor異或 Eqv相等 Imp蘊含 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í)行一系列動作,所以可以簡單的把函數(shù)理解成為一個變量,而VB中的每個事件都是一

27、個過程,比如Command1_Click()就是一個過程。因為在程序設(shè)計中經(jīng)常會有重復(fù)的地方,所以把它做成一個函數(shù)或一個過程,在使用時進(jìn)行調(diào)用,可以節(jié)省大量的輸入代碼的時間,而且使用函數(shù)和過程也便于程序的結(jié)構(gòu)化和修改查看。函數(shù)和過程都可以有參數(shù),也可以沒有參數(shù)。關(guān)于函數(shù)和過程將在以后的章中配合實例講解,請您繼續(xù)VB教程。第三章按鈕(一)從本章開始我們將正式進(jìn)入VB的編程世界,但這還僅僅是個開端,要編出功能強大的軟件,還要學(xué)很多東西,那就要看以后的VB高級教程了,我也得努力學(xué)啊!按鈕是我們在Windows操作見到最多的控件,它們有著各種各樣的功能:“確認(rèn)”、“取消”、“下一步”等等,這些都是按鈕

28、的表現(xiàn),另外還有很多圖形話的按鈕,其實它們并沒什么不同,所有的按鈕都是通過單擊(click)事件實現(xiàn)的,只不過是在外表不同罷了。下面就讓我們建立一個最簡單的按鈕,雙擊工具箱的CommandButton,將在窗體上建立一個形如圖41的按鈕,它的缺省名(Name屬性)為Command1,我們可以把它改名為cmdExit,把Caption屬性設(shè)為“退出”,然后雙擊,按鈕填寫代碼:Private Sub cmdExit_Click()Unload MeEnd Sub按下F5或者工具條上的播放按鈕,運行程序。圖42當(dāng)你按下退出按鈕的時候,就會自動退出程序,原因是當(dāng)你單擊按鈕時激活了它的Click事件,執(zhí)

29、行“Unload Me”語句,使得窗體被卸載。 上面舉了一個比較簡單的例子,下面的例子稍微復(fù)雜些: 新建窗體,控件布局如圖43所示,包括一個List控件,一個Text控件和兩個按鈕(Command1和Command2),(比較簡單的程序我們都采用缺省名),對它們屬性做如下修改:List1 Caption“請輸入你的名字” Text1 Text“”(空字符串) Button1 Caption“復(fù)原”EnabledFalse Button2 Caption=“清除” 把使用Button1的Enabled屬性設(shè)為False(假),是使程序在初始時,無法單擊Command1。按F5,運行程序,圖44,

30、復(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 = StoreStringCommand1.Enabled = FalseEnd SubPri

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

32、ption = "清除" ThenStoreString = Text1.TextText1.Text = "" '清除Command1.Caption = "復(fù)原"ElseText1.Text = StoreStringCommand1.Caption = "清除"End IfEnd Sub同樣可以上面的功能,但是卻少用了一個控件,控件使用少的程序啟動會快些。 下面的例子要更加復(fù)雜些,大家一定都用過Windows附件中的計算器,它是一個標(biāo)準(zhǔn)的科學(xué)計算器,利用VB我們也可以做到,只是沒有那么復(fù)雜,四則運算而

33、已。 先建立一個新的項目文件,里面包含一個Form1的窗體。然后,添加控件,包括一個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 016

34、Index 09 Caption=“0”“9”Index 10 Caption=“.”Index 11 Caption=“=”Index 12 Caption=“+”Index 13 Caption=“-”Index 14 Caption=“×”Index 15 Caption=“÷”Index 16 Caption=“清除” 如果想改變一些其他的屬性,比如字體,可以自己定義一下Font屬性,如果相對多個控件的共同屬性進(jìn)行改變,可以在窗體上按下鼠標(biāo),拖動,把多個控件一起選定,然后對它們的共同屬性進(jìn)行修改。別看這個東西小,還費了近我兩個小時呢,不覺大嘆手生,里面也有些地方很繞

35、彎子,我盡量解釋清楚。在編寫程序之前,我們先來回顧一下計算器的使用。1. 按下數(shù)字鍵在液晶屏上會出現(xiàn)數(shù)字,這是最基本的功能。 2. 第一次按下運算鍵,再按下數(shù)字鍵,將重新輸入第二個數(shù)字,再次按下運算鍵,將算出前兩個數(shù)的結(jié)果,然后按下數(shù)字鍵,將又重新輸入新的數(shù)字。 3. 輸入數(shù)字后,按下“等于鍵”將仍輸出原來的數(shù)字,輸入運算符和第二個數(shù)字后在按下“等于”,將得到二者的結(jié)果。然后又重復(fù)第二、三步。 4. 按下“清除”,數(shù)據(jù)被全部清除。 了解了這些,我們一步一步實現(xiàn)。 先實現(xiàn)數(shù)據(jù)的輸入,請看代碼。 與未創(chuàng)立組的控件相比,它的事件里多了Index參數(shù),組里所有的對象都使用同一個事件。先在General

36、里聲明窗體級全局變量:Dim Num1, Num2 As SingleDim StrNum1, StrNum2 As StringDim FirstNum As Boolean '判斷是否是數(shù)字開頭因為Text1里是存放字符串的,所以要把輸入的數(shù)據(jù)進(jìn)行運算,必須把字符型變量轉(zhuǎn)變?yōu)閷嵭妥兞?,分別用Num1、Num2和StrNum1、StrNum2進(jìn)行存放。在Form_Load事件里給變量初賦值:Num1 = 0Num2 = 0StrNum1 = ""StrNum2 = ""FirstNum = True因為17個按鈕使用的是同一事件,所以我們用一個

37、Select Case語句區(qū)分各個按鈕,雙擊任意按鈕輸入代碼:Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0 To 9If FirstNum ThenStrNum1 = Str(Index)實型轉(zhuǎn)字符型FirstNum = False初賦值為假Else 非初賦值StrNum1 = StrNum1 + Str(Index)End IfText1.Text = StrNum1 顯示<還有其他語句,等待插入>End SelectEnd Sub運行程序的話已經(jīng)可以輸入數(shù)據(jù),下面我們來處理小數(shù)點。在Gen

38、eral里聲明新的變量:Dim PointFlag As Boolean '判斷是否已有小數(shù)點我們知道小數(shù)點只能輸入一次,一個數(shù)據(jù)中不能有多個小數(shù)點存在,所以需要一個布爾變量做判斷。在Form_Load里進(jìn)行初賦值:PointFlag = False在Command的單擊事件里接著上面輸入新的代碼:Case 10If Not PointFlag Then如果沒有小數(shù)點If FirstNum Then如果是第一個字符StrNum1 = "0."FirstNum = FalseElseStrNum1 = StrNum1 + "."End IfElse

39、已有小數(shù)點Exit Sub則退出單擊事件End IfPointFlag = TrueText1.Text = StrNum1第四章按鈕(二)下面會復(fù)雜一些,我們先跳過等號,而來處理四則運算:先在General里聲明新變量:Dim Runsign As Integer '儲存運算符號Dim SignFlag As Boolean '判斷是否已有運算符號然后在Form_Load中進(jìn)行初賦值:Runsign = 0SignFlag = False在接下的Command1_Click中繼續(xù)輸入代碼:Case 12 To 15FirstNum = True使下一次可以輸入新數(shù)據(jù)Point

40、Flag = False'還原標(biāo)記值If SignFlag Then前面已有運算符未運算Call RunElseSignFlag = TrueStrNum2 = StrNum1 把字符串1復(fù)制給字符串2StrNum1 = ""字符串1清空End IfRunsign = Index - 11 儲存鍵入的運算符里面運算的部分我用了一個過程,是因為在按下等號時還會調(diào)用到運算過程,這樣可以減少代碼的輸入,也使程序便于瀏覽。建立過程(Procedure),可以在General部分直接輸入,也可以通過菜單里的“Add Procedure”添加。Run的代碼如下:Sub Run(

41、)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)StrNum1 = StrNum2Text1.Text = StrNum2End Sub 下面是其余的代碼:(在Command1_Click事件里,接著寫) Case 11If Not SignFlag ThenTe

42、xt1.Text = StrNum1equal = Val(StrNum1)FirstNum = TruePointFlag = FalseElseCall RunSignFlag = FalseEnd IfCase Else清除按鈕Call ClearData里面又用到了一個ClearData過程,實際上就是Form_Load里的變量初賦值,代碼如下:Sub ClearData()Num1 = 0Num2 = 0StrNum1 = ""StrNum2 = ""FirstNum = TruePointFlag = FalseRunsign = 0Sign

43、Flag = 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ù)點Dim Runsign As Integer '儲存運算符號Dim SignFlag As Boolean '判

44、斷是否已有運算符號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 - Num2Case 3e

45、qual = 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

46、To 9If FirstNum 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 = StrNum1Cas

47、e 12 To 15FirstNum = TruePointFlag = 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 El

48、seCall ClearDataEnd SelectEnd SubPrivate Sub Form_Load()Call ClearDataEnd Sub 補充說明 按鈕還有兩個重要的屬性Default(默認(rèn)屬性)和Cancel(取消屬性),兩個屬性都以布爾賦值,把Default設(shè)為True,則在按下回車鍵時,不論焦點處于何處,都會觸發(fā)該按鈕的Click事件,而當(dāng)Cancel屬性被設(shè)為True,在按下ESC鍵時,該按鈕的Click屬性發(fā)生。下面舉個例子: 建立一個新窗體和兩個按鈕,Name屬性分別為cmdOK和cmdCancel,把前者的Default設(shè)為True,后者的Cancel設(shè)為Tru

49、e,Caption屬性分別為OK和Cancel。如圖48。填寫代碼后運行:Private Sub cmdCancel_Click()MsgBox "Cancel按鈕被按下", vbDefaultButton1, "提示"End SubPrivate Sub cmdOK_Click()MsgBox "OK按鈕被按下", vbDefaultButton1, "提示"End Sub結(jié)果如圖49、410:快捷鍵大家一定都知道,在VB如何實現(xiàn)呢。其實很簡單,在剛才的例子里在建立一個按鈕Command1,把它的Caption屬

50、性設(shè)為Click &ME,如圖411,在M的下面有一條下劃線,運行程序,當(dāng)你按下Alt+M的時候就觸發(fā)了Command1_Click事件:Private Sub Command1_Click()MsgBox "Click ME 按鈕被按下", vbDefaultButton1, "提示"End Sub據(jù)我所知,有許多用戶有使用快捷鍵的習(xí)慣,注意細(xì)節(jié)上的問題能夠使將來你的程序得到更多人的欣賞,不是嗎? 第五章菜單我們經(jīng)常在Windows操作里遇到各種各樣的菜單,菜單的操作把各種命令結(jié)構(gòu)化、分分類化,也節(jié)省了命令所占的空間,從作用上來講,菜單類似于按

51、鈕,但它只有一個事件Click。VB作為Windows下的可視編程工具,菜單的設(shè)計當(dāng)然很容易實現(xiàn),VB3.0按下Ctrl+M,VB4.0以上的版本請按下Ctrl+E,便可呼叫出菜設(shè)計的窗口,無論VB的版本,這個窗口的樣式是大同小異的,請見圖51。前面說過,菜單相當(dāng)于簡單的按鈕,它有幾個屬性,其中的大部分我們都曾經(jīng)見過,包括Name、Caption、Index、Checked、Enabled、Visible、快捷鍵和熱鍵等等。其中Name是必須的。下面請跟我一起設(shè)計第一個菜單。首先在Caption添入“文件”,Name為“mnuFile”,按下Next按鈕,這樣就建立了第一級菜單,注意菜單設(shè)計窗

52、口的左中有四個箭頭,按下向右的箭頭,出現(xiàn)了一排小點,如圖52,在VB里這叫縮排,這樣就可以開始建立第二級菜單。小知識:實際上我們在生活就中經(jīng)常用到縮排,寫文章時開頭要空兩格就是一種縮排,在編寫程序時更需要縮排,這樣使程序結(jié)構(gòu)化,便于觀察,當(dāng)然菜單設(shè)計里的縮排有更多的用處。接著填寫下一菜單項,Caption為“新文件”,Name為“mnuFileNew”,按下Next鍵。小知識:VB一共如許建立6級子菜單,如圖53,盡量不要建立這樣的菜單,要知道藏在越深處的菜單項越難以被人發(fā)現(xiàn),一個友好的程序界面應(yīng)該讓用戶馬上找到需要的命令。接著重復(fù)以上步驟,創(chuàng)建以下三個菜單項:Caption 保存Name m

53、nuFileSaveLevel 1 Caption 另存為Name mnuFileSaveAsLevel 1 Caption 載入Name mnuFileLoadLevel 1  我們在菜單里還經(jīng)??吹桨巡煌椃珠_的分隔條,在VB里也很容易做到,把Caption設(shè)為“-”(減號),Name為mnuBar1。最后增加這個菜單條的最后一項,Caption為“退出”,Name為mnuFileExit?,F(xiàn)在可以退出菜單設(shè)計窗口,菜單如圖54。怎么樣,經(jīng)過幾章的學(xué)習(xí),是不是覺得Windows世界也不是那么神秘?也對,也不對。的確,我們很輕易的實現(xiàn)了這么多的功能,但如果你仔細(xì)想想,我們的程序還什

54、么也不會做呢!可以說是徒有其表,要實現(xiàn)強大的功能,恐怕要學(xué)很長很長時間,而現(xiàn)在僅僅是個開頭,并不是想入非非的時候,我們還要繼續(xù)努力!現(xiàn)在再次按下Ctrl+E,重回菜單設(shè)計窗口,接著添加菜單。(按下向左的箭頭,可以使菜單上升一級,Level代表菜單的級別),根據(jù)下表添加新的菜單項:Caption 編輯Name mnuEditLevel 0 Caption 剪切Name mnuEditCutLevel 1Short-Cut Ctrl+X Caption 復(fù)制Name mnuEditCopyLevel 1Short-Cut Ctrl+C Caption 粘貼Name mnuEditPasteLeve

55、l 1Short-Cut Ctrl+V Caption 關(guān)于Name mnuAboutLevel 0 其中Short-Cut就是平常我們說的熱鍵,你可以在菜單設(shè)計窗口中找到,設(shè)置一個你需要的組合鍵,這樣不論窗口的焦點處于何處,菜單在第幾層,只要按下熱鍵,就相當(dāng)于調(diào)用了該項的Click事件。結(jié)果如圖55。從Win95以來程序里引入了鼠標(biāo)右鍵功能,使鼠標(biāo)有了更大的用處,在VB里我們也很容易實現(xiàn)。打開Form_MouseDown事件,該事件有兩個參數(shù):Button,當(dāng)按下左鍵時Button返回1,當(dāng)按下右鍵時Button返回2,;Shift,是指在點擊鼠標(biāo)時按下的鍵盤鍵,如Shift、Ctrl、Al

56、t,這些我們將在以后討論,但很難避免在一章中不涉及到不該涉及的內(nèi)容,學(xué)習(xí)時有個大概的理解即可。下面在該事件里添加代碼(效果如圖56):Private Sub Form_MouseDown(Button As Integer, Shift As Integer, 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)

57、記是用來表明彈出菜單位于鼠標(biāo)指針位置的,它有三個值:vbPopupMenuLeftAlign 位于鼠標(biāo)左 vbPopupMenuRightAlign 位于鼠標(biāo)右 VbPopupMenuCenterAlign 位于鼠標(biāo)中部 X、Y值可以用來制定菜單彈出的位置,可以省略。關(guān)于菜單的Visible、Enabled等屬性請自己嘗試。第六章輸入(一)我們?yōu)槭裁匆O(shè)計計算機程序呢,當(dāng)然是為了計算機能為我們完成工作,但是要完成不同的任務(wù),我們就必須對計算機下達(dá)命令,然后計算機在把信息返饋回來任務(wù)是否完成。以上就是所謂的人機對話或交互功能,尤其是在Windows操作里我們需要進(jìn)行更多的輸入工作,我們需要填寫各

58、種各樣的表格,設(shè)置程序的重要參數(shù),把數(shù)據(jù)輸入給計算機,再又它完成既定的工作就是今天我們本章要重點討論的問題在VB中如何建立完整的輸入機制。在VB中提供了一個函數(shù)InputBox能幫助我們建立一個最簡單的輸入窗體,語法如下:InputBox(prompt,title,default,xpos,ypos,helpfile,context)該函數(shù)返回一個字符串表達(dá)式,其參數(shù)含義為:(“”表示可缺?。﹑rompt字符串表達(dá)式,最大長度為1024字符,窗體上的提示部分。Title字符串表達(dá)式,顯示標(biāo)題欄里的文本。Default字符串表達(dá)式,窗體中文本框的缺省值。xpos,ypos數(shù)值表達(dá)式,以Twips為單位指定窗

溫馨提示

  • 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

提交評論