版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VB最簡單入門教程 目錄(提示:按Ctrl,并單擊鼠標(biāo),可以跳到相應(yīng)頁)TOC o 1-5 h z1.11我們需要什么32第二章:事件、屬性及數(shù)據(jù)類型33第三章:VB語言64-1第四章按鈕(一)121.54-第四章按鈕(二)1995第五章菜單276-1第六章輸入(一)346-2第六章輸入(二)426-3第六章輸入(三)527第七章輸出59附錄63 HYPERLINK l bookmark402.1VB教程63 1.11我們需要什么我們需要什么?當(dāng)我們在一個精彩的游戲世界中游歷了一番之后,或是驚嘆于某一工具軟件的小巧精致之余,多少總會產(chǎn)生些許編程的沖動。編程嗎,在以前如果你對電腦還是一個門外漢,
2、那實(shí)在是一件可望而不可及的事情。如果運(yùn)用基于DOS下的編程語言,譬如C、Qbasic、Pascal等等,真不知何年何月才能有所成就。編程是需要天賦的,你必須在大腦中對整個程序有一個清晰的輪廓,一個高效的流程,這并不是每個人都能做到的,你必須思之慎之,這也使編程變成一件最枯燥無味的事情。但在第四代計(jì)算機(jī)語言(可視化編程)出現(xiàn)后,可以確切的說它開發(fā)了人們的更多天賦,并不局限于那些頭腦異常清晰的人,每一個人都可以發(fā)現(xiàn)自己也可以編出一些從前不敢問津的程序,想象力的充分發(fā)揮才是第四代語言的精粹。VisualBasic(以下簡稱VB)可以說是可視化語言的先驅(qū)了,而且它也是可視化程度最高的一個,從幾年前VB
3、誕生之日起到現(xiàn)在,它已經(jīng)經(jīng)歷了五個版本,而且現(xiàn)在微軟正在緊張的進(jìn)行著VB6.0的研制、測試,這么高的更新率,不外乎說明兩個問題:用戶對VB的熱衷,微軟對VB的重視。不可否認(rèn)微軟對市場的預(yù)測能力是極為高明的,而它強(qiáng)大的技術(shù)、財(cái)力支持也使它在許多以前未進(jìn)入的領(lǐng)域,在不長的時間內(nèi)有成為最有力的競爭對手,如IE之于瀏覽器領(lǐng)域,帝國時代之于游戲都是最好的例證。對于VB現(xiàn)在也有一個很強(qiáng)的競爭對手一一Delphi,有人把它稱作VB殺手,這顯然有偏激之處,VB的確有它的不足之處,但Delphi又何嘗不是呢,而且以微軟對VB的傾心,VB的功能必然會越來越強(qiáng)大。VB的誕生VB的出現(xiàn)可以說是MicrosoftWin
4、dows的日漸成熟的必然產(chǎn)物。MicrosoftWindows為程序員和最終用戶提供了一個共同的人機(jī)界面。對用戶,Windows提供了一個圖形鼠標(biāo)的操作環(huán)境,該環(huán)境對所有的應(yīng)用程序都一樣;對于程序員,Windows提供了一組預(yù)定義工具稱之為MicrosoftWindows的軟件開發(fā)工具箱(SDK),該工具能使程序員建立一個與Windows界面相同的應(yīng)用程序,而且,程序員不必關(guān)心最終用戶的硬件配置情況。在這一開發(fā)環(huán)境中,程序員唯一困難的是MicrosoftSDK提供了六百多個函數(shù)和與其一致的事件驅(qū)動(event-driven)編程技術(shù)。兩種新方法的交叉使眾多的程序員重新陷入困境,程序員不僅要掌握
5、程序驅(qū)動編程技術(shù)和六百多個函數(shù)的功能,而且還得用C語言描述這些問題。因此一般情況下,程序員首先要掌握C程序設(shè)計(jì)技術(shù),而后再開始學(xué)習(xí)SDK。這樣的條件下就要求在Microsoft多任務(wù)環(huán)境下出現(xiàn)一種操作方便,使用簡單的新工具VisualBasic由此誕生。何為可視英文Visual的意思是“視覺的”,“可視的Baisc”這個名字可能抽象了點(diǎn),但實(shí)際上它卻是最直觀的編程方法,之所以叫做“可視”,你只要看到VB的界面就會明白,實(shí)際上你無需編程,就可以完成許多步驟。在VB中引入了控件的概念,在Windows中控件的身影無處不在,各種各樣的按鈕、文本框、無線鈕,都是控件的種類,VB把這些控件模式化,并且每
6、個控件都有若干屬性用來控制控件的外觀,工作方法。這樣你就可以象在畫板上一樣,隨意點(diǎn)幾下鼠標(biāo),一個按鈕就完成了,這些在以前的編程語言下是要經(jīng)過相當(dāng)復(fù)雜的工作的。2第二章:事件、屬性及數(shù)據(jù)類型以后兩章可能會比較枯燥,但不可否認(rèn)也很重要,所以為了學(xué)好VB,我們一定要打好基礎(chǔ)才行。一、事件通過上一章的例子,你可能對“面向?qū)ο蟮木幊獭币呀?jīng)有了一定了解,它是由事件驅(qū)動的,對于不同的對象,所能感應(yīng)到的事件也會不同,譬如說當(dāng)你把鼠標(biāo)移進(jìn)某一區(qū)域時就會觸發(fā)MouseMove事件,這很直觀,也容易理解,但也有些事件比較抽象,下面我來對一般的事件進(jìn)行一下解釋。窗體和圖象框類事件Paint事件:當(dāng)某一對象在屏幕中被移
7、動,改變尺寸或清除后,程序會自動調(diào)用Paint事件。注意:當(dāng)對象的AutoDraw屬性為True(1)時,程序不會調(diào)用Paint事件。Resize事件:當(dāng)對象的大小改變時觸發(fā)Resize事件。Load事件:僅適用于窗體對象,當(dāng)窗體被裝載時運(yùn)行。Unload事件:僅適用于窗體對象,當(dāng)窗體被卸載時運(yùn)行。當(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)題條
8、變成藍(lán)色,這就是otFocus事件,而相反,另外一個窗體被遮蓋,并且標(biāo)題條變灰,稱為ostFocus事件。上面所說的“光標(biāo)”并非指鼠標(biāo)指針。鼠標(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事件。鍵盤操作屬性KeyDown、KeyUp事件:按鍵的按下/放開事件。KeyPress事件:按鍵事件。改變控制項(xiàng)事件Ch
9、ange事件:當(dāng)對象的內(nèi)容發(fā)生改變時,觸發(fā)Change事件。最典型的例子是文本框(TextBox)。DropDown事件:下彈事件,僅用于組合框(ComboBox)對象。PathChange事件:路徑改變事件,僅用于文件列表框(FileBox)對象。其他事件Timer事件:僅用于計(jì)時器,每隔一段時間被觸發(fā)一次。二、屬性每個對象都有它的屬性,并且Name”屬性是共有的,有了“Name”屬性才可以在程序中進(jìn)行調(diào)用。對于屬性,可以在窗體的布局操作中完成,也可以在程序運(yùn)行中改變,這取決你的需要,但有些屬性是只讀的,它只能在控件布局時改變。我將在以后的實(shí)例中具體介紹各個屬性的作用。三、數(shù)據(jù)類型學(xué)過編程的
10、人都知道大多數(shù)的計(jì)算機(jī)語言都規(guī)定了各自的數(shù)據(jù)類型,VB也不例外。其實(shí),在一個最簡單的程序中數(shù)據(jù)類型是可以不作規(guī)定的,也就是說,變量可以使用各種類型,但是在一個復(fù)雜的程序里,這樣做就很危險(xiǎn),因?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,
11、483,648至2,147,483,647之間的整數(shù))、實(shí)型(Single,表示-3.37E+38至3.37E+38之間的實(shí)數(shù))、雙精度實(shí)型(Double,表示-1.67E+308至1.67E+308之間的實(shí)數(shù)),字符(String,每個字符占一字節(jié),可以儲存065,535個字符),布爾(Boolean,只有兩個值True/-1,或False/0)。數(shù)據(jù)類型的定義方法:定義變量最簡單的方法是用“Dim”關(guān)鍵字,它的語法:Dim【變量名】As【數(shù)據(jù)類型】女如DimIndexAsInteger也可以在一行中定義多個變量,如:DimIndexAsInteger,DimNumberAsLong把多個變
12、量定義成同一類型可以寫成:DimIndex,NumberAsInteger更可以在定義時進(jìn)行初賦值:DimIndex=有時為了簡便,也以符號進(jìn)行簡單的定義,作用是和上面一樣的。整型可以用“%”代替,長整型可以用“&”代替,實(shí)型可以用“!”,雙精度實(shí)型可以用“#”定義,如剛才的第一個例子可以寫成:DimIndex%等價于DimIndexAsInteger對于常量的定義用Const定義,如:ConstCOLOR=。為了在程序中便于查閱,我們對變量和常量的寫法進(jìn)行規(guī)定,變量一般用小寫方式,常量則全部大寫。注意:使用常量的好處,對于程序中經(jīng)常出現(xiàn)的數(shù)值,應(yīng)設(shè)常量等于它,這樣一是書寫方便,其二,如果要改
13、變該數(shù)值,只需改變定義常量的語句值,而不需改變每個語句,提高了效率。數(shù)組的定義類似于變量定義,所不同的是數(shù)組需要指定數(shù)組中的元素個數(shù),例如:DimIntegerArray(99)AsInteger這個數(shù)組中包含100個元素,腳標(biāo)從0到99。也可以指定腳標(biāo)的起始值,例如:DimIntegerArray(2to10)AsInteger這個數(shù)組含有九個元素,腳標(biāo)從2到10。還可以定義多維數(shù)組:DimThreeD(4,2to5,3to6)AsInteger上例定義了一個三維數(shù)組(4X4X4)。記錄的定義記錄定義是把控制權(quán)交給用戶的方法,它讓用戶可以定義自己的數(shù)據(jù)類型,它使用關(guān)鍵字“Type”,方法是:
14、Type【數(shù)據(jù)類型標(biāo)識符】域名As數(shù)據(jù)類型域名As數(shù)據(jù)類型域名As數(shù)據(jù)類型EndType例如,定義一個地址數(shù)據(jù):TypeAddressStreetAsStringZipCodeAsStringPhoneAsStringEndType這個地址數(shù)據(jù)里包括三個屬性,街區(qū)、郵政編碼和電話,可以把某數(shù)據(jù)定義成此類型DimMyHomeAsAddress要調(diào)用或改變“MyHome”的值時,類似于對對象的屬性的操作:為了簡化書寫重復(fù)的部分,可以用關(guān)鍵字“With”:WithMyHome.Street=阜成路”.ZipCode=.Phone=EndWith3第三章:VB語言本章提要:VB語法與Basic的異同注
15、釋語句長語句的分行條件語句循環(huán)語句運(yùn)算操作數(shù)據(jù)定義與賦值函數(shù)和過程一、VB與BasicVB之所以叫做“VisualBasic”就是因?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里對隱含變量
16、都當(dāng)作局部變量。VB里的說明語句(Declare),僅支持動態(tài)鏈結(jié)庫(DLL)的子程序和無變量函數(shù)。使用數(shù)組,必須事先用Dim或Redim進(jìn)行定義。二、注釋語句在使用注釋語句之前必須先了解注釋的作用,注釋不僅僅是對程序的解釋,有時它對于程序的調(diào)試也非常有用,譬如說可以利用注釋屏蔽一條語句以觀察變化,發(fā)現(xiàn)問題和錯誤。以后注釋語句將是我們在編程里最經(jīng)常用到的語句之一。在VB里,注釋語句有兩種,一種是用“Rem”關(guān)鍵字,這跟DOS里的批處理文件的用法一樣,還有一種是利用單引號“”,例如:DimaAsString與RemDimaAsString的作用是一致的。三、長語句的分行在比較早的版本中,因?yàn)闆]有
17、象C等語言用“;”隔開語句與語句,VB的語句是必須寫在一行里的,不過后來版本的VB里如許用分行符“_”把一個長語句分成若干行來存放。四、條件語句如果你學(xué)過任何一種編程的話,都會知道在程序里控制其流程的有兩種語句,條件與循環(huán),VB自然也不例外,其實(shí)不管哪種語言,條件和循環(huán)的樣子都差不多,只不過各有各的規(guī)矩罷了。在條件語句里,我們先來學(xué)習(xí)“IfThen”語句。它的一般語法是:If條件Then語句語句EndIf與C語言不同,VB的條件語句更符合英語的語法,如果Then后面所跟的語句只有一條,可以寫成:If條件Then語句而不用EndIf。有時我們還會用到If條件Then語句Else語句EndIf更可
18、以在Else里在嵌套If語句,如:If條件Then語句ElseIf語句Else語句EndIf所有這些可以用一個表格表示:句語句條件3TrueFalse條件NTrueFalse語句N語句N+l用了過多的Else后你會感到很不方便,而且程序結(jié)構(gòu)也不清晰,所以大多數(shù)的語言還有Select語句幫助解決這個問題。VB里的Select語句的格式是這樣的:SelectCase變量名Case情況1Case情況2CaseCaseElseEndSelect例如:SelectCasea%Case1Print“a=Case2Print“a=CaseElsePrint“adoesnotequalto1or2.”EndS
19、elect五、循環(huán)語句循環(huán)結(jié)構(gòu)是計(jì)算機(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循環(huán)變量=初賦值To終值Step步長Next循環(huán)變量在默認(rèn)情況下,Step被設(shè)為“1”,可以省略,Step也可以設(shè)為負(fù)值,例如:Dima=ForI=1To10a=NextI這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給“a”這樣的效
20、果和上面是一樣的,只不過是倒著加罷了,請看:Dima=ForI=10To1Step-1a=NextIWhile語句也是一個很常用的循環(huán)語句,它的形式很多。DoWhileLoop語句WhileWend語句DoLoopWhileWhile后面都跟邏輯條件判斷,“DoWhileLoop語句”和“WhileWend語句”作用相似,都是先判斷While后面的條件是否為“真”,如果為“真”則執(zhí)行里面的語句,如果為“假”,則退出循環(huán),循環(huán)直至條件為“假”終止?!癉oLoopWhile”與前兩者的區(qū)別在于,它不管條件的真假,都會先執(zhí)行“Do”后面的語句,也就是說,它至少執(zhí)行語句一次。與While用法相似的還有
21、Until語句,它是直至條件為真則終止循環(huán),句式把While上述三個語句的While換成Until即可,但是因?yàn)槿菀子浕欤晕医ㄗh只用While即可。Until條件可以相當(dāng)于WhileNot。For循環(huán)和Whlie循環(huán)應(yīng)當(dāng)根據(jù)適當(dāng)?shù)沫h(huán)境使用,它們有時也可替換。六、運(yùn)算操作1.數(shù)學(xué)運(yùn)算:加法運(yùn)算,也適合于字符串的之間的合并運(yùn)算。:加法運(yùn)算。*:乘法運(yùn)算。/:除法運(yùn)算。:整除運(yùn)算。Mod:求余運(yùn)算。例如:aModb表示a被b整除以后的余數(shù)。人:幕運(yùn)算。AAB表示以A為底的B次方。關(guān)系運(yùn)算關(guān)系運(yùn)算也稱比較運(yùn)算,它表示不等式的真或假,VB共提供六種運(yùn)算符,分別是=邏輯運(yùn)算邏輯運(yùn)算是對真或假的運(yùn)算,我
22、將列表說明:TTrueFFalse七、數(shù)據(jù)與定義本標(biāo)題的內(nèi)容已經(jīng)在上一章向大家詳述過,在這里就不再重復(fù)。八、函數(shù)與過程函數(shù)與過程有許多相似的地方,它們之間最大也是最本質(zhì)的區(qū)別就在于,函數(shù)有一個返回值,而過程只是執(zhí)行一系列動作,所以可以簡單的把函數(shù)理解成為一個變量,而VB中的每個事件都是一個過程,比如Commandl_Click()就是一個過程。因?yàn)樵诔绦蛟O(shè)計(jì)中經(jīng)常會有重復(fù)的地方,所以把它做成一個函數(shù)或一個過程,在使用時進(jìn)行調(diào)用,可以節(jié)省大量的輸入代碼的時間,而且使用函數(shù)和過程也便于程序的結(jié)構(gòu)化和修改查看。函數(shù)和過程都可以有參數(shù),也可以沒有參數(shù)。關(guān)于函數(shù)和過程將在以后的章中配合實(shí)例講解,請您繼續(xù)
23、VB教程。4-1第四章按鈕(一)從本章開始我們將正式進(jìn)入VB的編程世界,但這還僅僅是個開端,要編出功能強(qiáng)大的軟件,還要學(xué)很多東西,那就要看以后的VB高級教程了,我也得努力學(xué)??!按鈕是我們在Windows操作見到最多的控件,它們有著各種各樣的功能:“確認(rèn)”、“取消”、“下一步”等等,這些都是按鈕的表現(xiàn),另外還有很多圖形話的按鈕,其實(shí)它們并沒什么不同,所有的按鈕都是通過單擊(click)事件實(shí)現(xiàn)的,只不過是在外表不同罷了。下面就讓我們建立一個最簡單的按鈕,雙擊工具箱的CommandButton,將在窗體上建立一個形如圖4一血曲1|的按鈕,它的缺省名(Name屬性)為Commandl,我們可以把它改
24、名為cmdExit,把Caption屬性設(shè)為“退出”,然后雙擊,按鈕填寫代碼:PrivateSubcmdExit_Click()UnloadMeEndSub按下F5或者工具條上的播放按鈕,運(yùn)行程序。圖42當(dāng)你按下退出按鈕的時候,就會自動退出程序,原因是當(dāng)你單擊按鈕時激活了它的Click事件,執(zhí)行“UnloadMe”語句,使得窗體被卸載。上面舉了一個比較簡單的例子,下面的例子稍微復(fù)雜些:新建窗體,控件布局如圖43所示,包括一個List控件,一個Text控件和兩個按鈕(Commandl和Command2),(比較簡單的程序我們都采用缺省名),對它們屬性做如下修改:Button2Caption=“清
25、除”ListlCaption=“請輸入你的名字”TextlText=“”(空字符串)ButtonlCaption=復(fù)原”Enabled=False把使用Button1的Enabled屬性設(shè)為False(假),是使程序在初始時,無法單擊Command1。按F5,運(yùn)行程序,圖4一4,復(fù)原按鈕成為灰色,不可選。當(dāng)然現(xiàn)在程序還什么也不能做,下面我們在程序中添加代碼:首先在General里聲明全局變量:DimStoreStringAsString用來儲存字符串注意:為什么用全局變量?VB里每一個小過程都相當(dāng)于一個程序,程序里的變量稱為局部變量,是只能在程序內(nèi)部使用的,而當(dāng)程序調(diào)用結(jié)束后,由于從內(nèi)存中被清
26、除,所以變量儲存的值也就消失了,這里的全局變量是用來在過程中傳遞字符串。接著填寫以下代碼:PrivateSubCommand1_Click()Text1.Text二StoreStringCommandl.Enabled=FalseEndSubPrivateSubCommand2_Click()StoreString=Text1.TextText1.Text二清除Command1.Enabled=TrueEndSub運(yùn)行程序,如圖45。按下“清除”,文本框被清除,按下“復(fù)原”,文本有被恢復(fù),許多程序中的Undo/Redo就是利用這個原理實(shí)現(xiàn)的,現(xiàn)在知道為什么內(nèi)存越多越好了吧。我們在把程序修改一下
27、,把Button2刪除,Buttonl的Enabled屬性改為True,Caption改為“清除”,填寫代碼:PrivateSubCommandl_Click()IfCommandl.Caption二清除ThenStoreString=Textl.TextText1.Text=清除Commandl.Caption二復(fù)原ElseTextl.Text二StoreStringCommandl.Caption二清除EndIfEndSub同樣可以上面的功能,但是卻少用了一個控件,控件使用少的程序啟動會快些。下面的例子要更加復(fù)雜些,大家一定都用過Windows附件中的計(jì)算器,它是一個標(biāo)準(zhǔn)的科學(xué)計(jì)算器,利用
28、VB我們也可以做到,只是沒有那么復(fù)雜,四則運(yùn)算而已。先建立一個新的項(xiàng)目文件,里面包含一個Forml的窗體。然后,添加控件,包括一個Text框(Textl),和17個按鈕,這17個按鈕使用的名稱都是Commandl,只是Index屬性不同,就好象一個數(shù)組,創(chuàng)立一組按鈕的方法是,先在窗體上建立一個按鈕(Commandl),然后在Commandl上擊鼠標(biāo)右鍵,選擇復(fù)制(Copy),然后在窗體上任意部位擊右鍵,選擇粘貼(Paste),系統(tǒng)會提示是否創(chuàng)建控件組,選擇“是”,重復(fù)上面步驟,直至創(chuàng)立17個按鈕為止。各控件屬性如下表:TextlBackColor=&H00C0FFFF&Text=“0.”Com
29、mandlIndex016Index09Caption=Index10Caption=Index11Caption=Index12Caption=Index13Caption=Index14Caption=Index15Caption=Index16Caption=清除”如果想改變一些其他的屬性,比如字體,可以自己定義一下Font屬性,如果相對多個控件的共同屬性進(jìn)行改變,可以在窗體上按下鼠標(biāo),拖動,把多個控件一起選定,然后對它們的共同屬性進(jìn)行修改。別看這個東西小,還費(fèi)了近我兩個小時呢,不覺大嘆手生,里面也有些地方很繞彎子,我盡量解釋清楚。在編寫程序之前,我們先來回顧一下計(jì)算器的使用。按下數(shù)字鍵
30、在液晶屏上會出現(xiàn)數(shù)字,這是最基本的功能。第一次按下運(yùn)算鍵,再按下數(shù)字鍵,將重新輸入第二個數(shù)字,再次按下運(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里聲明窗體級全局變量:DimNum1,Num2AsSingleDimStrNum1,StrNum2AsString
31、DimFirstNumAsBoolean判斷是否是數(shù)字開頭因?yàn)門extl里是存放字符串的,所以要把輸入的數(shù)據(jù)進(jìn)行運(yùn)算,必須把字符型變量轉(zhuǎn)變?yōu)閷?shí)型變量,分別用Num1、Num2和StrNum1、StrNum2進(jìn)行存放。在Form_Load事件里給變量初賦值:Numl=0Num2=0StrNuml=StrNum2=FirstNum=True因?yàn)?7個按鈕使用的是同一事件,所以我們用一個SelectCase語句區(qū)分各個按鈕,雙擊任意按鈕輸入代碼:PrivateSubCommand1_Click(IndexAsInteger)SelectCaseIndexCase0To9IfFirstNumThenS
32、trNuml=Str(Index)實(shí)型轉(zhuǎn)字符型FirstNum=False初賦值為假Else非初賦值StrNum1=StrNum1+Str(Index)EndIfTextl.Text二StrNuml顯示還有其他語句,等待插入EndSelectEndSub運(yùn)行程序的話已經(jīng)可以輸入數(shù)據(jù),下面我們來處理小數(shù)點(diǎn)。在General里聲明新的變量:DimPointFlagAsBoolean判斷是否已有小數(shù)點(diǎn)我們知道小數(shù)點(diǎn)只能輸入一次,一個數(shù)據(jù)中不能有多個小數(shù)點(diǎn)存在,所以需要一個布爾變量做判斷。在Form_Load里進(jìn)行初賦值:PointFlag=False在Command的單擊事件里接著上面輸入新的代碼:
33、Casel0IfNotPointFlagThen如果沒有小數(shù)點(diǎn)IfFirstNumThen如果是第一個字符StrNuml=0.FirstNum=FalseElseStrNuml=StrNuml+.EndIfElse已有小數(shù)點(diǎn)ExitSub則退出單擊事件EndIfPointFlag=TrueText1.Text=StrNum14-2第四章按鈕(二)下面會復(fù)雜一些,我們先跳過等號,而來處理四則運(yùn)算先在General里聲明新變量:DimRunsignAsInteger儲存運(yùn)算符號DimSignFlagAsBoolean判斷是否已有運(yùn)算符號然后在Form_Load中進(jìn)行初賦值:Runsign=0Sig
34、nFlag=False在接下的Commandl_Click中繼續(xù)輸入代碼:Case12To15FirstNum=True使下一次可以輸入新數(shù)據(jù)PointFlag=False還原標(biāo)記值IfSignFlagThen前面已有運(yùn)算符未運(yùn)算CallRunElseSignFlag=TrueStrNum2=StrNuml把字符串1復(fù)制給字符串2StrNum1=字符串1清空EndIfRunsign=Index-11儲存鍵入的運(yùn)算符里面運(yùn)算的部分我用了一個過程,是因?yàn)樵诎聪碌忍枙r還會調(diào)用到運(yùn)算過程,這樣可以減少代碼的輸入,也使程序便于瀏覽。建立過程(Procedure),可以在General部分直接輸入,也可以
35、通過菜單里的“AddProcedure添加。Run的代碼如下:SubRun()Num1=Val(StrNum2)Num2=Val(StrNum1)SelectCaseRunsignCase1加equal=Num1+Num2Case2減equal=Num1-Num2Case3乘equal=Num1*Num2Case4除equal=Num1/Num2EndSelectStrNum2=Str(equal)StrNum1=StrNum2Text1.Text=StrNum2EndSub下面是其余的代碼:(在Command1_Click事件里,接著寫)Case11IfNotSignFlagThenText
36、1.Text=StrNum1equal=Val(StrNum1)FirstNum=TruePointFlag=FalseElseCallRunSignFlag=FalseEndIfCaseElse清除按鈕CallClearData里面又用到了一個ClearData過程,實(shí)際上就是Form_Load里的變量初賦值,代碼如下:SubClearData()Num1=0Num2=0StrNum1=StrNum2=FirstNum=TruePointFlag=FalseRunsign=0SignFlag=FalseText1.Text=0.EndSub這樣完整的程序就完成了,本章介紹了VB的第一個控件一
37、一按鈕,并且舉例,希望你繼續(xù)看下一章菜單。下面給出完整的程序代碼:DimNuml,Num2AsSingleDimStrNuml,StrNum2AsStringDimFirstNumAsBoolean判斷是否是數(shù)字開頭DimPointFlagAsBoolean判斷是否已有小數(shù)點(diǎn)DimRunsignAsInteger儲存運(yùn)算符號DimSignFlagAsBoolean判斷是否已有運(yùn)算符號SubClearData()Num1=0Num2=0StrNuml=StrNum2=FirstNum=TruePointFlag=FalseRunsign=0SignFlag=FalseText1.Text=0.E
38、ndSubSubRun()Num1=Val(StrNum2)Num2=Val(StrNum1)SelectCaseRunsignCase1equal=Num1+Num2Case2equal=Num1-Num2Case3equal=Num1*Num2Case4equal=Num1/Num2EndSelectStrNum2=Str(equal)StrNum1=StrNum2Text1.Text=StrNum2EndSubPrivateSubabout_Click()MsgBoxCreateby周曉陽。1998/7/27,vbDefaultButtonl,VB教程第四章范例EndSubPrivateSubCommand1_Click(IndexAsInteger)SelectCaseIndexCase0To9IfFirstNumThenStrNum1=Str(Index)FirstNum=FalseElseStrNum1=StrNum1+Str(Index)EndIfText1.Text=StrNum1Case10IfNotPointFla
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年陜西建材科技集團(tuán)股份有限公司招聘筆試真題
- 2023年寧波大學(xué)附屬人民醫(yī)院招聘編外護(hù)理人員筆試真題
- 白酒帶貨培訓(xùn)課程設(shè)計(jì)
- 2024年發(fā)酵類制品項(xiàng)目立項(xiàng)申請報(bào)告范稿
- 白酒包裝設(shè)計(jì)課程設(shè)計(jì)
- 2023年菏澤市第六人民醫(yī)院招聘備案制工作人員筆試真題
- 2024年P(guān)VC穩(wěn)定劑項(xiàng)目立項(xiàng)申請報(bào)告范文
- 2023年國家海洋環(huán)境監(jiān)測中心事業(yè)編制招聘筆試真題
- 2024年基因工程項(xiàng)目申請報(bào)告
- 2024年IVL檢測系統(tǒng)項(xiàng)目立項(xiàng)申請報(bào)告
- 木材的力學(xué)性質(zhì)-ppt課件
- 急性胰腺炎課件PPT
- POCT管理制度匯編
- 裝配式建筑施工技術(shù)PPT課件
- (完整版)小學(xué)第三人稱單數(shù)練習(xí)題及答案
- 急性胃腸炎病歷模板4頁
- 農(nóng)民合作社成員帳戶計(jì)算表
- 機(jī)械制圖CAD_(教案)全部
- 串并聯(lián)電路說課稿
- 上海市重點(diǎn)建設(shè)項(xiàng)目社會穩(wěn)定風(fēng)險(xiǎn)評估咨詢收費(fèi)辦法
- 畫法幾何習(xí)題集第六章答案大連理工大學(xué)版
評論
0/150
提交評論