應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)_第1頁(yè)
應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)_第2頁(yè)
應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)_第3頁(yè)
應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)_第4頁(yè)
應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)_第5頁(yè)
已閱讀5頁(yè),還剩234頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

應(yīng)用程序接口設(shè)計(jì)及代碼編寫(xiě)3.1簡(jiǎn)單的計(jì)算器應(yīng)用程序設(shè)計(jì)任務(wù)2.1.1任務(wù)描述仿照Windows操作系統(tǒng)自帶的計(jì)算器程序,設(shè)計(jì)一個(gè)計(jì)算器,完成加、減、乘、除四則運(yùn)算。運(yùn)行界面如圖所示。2主要執(zhí)行邏輯1.輸入第一個(gè)數(shù)字。當(dāng)單擊數(shù)字區(qū)的數(shù)字時(shí),文本框中將顯示相應(yīng)的數(shù)字,并能進(jìn)行正負(fù)數(shù)變換。2.輸入四則運(yùn)算符。當(dāng)?shù)谝粋€(gè)數(shù)字輸入完成后,可單擊功能區(qū)的加、減、乘、除四則運(yùn)算符。3.輸入第二個(gè)數(shù)字。當(dāng)單擊了某個(gè)運(yùn)算符后,再單擊數(shù)字區(qū)的數(shù)字時(shí),文本框中將顯示第二個(gè)數(shù)字。3主要執(zhí)行邏輯4.進(jìn)行計(jì)算。上述三步完成后,單擊“計(jì)算結(jié)果”按鈕,將在文本框中顯示四則運(yùn)算的結(jié)果。5.重復(fù)計(jì)算??稍诘谒牟降幕A(chǔ)上,返回到第2步繼續(xù)進(jìn)行四則運(yùn)算,或者單擊“清空”按鈕并返回第1步,開(kāi)始新的四則運(yùn)算過(guò)程。6.菜單操作。當(dāng)單擊“幫助”中的“關(guān)于”菜單項(xiàng)時(shí),彈出“幫助”窗體。7.退出系統(tǒng)。單擊“退出”按鈕結(jié)束程序。43.1.2界面布局53.1.3界面設(shè)計(jì)創(chuàng)建一個(gè)“標(biāo)準(zhǔn)EXE”工程。1.設(shè)置窗體屬性Caption——”計(jì)算器“MaxButton——False2.框架控件Caption——分別為“數(shù)字區(qū)”和“功能區(qū)”3.放置命令按鈕64.放置文本框按鈕txtResult——顯示四則運(yùn)算結(jié)果。txtFirst——存儲(chǔ)四則運(yùn)算的第一個(gè)數(shù)字。txtSecond——存儲(chǔ)四則運(yùn)算的第二個(gè)數(shù)字。txtLabel——存儲(chǔ)四則運(yùn)算符。txtFirst、txtSecond、txtLabel文本框的Visible屬性設(shè)置為False。75.設(shè)計(jì)菜單在VB集成環(huán)境中通過(guò)“工具—菜單編輯器”打開(kāi)“菜單編輯器”。83.1.4代碼設(shè)計(jì)窗體的Load事件PrivateSubForm_Load()txtFirst.Text=""txtSecond.Text=""txtLabel.Text="“txtResult.Text=""EndSub93.1.4代碼設(shè)計(jì)(1)數(shù)字“0”按鈕PrivateSubCommand1_Click()'每單擊一一下該按鈕,就在文本框的尾部加字符“0”'如果txtLabel為空,則說(shuō)明現(xiàn)在正在輸入的是第一個(gè)數(shù)字‘否則表示輸入的是第二個(gè)數(shù)字IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"0"ElsetxtSecond.Text=txtSecond.Text+"0"EndIfEndSub103.1.4代碼設(shè)計(jì)(2)數(shù)字“1”按鈕PrivateSubCommand3_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"1"ElsetxtSecond.Text=txtSecond.Text+"1"EndIfEndSub113.1.4代碼設(shè)計(jì)(3)數(shù)字“2”按鈕PrivateSubCommand4_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"2"ElsetxtSecond.Text=txtSecond.Text+"2"EndIfEndSub123.1.4代碼設(shè)計(jì)(4)數(shù)字“3”按鈕PrivateSubCommand5_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"3"ElsetxtSecond.Text=txtSecond.Text+"3"EndIfEndSub133.1.4代碼設(shè)計(jì)(5)數(shù)字“4”按鈕PrivateSubCommand6_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"4"ElsetxtSecond.Text=txtSecond.Text+"4"EndIfEndSub143.1.4代碼設(shè)計(jì)(6)數(shù)字“5”按鈕PrivateSubCommand7_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"5"ElsetxtSecond.Text=txtSecond.Text+"5"EndIfEndSub153.1.4代碼設(shè)計(jì)(7)數(shù)字“6”按鈕PrivateSubCommand8_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"6"ElsetxtSecond.Text=txtSecond.Text+"6"EndIfEndSub163.1.4代碼設(shè)計(jì)(8)數(shù)字“7”按鈕PrivateSubCommand9_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"7"ElsetxtSecond.Text=txtSecond.Text+"7"EndIfEndSub173.1.4代碼設(shè)計(jì)(9)數(shù)字“8”按鈕PrivateSubCommand10_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"8"ElsetxtSecond.Text=txtSecond.Text+"8"EndIfEndSub183.1.4代碼設(shè)計(jì)(10)數(shù)字“9”按鈕PrivateSubCommand11_Click()IftxtLabel.Text=""ThentxtFirst.Text=txtFirst.Text+"9"ElsetxtSecond.Text=txtSecond.Text+"9"EndIfEndSub193.1.4代碼設(shè)計(jì)3.txtFirst文本框的Change事件'txtFirst文本框的Change事件PrivateSubtxtFirst_Change()'每當(dāng)txtFirst的內(nèi)容發(fā)生變化時(shí),將變化結(jié)果隨時(shí)映射到txtResulttxtResult.Text=txtFirst.TextEndSub203.1.4代碼設(shè)計(jì)txtSecond文本框的Change事件PrivateSubtxtSecond_Change()'每當(dāng)txtSecond的內(nèi)容發(fā)生變化時(shí),將變化結(jié)果隨時(shí)映射到txtResulttxtResult.Text=txtSecond.TextEndSub

213.1.4代碼設(shè)計(jì)4.正符號(hào)(±)命令按鈕的Click事件PrivateSubCommand2_Click()'如果txtLabel為空,則說(shuō)明現(xiàn)在正在輸入的是第一個(gè)數(shù)字'否則表示當(dāng)前正這輸入的是第二個(gè)數(shù)字'轉(zhuǎn)換語(yǔ)句的主要含義是:首先用Val函數(shù)將txtFirst.Text轉(zhuǎn)換為數(shù)字'然后再乘以-1IftxtLabel.Text=""ThentxtFirst.Text=-1*Val(txtFirst.Text)ElsetxtSecond.Text=-1*Val(txtSecond.Text)EndIfEndSub223.1.4代碼設(shè)計(jì)5.“+”、”-”、”×”、”÷”命令按鈕的Click事件'“+”命令按鈕的Click事件PrivateSubCommand15_Click()txtLabel.Text="+"EndSub'“-”命令按鈕的Click事件PrivateSubCommand16_Click()txtLabel.Text="-"EndSub233.1.4代碼設(shè)計(jì)5.“+”、”-”、”×”、”÷”命令按鈕的Click事件'“×”命令按鈕的Click事件PrivateSubCommand12_Click()txtLabel.Text="×"EndSub'“÷”命令按鈕的Click事件PrivateSubCommand13_Click()txtLabel.Text="÷"EndSub246.“計(jì)算結(jié)果”(即“=”號(hào))命令按鈕的Click事件PrivateSubCommand17_Click()'定義一個(gè)Double類(lèi)型的變量DimMyResultAsDouble'以txtLable.Text的值為多重分支條件SelectCasetxtLabel.TextCase"+"'當(dāng)txtLabel.Text的值為"+"時(shí)MyResult=Val(txtFirst.Text)+Val(txtSecond.Text)Case"-"'當(dāng)txtLabel.Text的值為"-"時(shí)MyResult=Val(txtFirst.Text)-Val(txtSecond.Text)Case"×"'當(dāng)txtLabel.Text的值為"×"時(shí)MyResult=Val(txtFirst.Text)*Val(txtSecond.Text)Case"÷"'當(dāng)txtLabel.Text的值為"÷"時(shí)MyResult=Val(txtFirst.Text)/Val(txtSecond.Text)EndSelecttxtResult.Text=MyResult'顯示計(jì)算結(jié)果EndSub253.1.4代碼設(shè)計(jì)7.”清空“命令按鈕的Click事件'如果四則運(yùn)算完成,希望進(jìn)行另一表達(dá)式的四則運(yùn)算'則單擊此按鈕PrivateSubCommand14_Click()txtFirst.Text=""txtLabel.Text=""txtSecond.Text=""txtResult.Text=""EndSub263.1.4代碼設(shè)計(jì)8.”幫助“菜單的調(diào)用'事先通過(guò)VB集成開(kāi)發(fā)環(huán)境”工程-添加窗體“菜單'使用”關(guān)于“對(duì)話(huà)框模板創(chuàng)建一個(gè)關(guān)于窗體(名為frmAbout)'然后完成計(jì)算機(jī)應(yīng)用程序的”幫助-關(guān)于”子菜單的Click事件代碼PrivateSubAbout_Click()frmAbout.Show1EndSub9.退出命令按鈕的Click事件PrivateSubCommand18_Click()EndEndSub273.1.5計(jì)算機(jī)應(yīng)用程序分析上述計(jì)算器應(yīng)用程序的特點(diǎn):(1)在界面設(shè)計(jì)方面,用到的控件種類(lèi)、數(shù)量多,窗體的設(shè)計(jì)精細(xì)了許多,應(yīng)用程序有兩個(gè)窗體。(2)控件間的聯(lián)系比較密切,比如數(shù)字區(qū)按鈕的Click事件,會(huì)影響txtFirst和txtSecond文本框的Text屬性值,而txtFirst控件的屬性會(huì)進(jìn)一步影響txtResult。(3)程序代碼的結(jié)果開(kāi)始有點(diǎn)復(fù)雜,比如用到了IF……THEN之類(lèi)的條件判斷結(jié)構(gòu)。283.2可視化界面設(shè)計(jì)基礎(chǔ)3.2.1可視化界面設(shè)計(jì)概述VB可視化程序設(shè)計(jì)包括兩部分內(nèi)容:用戶(hù)界面設(shè)計(jì)編寫(xiě)程序代碼界面是應(yīng)用程序最重要的組成部分。一個(gè)好的應(yīng)用程序應(yīng)具有友好的用戶(hù)接口界面。而窗體是應(yīng)用程序的對(duì)外接口,是其它控件的載體和容器。29VB應(yīng)用程序的窗體有三種:?jiǎn)未绑w:一個(gè)應(yīng)用程序只包含一個(gè)窗體。多窗體:一個(gè)應(yīng)用程序包含多個(gè)窗體。MDI窗體:是一種特殊的多窗體界面。有一個(gè)父窗體和眾多的子窗體構(gòu)成。30設(shè)計(jì)美觀的窗體界面的一些基本原則:窗體的顏色不要過(guò)多,否則不易讀。如果要設(shè)計(jì)多彩色的窗體界面,那么應(yīng)當(dāng)盡量同一色系的顏色,比如藍(lán)、淡藍(lán)等。不要試圖在一個(gè)窗體上放置過(guò)多的信息。盡可能以清晰簡(jiǎn)明的方式設(shè)計(jì)窗體。使用適當(dāng)?shù)念伾?、圖片來(lái)增加窗體的趣味是必要的,但要適度。界面元素應(yīng)盡可能一致,只選擇最適合特定應(yīng)用程序的控件。31習(xí)題P94二、2.

是應(yīng)用程序的對(duì)外窗口,是其它控件和載體的容器。答案:窗體323.2.2多窗體設(shè)計(jì)當(dāng)應(yīng)用程序的功能比較復(fù)雜時(shí),就需要添加多個(gè)窗體來(lái)實(shí)現(xiàn)程序功能。這就是多窗體設(shè)計(jì)。1.添加窗體一般通過(guò)“工程-添加窗體”菜單完成。332.設(shè)置啟動(dòng)窗體每個(gè)應(yīng)用程序都有開(kāi)始執(zhí)行的入口。應(yīng)用程序開(kāi)始運(yùn)行時(shí)首先出現(xiàn)的窗體稱(chēng)為啟動(dòng)窗體。在默認(rèn)的情況下,創(chuàng)建的第一個(gè)窗體為啟動(dòng)窗體。如果想在應(yīng)用程序啟動(dòng)時(shí)首先啟動(dòng)別的窗體,那么就得修改啟動(dòng)窗體的設(shè)置了。34利用“工程屬性”對(duì)話(huà)框設(shè)置啟動(dòng)窗體35讓程序首先執(zhí)行一個(gè)子過(guò)程,通過(guò)該子過(guò)程加載顯示窗體。Main子過(guò)程是標(biāo)準(zhǔn)模塊中的一個(gè)子過(guò)程。可以通過(guò)“工程-添加模塊”菜單創(chuàng)建一個(gè)標(biāo)準(zhǔn)模塊,然后在其中輸入代碼。36習(xí)題P94二、3.每個(gè)應(yīng)用程序都有開(kāi)始執(zhí)行的入口,在VB中這種窗體稱(chēng)為

。答案:?jiǎn)?dòng)窗體373.窗體的裝載與卸載(1)Load語(yǔ)句Load語(yǔ)句用于把窗體或其它對(duì)象裝入內(nèi)存。當(dāng)執(zhí)行裝載窗體命令時(shí),應(yīng)用程序首先把窗體屬性設(shè)置為初始值,然后再觸發(fā)Load事件。一旦窗體裝載,不管它是否可見(jiàn),它的屬性及控件就可以被程序調(diào)用。當(dāng)使用窗體的Show方法時(shí),VB程序會(huì)自動(dòng)裝載窗體,然后才顯示該窗體,此時(shí)隱含使用了Load語(yǔ)句。38習(xí)題P93一、1.與Load.Form2等效的語(yǔ)句是()A.Form2.LoadB.Form2.Visible=FalseC.Form2.ShowD.Form2.Visible=True答案:C393.窗體的裝載與卸載(2)UnLoad語(yǔ)句該語(yǔ)句可以把窗體或其它對(duì)象從內(nèi)存中卸載,在單窗體和多窗體應(yīng)用程序中均會(huì)使用這條語(yǔ)句,并且在卸載窗體時(shí)將會(huì)觸發(fā)UnLoad事件。對(duì)單窗體應(yīng)用程序而言,以下語(yǔ)句是等效的:UnLoadForm1等效于End如果是在Form1上執(zhí)行UnLoad語(yǔ)句,則可以直接寫(xiě)成:UnLoadMe40習(xí)題P94二、4.如果要將窗體對(duì)象從內(nèi)存中卸載,可使用

語(yǔ)句。答案:Unload414.多窗體應(yīng)用程序設(shè)計(jì)的一般步驟(1)添加應(yīng)用程序所需要的窗體、模塊。(2)設(shè)置起始窗體,以及多窗體間的調(diào)用關(guān)系。(3)按單窗體設(shè)計(jì)方法設(shè)計(jì)每個(gè)窗體。423.2.3MDI多文檔窗體的設(shè)計(jì)多文檔窗體(MDI)是可以同時(shí)進(jìn)行多文檔操作的界面。它運(yùn)行同時(shí)運(yùn)行多個(gè)文檔,每個(gè)文檔顯示在自己的窗口中,用戶(hù)可以隨意在各個(gè)文檔間進(jìn)行切換。目前大多數(shù)軟件都采用這種界面,比如MicrosoftWord。MDI界面由一個(gè)父窗體和多個(gè)子窗體組成。子窗體的活動(dòng)范圍只能限制在父窗體內(nèi)。父窗體為應(yīng)用程序中的所有子窗體提供操作空間,并負(fù)責(zé)管理各個(gè)子窗體的操作,是所有子窗體的容器。431.MDI父窗體一個(gè)VB工程中只能有一個(gè)MDI父窗體,創(chuàng)建的方法是:(1)打開(kāi)或新建一個(gè)工程,單擊“工程”菜單中的“添加MDI窗體”命令。(2)在彈出的“添加MDI窗體”對(duì)話(huà)框中雙擊“添加MDI窗體”圖標(biāo)。(3)這時(shí)就會(huì)出現(xiàn)一個(gè)默認(rèn)名稱(chēng)為MDIForm1的新窗體。444546472.MDI子窗體父窗體創(chuàng)建完成以后,我們可以通過(guò)“工程”菜單添加若干標(biāo)準(zhǔn)窗體,然后將這些窗體的MDIChild屬性設(shè)置為T(mén)rue,該窗體就成為工程中的子窗體了。子窗體和一般窗體看起來(lái)沒(méi)有什么兩樣,但運(yùn)行時(shí)子窗體被包含在父窗體中。無(wú)論如何拖動(dòng)子窗體,也無(wú)法使它們擺脫父窗體的束縛,即MDI父窗體是所有子窗體的容器。48習(xí)題P93一、2.可通過(guò)設(shè)置一普通窗體的何種屬性,將它變換為MDI子窗體?()A.MDIChile=TrueB.WindowsState=NormalC.MDIChile=FalseD.WindowsState=Maximizel答案:A493.MDI子窗體的顯示方法——靜態(tài)顯示方法和動(dòng)態(tài)顯示方法(1)靜態(tài)顯示方法靜態(tài)顯示方法是通過(guò)在設(shè)計(jì)應(yīng)用程序時(shí)添加多個(gè)窗體來(lái)完成的。假設(shè)程序中允許用戶(hù)在父窗體上同時(shí)打開(kāi)三個(gè)窗體,那么設(shè)計(jì)時(shí)只要添加三個(gè)子窗體,在MDI父窗體中通過(guò)Show命令顯示即可。50(2)動(dòng)態(tài)顯示方法動(dòng)態(tài)顯示方法不象靜態(tài)顯示方法那樣在設(shè)計(jì)時(shí)就添加一大堆窗體,它只需要設(shè)計(jì)一個(gè)子窗體,比如Form1,然后通過(guò)以下步驟就利用實(shí)現(xiàn)多窗體顯示。DimMyNewFormAsNewForm1MyNewForm.Show514.MDI界面實(shí)例創(chuàng)建一個(gè)MDIForm1父窗體和一個(gè)子窗體。在Form1子窗體上放置一個(gè)Label標(biāo)簽并將其Caption屬性設(shè)置為“子窗體”。在父窗體上設(shè)計(jì)“新建”和“排列”兩個(gè)菜單項(xiàng),在它們的Click事件中分別加入如下代碼:PrivateSubm1_Click()'當(dāng)單擊“新建”菜單時(shí)執(zhí)行下列語(yǔ)句DimMyNewFormAsNewForm1MyNewForm.ShowEndSubPrivateSubm2_Click()‘對(duì)子窗體進(jìn)行排列,排列參數(shù)如表所示(P62)MDIForm1.Arrange0EndSub52程序運(yùn)行結(jié)果533.2.4窗體的運(yùn)行方式1.模態(tài)和非模態(tài)顯示窗體模態(tài)窗體占用整個(gè)應(yīng)用程序的控制。在模態(tài)窗體顯示狀態(tài)下,只有關(guān)閉該窗體,用戶(hù)才能與其它窗體進(jìn)行交互,繼續(xù)操作應(yīng)用程序的其它部分。通常顯示重要信息的窗體都是以模態(tài)方式顯示的,比如計(jì)算器應(yīng)用程序中采用下列方式顯示frmAbout窗體:frmAbout.Show1或frmAbout.ShowvbModal543.2.4窗體的運(yùn)行方式1.模態(tài)和非模態(tài)顯示窗體非模態(tài)窗體也稱(chēng)常態(tài)窗體,用戶(hù)在跟此窗體進(jìn)行交互時(shí),還可以切換到其它窗體。一般情況下應(yīng)用程序運(yùn)行的第一個(gè)窗體(主窗體)就是以非模態(tài)方式顯示的。比如:Form2.Show或Form2.Show0Form2.ShowvbModaless553.2.4窗體的運(yùn)行方式1.模態(tài)和非模態(tài)顯示窗體說(shuō)明兩種顯示方式主要區(qū)別的例子:(1)非模態(tài)顯示窗體的例子新建一個(gè)“標(biāo)準(zhǔn)EXE”工程,在其中添加一個(gè)Form2新窗體。在Form1窗體是放置一命令按鈕,并編寫(xiě)以下代碼:PrivateSubCommand1_Click()Form2.ShowMsgBox"你打開(kāi)了Form2窗體!"EndSub運(yùn)行程序,單擊命令按鈕,F(xiàn)orm2和MsgBox幾乎同時(shí)出現(xiàn),這是因?yàn)槌霈F(xiàn)在執(zhí)行了Form2.Show語(yǔ)句后,馬上執(zhí)行下一條MsgBox語(yǔ)句。(演示)563.2.4窗體的運(yùn)行方式1.模態(tài)和非模態(tài)顯示窗體說(shuō)明兩種顯示方式主要區(qū)別的例子:(2)模態(tài)顯示窗體的例子在上例窗體顯示語(yǔ)句修改為Form2.Show1,其它設(shè)置個(gè)操作過(guò)程不變,即PrivateSubCommand1_Click()Form2.Show1MsgBox"你打開(kāi)了Form2窗體!"EndSub你會(huì)發(fā)現(xiàn),必須關(guān)閉了Form2窗體后,MsgBox對(duì)話(huà)框才出現(xiàn)。這是因?yàn)槌绦蛟趫?zhí)行了Form2.Show1語(yǔ)句后,將停止不動(dòng)的緣故。(演示)573.2.4窗體的運(yùn)行方式2.最前端顯示窗體我們經(jīng)常會(huì)遇到一些窗體需要永遠(yuǎn)顯示在所有窗體之上(TopMost),這種顯示方式稱(chēng)為最前端顯示,一般可通過(guò)Windows的SetWindowsPos來(lái)實(shí)現(xiàn)這一功能。(見(jiàn)第4章)58習(xí)題P94二、5.模態(tài)方式顯示Form1窗體對(duì)象的語(yǔ)句是

。答案:Form1.Show1或Form1.ShowvbModal593.2.4窗體的運(yùn)行方式3.ToolWindow窗體集成環(huán)境中的工具窗口就是一種典型的ToolWindow窗體。可以通過(guò)API函數(shù)設(shè)計(jì)這類(lèi)窗體,但最簡(jiǎn)單的方法是將窗體的BordeStyle屬性設(shè)置為3或4。60習(xí)題P94二、1.VB應(yīng)用程序可分為單窗體、多窗體和

。答案:MDI多文檔窗體613.3可視化界面高級(jí)設(shè)計(jì)除了命令按鈕、文本框、標(biāo)簽控件外,我們?cè)谟?jì)算器應(yīng)用程序中還使用了菜單技術(shù)和框架。這些對(duì)象的使用使得應(yīng)用程序更加美觀,更便于用戶(hù)操作。623.3.1菜單設(shè)計(jì)1.菜單的基本屬性和事件在VB應(yīng)用程序中,菜單是一個(gè)控件,與其它控件一樣,它具有定義其外觀和行為的屬性,在設(shè)計(jì)或運(yùn)行時(shí)可以進(jìn)行設(shè)置或調(diào)用。菜單主要有標(biāo)題(Caption)、名稱(chēng)(Name)、有效(Enabled)、可見(jiàn)(Visible)、復(fù)選(Check)和快捷鍵(ShortCut)等屬性。菜單控件只包含一個(gè)事件,即Click事件,當(dāng)用戶(hù)用鼠標(biāo)或鍵盤(pán)選中菜單控件時(shí),將調(diào)用該事件。633.3.1菜單設(shè)計(jì)2.下拉菜單的基本創(chuàng)建方法菜單控件不在工具箱中出現(xiàn),而需要通過(guò)“工具”菜單項(xiàng)打開(kāi)菜單編輯器完成菜單設(shè)計(jì)?;静襟E:(1)新建一個(gè)窗體,利用菜單編輯器設(shè)計(jì)各菜單項(xiàng);(2)利用代碼編輯器窗口編寫(xiě)每一個(gè)菜單項(xiàng)的Click事件過(guò)程。643.3.1菜單設(shè)計(jì)3.設(shè)置分隔條的方法分隔條是一種特殊的菜單項(xiàng),它的標(biāo)題(Caption)屬性為減號(hào),即“-”。653.3.1菜單設(shè)計(jì)4.設(shè)置訪(fǎng)問(wèn)鍵和快捷鍵的方法通過(guò)設(shè)置訪(fǎng)問(wèn)鍵和快捷鍵可以使用戶(hù)通過(guò)鍵盤(pán)訪(fǎng)問(wèn)菜單。訪(fǎng)問(wèn)鍵,一般在標(biāo)題中,通過(guò)“&”符號(hào)和相應(yīng)的字母設(shè)置,此字母的下方會(huì)出現(xiàn)一下劃線(xiàn)。用戶(hù)可以通過(guò)Alt+字母來(lái)選擇此項(xiàng)??旖萱I:快捷鍵將顯示在菜單項(xiàng)標(biāo)題的右邊,可以大大提高選擇菜單命令的速度,可通過(guò)菜單編輯器進(jìn)行設(shè)置。663.3.1菜單設(shè)計(jì)5.彈出式菜單的創(chuàng)建方法彈出式菜單是一種獨(dú)立于菜單欄而顯示在窗體上的浮動(dòng)式菜單,在可視化菜單中經(jīng)常出現(xiàn),有時(shí)也稱(chēng)為快捷菜單。創(chuàng)建方法是:(1)首先利用菜單編輯器建立菜單,方法與前面介紹的下拉式菜單創(chuàng)建方法一樣。(2)利用窗體的PopupMenu方法顯示彈出式菜單。673.3.1菜單設(shè)計(jì)6.菜單創(chuàng)建實(shí)例新建一個(gè)工程,使用菜單編輯器創(chuàng)建一個(gè)下拉式菜單。菜單標(biāo)題菜單名稱(chēng)菜單級(jí)別文件(&F)MnuFile主菜單項(xiàng)新建(&N)mnuNew子菜單項(xiàng)打開(kāi)(&O)mnuOpen子菜單項(xiàng)-mnuSep子菜單項(xiàng)退出mnuExit子菜單項(xiàng)683.3.1菜單設(shè)計(jì)6.菜單創(chuàng)建實(shí)例(2)編寫(xiě)代碼PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)'如果單擊的是鼠標(biāo)右鍵,則彈出mnuFile菜單IfButton=2ThenPopupMenumnuFileEndIfEndSub6970彈出式菜單的運(yùn)行結(jié)果713.3.1菜單設(shè)計(jì)6.菜單創(chuàng)建實(shí)例(3)如果只希望窗體界面上出現(xiàn)彈出式菜單,而不希望它同時(shí)顯示下拉式菜單,可以在設(shè)計(jì)階段,通過(guò)菜單編輯器取消mnuFile的可見(jiàn)設(shè)置,或者在Form1的Load事件中加入如下代碼:mnuFile.Visible=False72習(xí)題P94二、6.VB中可以使用

命令顯示彈出式菜單。答案:PopupMenu73習(xí)題P94四、1.彈出式菜單設(shè)計(jì),運(yùn)行結(jié)果如圖1所示。74設(shè)計(jì)過(guò)程:新建工程,創(chuàng)建一個(gè)標(biāo)簽,其Caption屬性為“右擊窗體則彈出快速菜單:”。然后通過(guò)“工具-菜單編輯器”創(chuàng)建彈出式菜單:菜單標(biāo)題菜單名稱(chēng)快捷鍵可見(jiàn)彈出菜單PopMenu新建mnuNewCtr+N√打開(kāi)mnuOpenCtr+O√保存mnuSaveCtr+S√—mnuSep√關(guān)閉mnuClose√75代碼設(shè)計(jì):PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfButton=2ThenPopupMenuPopMenuEndIfEndSub(演示)763.3.2框架、單選鈕和復(fù)選框控件1.框架控件窗體可以放置很多控件,為了將控件分成若干個(gè)組就需要采用框架(Frame)控件??蚣芸丶话阕鳛槠渌丶娜萜魇褂?。可按功能將控件組合在框架內(nèi),一方面使界面簡(jiǎn)潔清晰,另一方面當(dāng)框架移動(dòng)時(shí),其中的控件也一起移動(dòng),以提高界面設(shè)計(jì)的效率??蚣芸丶闹饕獙傩允荂aption,用于指明框架的標(biāo)題。(演示)772.單選鈕和復(fù)選框(1)單選鈕(OptionButton),如果希望用戶(hù)在幾個(gè)選項(xiàng)中只能選一個(gè),就要使用單選鈕。它的主要屬性值是Value。當(dāng)Value屬性設(shè)置為T(mén)rue時(shí),表示該選項(xiàng)被選中。在運(yùn)行狀態(tài),當(dāng)用戶(hù)用鼠標(biāo)單擊該控件時(shí),該控件中出現(xiàn)一個(gè)圓黑點(diǎn)(表示被選中),其Value值被自動(dòng)設(shè)置為T(mén)rue。這時(shí)這一組中其它的單選鈕就會(huì)被自動(dòng)取消選擇。78(2)復(fù)選框(CheckBox)如果希望用戶(hù)在幾個(gè)選項(xiàng)中可選擇多項(xiàng),就可使用復(fù)選框控件。它的主要屬性也是Value(0:未被選中;1:選中;2:禁用復(fù)選框)。在運(yùn)行狀態(tài),可用鼠標(biāo)的單擊操作,切換復(fù)選框的狀態(tài)。79框架、單選鈕和復(fù)選框的用法80習(xí)題P94四、2.考試系統(tǒng)程序。利用單選框表示試題選項(xiàng)。MsgBox提示選擇結(jié)果,運(yùn)行結(jié)果圖2、圖3所示。81圖2.考試系統(tǒng)主界面82圖3.信息提示83代碼設(shè)計(jì):DimFlag1,Flag2AsStringPrivateSubForm_Load()Option1(1).Value=FalseOption1(2).Value=FalseOption1(3).Value=FalseOption1(4).Value=FalseOption2(1).Value=FalseOption2(2).Value=FalseOption2(3).Value=FalseOption2(4).Value=FalseEndSub84代碼設(shè)計(jì):PrivateSubOption1_Click(IndexAsInteger)SelectCaseIndexCase1Flag1="A.Form2.Load"Case2Flag1="B.Form2.Visible=False"Case3Flag1="C.Form2.Show"Case4Flag1="D.Form2.Visible=True"EndSelectEndSub85代碼設(shè)計(jì):PrivateSubOption2_Click(IndexAsInteger)SelectCaseIndexCase1Flag2="A.0"Case2Flag2="B.1"Case3Flag2="C.2"Case4Flag2="D.2.5"EndSelectEndSub86代碼設(shè)計(jì):PrivateSubCommand1_Click()MsgBox"你的選擇是:"+Chr(13)_+Flag1+Chr(13)+Flag2EndSubPrivateSubCommand2_Click()EndEndSub(演示)873.3.3列表框控件如果我們希望用戶(hù)僅僅通過(guò)鼠標(biāo)選擇,而不用使用鍵盤(pán)輸入相關(guān)信息時(shí),就需要使用列表框(ListBox)控件了。比如我們要開(kāi)發(fā)一個(gè)學(xué)生檔案管理系統(tǒng),其中需要輸入學(xué)生的專(zhuān)業(yè)信息,由于這類(lèi)數(shù)據(jù)基本固定,因此為了減少用戶(hù)的輸入工作量,同時(shí)也為了使輸入的數(shù)據(jù)規(guī)范化,就可以將專(zhuān)業(yè)信息事先“保存”在列表框控件里。88列表框控件的用法89對(duì)以上的用戶(hù)界面加入以下代碼,運(yùn)行程序后,當(dāng)單擊列表框的某個(gè)選項(xiàng)時(shí),上端的文本框?qū)⒊霈F(xiàn)對(duì)應(yīng)的信息。PrivateSubForm_Load()List1.AddItem"計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)"List1.AddItem"軟件開(kāi)發(fā)專(zhuān)業(yè)"List1.AddItem"電子商務(wù)專(zhuān)業(yè)"List1.AddItem"財(cái)務(wù)會(huì)計(jì)專(zhuān)業(yè)"List1.AddItem"通信控制專(zhuān)業(yè)"List1.AddItem"企業(yè)管理專(zhuān)業(yè)"List1.AddItem"工程管理專(zhuān)業(yè)"EndSubPrivateSubCommand1_Click()Text1.Text=List1.TextEndSub90列表框控件的常用屬性、事件和方法1.List屬性用來(lái)返回或設(shè)置控件的列表部分所包含的項(xiàng)目。List屬性是一個(gè)字符串?dāng)?shù)組,數(shù)組的每一項(xiàng)都是一個(gè)列表項(xiàng)目。比如上例中,List(0)的值等于“計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)”,List(1)的值等于“軟件開(kāi)發(fā)專(zhuān)業(yè)”。List的屬性值可以通過(guò)AddItem方法來(lái)添加,也可以直接設(shè)置,例如:List1.list(0)=“計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)”List1.list(1)=“軟件開(kāi)發(fā)專(zhuān)業(yè)”……91列表框控件的常用屬性、事件和方法2.ListIndex屬性用來(lái)返回或設(shè)置控件當(dāng)前選定項(xiàng)目的索引。如果選中第一個(gè)項(xiàng)目,則屬性值為0,第二個(gè)為1。依此類(lèi)推。若未選定項(xiàng)目,則ListIndex的值為-1,在上例中,由于選中的是第一個(gè)項(xiàng)目,所以L(fǎng)istIndex的值為0。該屬性往往與List屬性結(jié)合起來(lái)使用,以便確定當(dāng)前選定的項(xiàng)目文本,方法如下:List1.List(List.ListIndex)92列表框控件的常用屬性、事件和方法3.Text屬性用來(lái)返回當(dāng)前選定項(xiàng)目的文本。List.Text的結(jié)果與List1.List(List.ListIndex)表達(dá)式結(jié)果完全相同。4.ListCount屬性該屬性返回列表框中項(xiàng)目總數(shù)目。在上例中,List.ListCount的值為7。5.AddItem方法該方法用來(lái)添加新項(xiàng)目,常用的語(yǔ)法是:List1.AddItem字符串93列表框控件的常用屬性、事件和方法6.RemoveItem方法用來(lái)刪除列表框中的項(xiàng)目,例如要?jiǎng)h除列表框中的第一個(gè)項(xiàng)目,可以使用以下語(yǔ)句:List1.RemoveItem0或者List1.RemoveItem“計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)”7.Clear方法用來(lái)刪除列表中的所有項(xiàng)目。8.Click事件最常用的是ListBox控件的Click和DbClick事件。94習(xí)題P93一、3.可通過(guò)何種屬性判斷List列表框項(xiàng)目總數(shù)目?()A.ListIndexB.ListTextC.ListCountD.ListItem答案:C95習(xí)題P94二、7.向List列表框控件添加新項(xiàng)目的方法是

。答案:AddItem演示形考冊(cè)作業(yè)2.四.796形考冊(cè)作業(yè)2.二.77.列表框中項(xiàng)目的序號(hào)是從

開(kāi)始的。答案:097形考冊(cè)作業(yè)2.四.22.輸出100~200之間不能被3整除的數(shù),要求用Do語(yǔ)句的一種形式實(shí)現(xiàn),程序運(yùn)行結(jié)果如圖5所示。98程序代碼:PrivateSubForm_Load()x=101Text1.Text="100"DoWhilex<=200IfxMod3<>0ThenText1.Text=Text1.Text+Chr(13)+Chr(10)+Trim(Str(x))EndIfx=x+1LoopEndSub993.3.4組合框控件可以將組合框控件(ComboBox)控件理解為列表框控件和文本框控件的功能結(jié)合體。有了這個(gè)控件,用戶(hù)既可以從列表框中選擇項(xiàng)目,也可以在需要時(shí)輸入項(xiàng)目。可以使用這個(gè)控件制作所需界面。100單擊項(xiàng)目之前單擊項(xiàng)目單擊項(xiàng)目之后101添加項(xiàng)目代碼:PrivateSubForm_Load()Combo1.AddItem"計(jì)算機(jī)應(yīng)用專(zhuān)業(yè)"Combo1.AddItem"軟件開(kāi)發(fā)專(zhuān)業(yè)"Combo1.AddItem"電子商務(wù)專(zhuān)業(yè)"Combo1.AddItem"財(cái)務(wù)會(huì)計(jì)專(zhuān)業(yè)"Combo1.AddItem"通信控制專(zhuān)業(yè)"Combo1.AddItem"企業(yè)管理專(zhuān)業(yè)"Combo1.AddItem"工程管理專(zhuān)業(yè)"EndSub102組合框主要包括List,ListIndex,Text,ListCount屬性和AddItem方法,其用法列表框控件相同。列表框還有一個(gè)重要屬性是Style。

屬性值樣式0——vbComboDropDown下拉式組合框1——vbComboSimple簡(jiǎn)單組合框2——vbComboDropDownList下拉式列表框103(1)下拉式組合框在缺省設(shè)置(Style=0)下,組合框?yàn)橄吕?。用?hù)可直接輸入文本,也可單擊組合框右側(cè)的附帶箭頭打開(kāi)選項(xiàng)列表。選定某個(gè)選項(xiàng)后,將此此選項(xiàng)插入到組合框頂端的文本框中。104(2)簡(jiǎn)單組合框?qū)⒔M合框Style屬性設(shè)置為1就指定一個(gè)簡(jiǎn)單的組合框。任何時(shí)候在其內(nèi)部顯示列表中所有選項(xiàng)。當(dāng)選項(xiàng)超過(guò)可顯示的限度時(shí)將自動(dòng)插入垂直滾動(dòng)條。用戶(hù)既可輸入文本,也可從列表中選擇。105(3)下拉式列表框?qū)⒔M合框Style屬性設(shè)置為2就指定一個(gè)簡(jiǎn)單的下拉式列表框合框。它顯示項(xiàng)目的列表,用戶(hù)必須從中選擇。106習(xí)題P93一、4.如果未選定項(xiàng)目,那么ComboBox組合框控件的ListIndex屬性值為()A.0B.1C.-1D.隨機(jī)數(shù)答案:C107形考冊(cè)作業(yè)2.二.33.組合框具有

兩種控件的基本功能。答案:.文本框.列表框1083.3.5工具欄、狀態(tài)欄和圖標(biāo)列表控件工具欄(ToolBar)、狀態(tài)欄(StatusBar)并非是用戶(hù)界面所必須的,但它可以使我們的界面更友好、更快捷。如果于圖標(biāo)列表控件(ImageList)一同使用,界面就會(huì)更加出色。1091.添加控件的方法當(dāng)我們新建一個(gè)工程時(shí),在工具箱中找不到工具欄、狀態(tài)欄之類(lèi)的控件,此時(shí)需要通過(guò)“工程-部件”菜單項(xiàng)進(jìn)行添加。在部件對(duì)話(huà)框中選擇“MicrosoftWindowscommonControl6.0”后單擊“應(yīng)用”按鈕,就可以在工具箱中看到這些控件了。110VB最大的特色就是其豐富的控件庫(kù),有些是VB系統(tǒng)自帶的,有些是第三方提供的。還有些可以是我們自己開(kāi)發(fā)的。當(dāng)需要使用這些控件時(shí),我們可以通過(guò)部件選擇對(duì)話(huà)框進(jìn)行添加,同樣也可以使用這種方法來(lái)刪除已添加已添加的控件,只要將要?jiǎng)h除的控件前的“√”去掉再單擊“確定”按鈕即可。1112.使用實(shí)例工具欄、狀態(tài)欄、圖標(biāo)列表都是VB提供的控件,具有屬性、方法和事件,這三種控件的屬性都可以通過(guò)相應(yīng)的屬性設(shè)置窗進(jìn)行設(shè)置,操作比較簡(jiǎn)單。下面通過(guò)實(shí)例介紹它們的用法。實(shí)例:設(shè)計(jì)一個(gè)用戶(hù)界面,界面包括工具欄和狀態(tài)欄,工具欄包括三個(gè)按鈕(新建、打開(kāi)、關(guān)閉),狀態(tài)欄分兩部分。當(dāng)用戶(hù)單擊工具欄上的某個(gè)按鈕時(shí),在狀態(tài)欄的第二部分顯示相應(yīng)的提示信息。112工具欄、狀態(tài)欄設(shè)計(jì)效果113設(shè)計(jì)步驟:(1)添加控件。在窗體上放置工具欄、狀態(tài)欄、圖標(biāo)列表控件,控件的缺省名稱(chēng)分別為T(mén)oolBar1,StatusBar1,ImageList1.首先要利用“工程—部件”菜單向工具箱添加應(yīng)該添加有關(guān)工具。在部件對(duì)話(huà)礦中選擇“MicrosoftWindowsCommonControls6.0”后單擊“應(yīng)用”按鈕,就可以把這些控件添加到工具箱了。114利用部件對(duì)話(huà)框添加工具115添加工具后的工具箱116(2)設(shè)置ImageList控件在ImageList1控件上右擊鼠標(biāo),選擇屬性窗口。將高度×寬度設(shè)置為16×16。117向圖像框添加作為工具欄按鈕的圖像。118(3)設(shè)置ToolBar控件。在ToolBar1控件上右擊鼠標(biāo),調(diào)出其屬性頁(yè)窗體。設(shè)置圖像列表為ImageList1。119插入按鈕,并設(shè)置每個(gè)按鈕的標(biāo)題,根據(jù)提示文本,以及所對(duì)應(yīng)的圖像編號(hào)。120(4)設(shè)置StatusBar控件。在StatusBar控件上右擊鼠標(biāo),調(diào)出其屬性頁(yè)。在其中插入兩個(gè)窗格,第一個(gè)窗格的文本設(shè)置為“提示”,第二個(gè)窗格自動(dòng)調(diào)整大小屬性設(shè)置為為1,其他設(shè)置不變。121(5)添加事件代碼ToolBar的Click事件中加入以下代碼。PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)'當(dāng)用戶(hù)單擊工具欄上的按鈕時(shí),'在狀態(tài)欄的第二個(gè)窗格顯示北單擊按鈕的名稱(chēng)'參數(shù)Button表示當(dāng)前被單擊的按鈕,其類(lèi)型為按鈕對(duì)象'狀態(tài)欄的第二個(gè)窗格的值用Panels(2).Text表示StatusBar1.Panels(2)="你剛才單擊的按鈕是["+Button.Caption+"]"EndSub

[演示]122形考冊(cè)作業(yè)2.一.1414.下列可以用來(lái)存儲(chǔ)圖像供其它對(duì)象使用的控件是()。A.ToolBarB.StatursBarC.ImageListD.TreeView答案:C123形考冊(cè)作業(yè)2.一.1515.當(dāng)單擊工具欄上的按鈕時(shí),會(huì)觸發(fā)的事件是()。A.ButtonClickB.ChangeC.LoadD.KeyPess答案:A1243.3.6通用對(duì)話(huà)框事件通用對(duì)話(huà)框控件包括打開(kāi)(Open)、保存(Save)、顏色(Color)、字體(Font)、打?。≒rint)等對(duì)話(huà)框。這些對(duì)話(huà)框在各個(gè)應(yīng)用程序中都是相似的??墒褂脩?hù)界面整齊美觀。125將通用對(duì)話(huà)框加到工具箱的方法:選擇“工程-部件”,在部件對(duì)話(huà)框中選擇“MicrosoftCommonDialogControl6.0”126示例:通用對(duì)話(huà)框的使用方法程序運(yùn)行效果1271.“打開(kāi)”對(duì)話(huà)框PrivateSubCommand1_Click()'設(shè)置對(duì)話(huà)框的標(biāo)題CommonDialog1.DialogTitle="打開(kāi)文件"'設(shè)置文件過(guò)濾器CommonDialog1.Filter="所有文件│*.*│文本文件│*.txt"'設(shè)置默認(rèn)文件類(lèi)型(2表示文本文件*.txt)CommonDialog1.FilterIndex=2'顯示“打開(kāi)”對(duì)話(huà)框CommonDialog1.ShowOpen'顯示選擇的文件名(全路徑名)MsgBox"你過(guò)程選擇的文件名是:"+CommonDialog1.FileNameEndSub1282.“另存為”對(duì)話(huà)框PrivateSubCommand2_Click()'設(shè)置對(duì)話(huà)框的標(biāo)題CommonDialog1.DialogTitle="另存為"'設(shè)置文件過(guò)濾器CommonDialog1.Filter="所有文件│*.*│文本文件│*.txt"'設(shè)置默認(rèn)文件類(lèi)型(2表示外文件*.txt)CommonDialog1.FilterIndex=2'顯示“另存為”對(duì)話(huà)框CommonDialog1.ShowSave'顯示剛才輸入的文件名(全路徑名)MsgBox"你剛才輸入的文件名是:"+CommonDialog1.FileNameEndSub1291.“顏色”對(duì)話(huà)框PrivateSubCommand3_Click()'設(shè)置顏色窗體的形狀常用的有、2、4、8四個(gè)CommonDialog1.Flags=1'顯示“顏色”對(duì)話(huà)框CommonDialog1.ShowColor'根據(jù)選擇的顏色,改變文本框的前景色Text1.ForeColor=CommonDialog1.ColorEndSub[演示char3.3.6]130形考冊(cè)作業(yè)2.一.16

16.要利用公共對(duì)話(huà)框控件來(lái)顯示“打開(kāi)文件”對(duì)話(huà)框,需要調(diào)用控件的(

)方法。A.ShowPrintB.ShowOpenC.LoadD.ShowColor答案:B131形考冊(cè)作業(yè)2.二.2

2.通用對(duì)話(huà)框控件可顯示的常用對(duì)話(huà)框有

、

、

、

。

答案:打開(kāi)(Open)

保存(Save)

顏色(Color)

字體(Font)

打?。≒rint)1323.3.7其它常用控件

在設(shè)計(jì)用戶(hù)界面時(shí),還有許多常用控件。比如,當(dāng)界面上的控件太多時(shí),可以使用TabStrip控件將它們分組;當(dāng)需要顯示安裝進(jìn)度、程序執(zhí)行進(jìn)度時(shí),可以使用ProgressBar控件;當(dāng)希望制作類(lèi)似于Windows資源管理器式的菜單時(shí),可以使用TreeView控件。此外,水平滾動(dòng)條(HScrollBar)和垂直滾動(dòng)條控件(VScrollBar)控件也常常用到。133但是無(wú)論控件有多少,它們的原理都是相同的,都是一些屬性、事件和方法的封裝體。因此,重要的不是學(xué)習(xí)多少控件(實(shí)際上也是學(xué)不完的),而是理解VB可視化界面設(shè)計(jì)的思想,只有這樣才能具有良好的自學(xué)能力。另外,任何一個(gè)應(yīng)用程序都不可能用到所有的控件,在一個(gè)應(yīng)用程序中使用過(guò)多種類(lèi)的控件并非好習(xí)慣,任何時(shí)候都要記住:簡(jiǎn)潔才是最美觀的。1343.4代碼設(shè)計(jì)基礎(chǔ)VB是基于面向?qū)ο笏枷氲木幊陶Z(yǔ)言,應(yīng)用程序界面是由一系列控件搭建而成的,而VB的代碼就像一條線(xiàn),將這些圖形界面元素串起來(lái),從而可以使窗體、控件通過(guò)事件驅(qū)動(dòng)機(jī)制連接為一個(gè)有機(jī)的整體。代碼設(shè)計(jì)是一個(gè)重要工作,它一般會(huì)涉及變量、運(yùn)算符號(hào)、常用函數(shù)和流程控制結(jié)構(gòu)等知識(shí)。1353.4.1變量的聲明變量是程序運(yùn)行期間其值可以變化的量。在程序設(shè)計(jì)中經(jīng)常要用到變量,變量在使用前必須要先聲明。聲明變量就是事先將變量通知給程序,告訴編譯器將要使用的變量,使編譯器產(chǎn)生優(yōu)化代碼,進(jìn)而提高運(yùn)行速度。例如:DimMyResultAsDouble變量名數(shù)據(jù)類(lèi)型1361.顯式聲明

上例是一種顯式聲明變量的方法,基本語(yǔ)法結(jié)構(gòu)為:Dim變量名As數(shù)據(jù)類(lèi)型其中變量名是一些有效的符號(hào),需按照命名規(guī)則對(duì)變量命名。VB數(shù)據(jù)類(lèi)型是指應(yīng)用程序?yàn)榱颂幚砀鞣N類(lèi)型的數(shù)據(jù),如整數(shù)、字符等,以便提高存儲(chǔ)和處理各類(lèi)數(shù)據(jù)類(lèi)型的效率而引入的概念,比如Integer整型、String字符型。1372.隱式聲明有時(shí)為了簡(jiǎn)化程序的書(shū)寫(xiě),VB允許在使用變量前不使用Dim語(yǔ)句進(jìn)行事先定義,而由VB自動(dòng)將變量聲明為變體型(Variant類(lèi)型),這種方式稱(chēng)為隱式聲明。隱式聲明方法為書(shū)寫(xiě)程序提供了較多的靈活性,但也會(huì)降低程序的執(zhí)行效率,特別是可讀性差。當(dāng)把一個(gè)變量聲明為Variant時(shí),這個(gè)變量可以用來(lái)存儲(chǔ)各種數(shù)據(jù),但會(huì)帶來(lái)內(nèi)存空間消耗的增大,并且容易出現(xiàn)數(shù)據(jù)運(yùn)算問(wèn)題。因此最好對(duì)每個(gè)變量都進(jìn)行顯式聲明。138習(xí)題P94二、8.如果不能事先確定變量的數(shù)據(jù)類(lèi)型,則可以把它聲明為

類(lèi)型。答案:變體(Variant)139習(xí)題P94二、9.一般可以使用

關(guān)鍵字聲明變量。答案:Dim140形考冊(cè)作業(yè)2.一.77.以下可以作為VisualBasic變量名的是()。A.SINB.COIC.COS(X)D.X(-1)答案:B1413.4.2基本數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型數(shù)據(jù)名稱(chēng)所占字節(jié)有效值字節(jié)型Byte0~255布爾型Boolean2True或Folse整型Integer2-32768~32767長(zhǎng)整型Long4單精度型Singer4雙精度型Double8貨幣型Currency8日期型Date8對(duì)象型Object字符串長(zhǎng)度變長(zhǎng)字符串型String*NumNum可變類(lèi)型Variant不定142幾個(gè)變量聲明的例子:PrivateSubCommand1_Click()DimMyIntegerAsInteger’聲明一個(gè)整型變量DimMyStringAsString’聲明一個(gè)變長(zhǎng)的字符型變量DimMyStringAsString*10’聲明一個(gè)長(zhǎng)度固定的字符型變量DimMyBooleanAsBoolean’聲明一個(gè)布爾變量DimMyVariantAsVariant’聲明一個(gè)變體型變量EndSub143幾個(gè)變量聲明的例子:PrivateSubCommand1_Click()DimMyTextAsNewTextBox’聲明一個(gè)類(lèi)型為文本框的變量SetMyText=Text1’將控件Text1的值賦給對(duì)象變量MyTextMyText.Caption=“你好!”’改變對(duì)象變量MyTexr的標(biāo)題EndSubPrivateSubCommand1_Click()DimMyObjectAsControl’聲明控件變量SetMyObject=Form1.Text1’將Form1的Text1賦給對(duì)象變量MyObject.Text=“你好!’改變對(duì)象變量的標(biāo)題SetMyObject=Form1.Command1MyObject.Caption=“確定”EndSub144形考冊(cè)作業(yè)2二.1515.以下語(yǔ)句的輸出結(jié)果是

。a%=3.14159Printa%

答案:3(因?yàn)樽兞縜被聲明為整型變量——%表示整型變量)145形考冊(cè)作業(yè)2三.44.PrivateSubCommand1_Click()Dima,bAsIntegera=3.4b=3.4Text1.Text=aText2.Text=bEndSub答案:Text1顯示3.4,Text2顯示3。如右圖所示。

1463.4.3變量初始值

任何變量在被聲明后都會(huì)有一個(gè)初始值。一般情況下,數(shù)值型變量的初始值為0;字符串變量的初始值為空字符串,即"";變體型變量的初始值為空值,即Null值;布爾型的初始值為假,即Flase。當(dāng)空值的變體變量在表達(dá)式中參加運(yùn)算時(shí),系統(tǒng)會(huì)根據(jù)實(shí)際情況將其解釋為0或空字符串。147習(xí)題P93一、5.DimIAsInterger,則運(yùn)行時(shí)變量的初始值是()A.0B.1C.-1D.空值答案:01483.4.4變量的作用域

變量的作用域是從空間的角度去分析變量屬性的。它規(guī)定了變量在應(yīng)用程序中的使用范圍,即在什么范圍內(nèi)是可見(jiàn)的(Visible)、有效的(Enabled)。1491.過(guò)程級(jí)變量過(guò)程級(jí)變量是指在過(guò)程內(nèi)部聲明的變量。只有在該過(guò)程中的代碼才能訪(fǎng)問(wèn)這個(gè)變量,該變量不能用于程序的其它部分,建議用Dim關(guān)鍵字來(lái)聲明。1502.窗體級(jí)和模塊級(jí)變量窗體級(jí)變量是指在窗體或模塊的代碼聲明段用Dim或Private聲明的變量。其作用范圍是整個(gè)模塊或窗體。即在窗體或模塊的所有過(guò)程中,都可以使用這些變量,當(dāng)離開(kāi)這個(gè)窗體或模塊時(shí),此變量就不起作用了。為了增加可讀性,建議使用Private關(guān)鍵字聲明。例如:1513.全局變量

全局變量在整個(gè)應(yīng)用程序中有效,一般在模塊代碼編輯器的頂部使用Public聲明。1523.4.3變量的生命周期所謂變量的生命周期,是指能夠保存變量值的時(shí)間。如果說(shuō)變量的作用域是從空間角度來(lái)看待變量的,那么生命周期則是從變量存在的時(shí)間上來(lái)理解的。1531.過(guò)程級(jí)變量用Dim聲明的過(guò)程級(jí)變量,只有在過(guò)程執(zhí)行期才存在。當(dāng)過(guò)程執(zhí)行結(jié)束時(shí)(EndSub),這個(gè)變量的值也將從內(nèi)存中釋放。直到下一次調(diào)用該過(guò)程時(shí),才重新給該變量分配一個(gè)存儲(chǔ)空間,重新賦值,開(kāi)始一個(gè)新的生命周期。但當(dāng)使用Static關(guān)鍵字來(lái)聲明局部變量時(shí),該變量的生命周期是應(yīng)用程序的整個(gè)運(yùn)行期,即在該過(guò)程執(zhí)行結(jié)束時(shí),系統(tǒng)并不釋放該變量的內(nèi)存空間,而是繼續(xù)保留其值。語(yǔ)法結(jié)構(gòu):Static變量名As數(shù)據(jù)類(lèi)型1542.模塊級(jí)、窗體級(jí)和全局變量

這些變量的生命周期是程序的運(yùn)行期,不必使用Static關(guān)鍵字來(lái)聲明。例如,新創(chuàng)建一個(gè)工程不在其中添加Form1(啟動(dòng)窗體)和Form2兩個(gè)窗體。它們的調(diào)用關(guān)系及調(diào)用結(jié)果如圖所示:155示例:新建一個(gè)工程,添加Form1(啟動(dòng)窗體)和Form2兩個(gè)窗體。它們的調(diào)用關(guān)系和調(diào)用兩次后的結(jié)果如圖所示。156(1)Form1中的代碼PrivateSubCommand1_Click()'以模態(tài)方法顯示Form2窗體Form2.Show1EndSub(2)Form2中的代碼PrivatejAsIntegerPrivateSubCommand1_Click()UnloadMeEndSubPrivateSubForm_Load()j=j+1Text1.Text=Str(j)EndSub[演示char3.4.5]157可見(jiàn),即使Form2被卸載,變量j的值仍然保持不變。如果希望每次調(diào)用Form2窗體時(shí),變量j均從初始值0開(kāi)始,則應(yīng)該在Form2的Load或Activate事件中加入j=0之類(lèi)的賦值語(yǔ)句,進(jìn)行變量初始化。在窗體的Load或Activate事件中變量初始化工作是一個(gè)好的編程習(xí)慣。158形考冊(cè)作業(yè)2.一.11.按照變量的作用域可將變量劃分為(

)。A.公有、私有、系統(tǒng)B.全局變量、模塊級(jí)變量、過(guò)程級(jí)變量C.動(dòng)態(tài)、常態(tài)、靜態(tài)D.Public、Private、Protected答案:B159形考冊(cè)作業(yè)2.一.2020.有如下程序段:Dimstr1AsString*5Str1=”VisualBasic”

當(dāng)該程序段執(zhí)行時(shí),變量str1的之值是(

)A.”Visual”B.”Visua”C.”V”D.”VisualBasic”

答案:B160習(xí)題P94三、2.請(qǐng)簡(jiǎn)要說(shuō)明一下變量的作用域和生命周期的含義。答:變量的作用域是從空間的角度去分析變量屬性的。它規(guī)定了變量在應(yīng)用程序中的使用范圍,即在什么范圍內(nèi)是可見(jiàn)的(Visible)、有效的(Enabled)。所謂變量的生命周期,是指能夠保存變量值的時(shí)間。如果說(shuō)變量的作用域是從空間角度來(lái)看待變量的,那么生命周期則是從變量存在的時(shí)間上來(lái)理解的。1613.4.6常量常量是在程序運(yùn)行過(guò)程中其值保持不變的量,通??煞譃榉?hào)常量和文字常量?jī)纱箢?lèi)。定語(yǔ)常量的語(yǔ)法是:

[Public│PrivateConst變量名As數(shù)據(jù)類(lèi)型[=表達(dá)式]其中Private為缺省選項(xiàng),表達(dá)該常量只能在包含該聲明的模塊中使用。Public表達(dá)該常量可以在整個(gè)應(yīng)用程序運(yùn)行周期中使用。但要注意,在過(guò)程中是不能使用該選項(xiàng)的。例:PublicConstPiAsDouble=3.1415926I=Pi*251623.4.7運(yùn)算符和表達(dá)式運(yùn)算是對(duì)數(shù)據(jù)的一種操作,VB用一組特定的符號(hào)表示對(duì)數(shù)據(jù)的操作,這些符號(hào)稱(chēng)為運(yùn)算符,它操作的對(duì)象稱(chēng)為操作數(shù)。操作數(shù)和運(yùn)算符按一定的規(guī)則連接在一起成了表達(dá)式,任何一個(gè)合法的表達(dá)式都有唯一的一個(gè)結(jié)果。表達(dá)式中的運(yùn)算符按一定的規(guī)則進(jìn)行運(yùn)算,即我們經(jīng)常所說(shuō)的“先乘除后加減”,這就是運(yùn)算符的優(yōu)先級(jí)別。VB中有算術(shù)運(yùn)算符、字符運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符四種運(yùn)算符。1631.算術(shù)運(yùn)算符VB中有八種運(yùn)算符,按優(yōu)先級(jí)別的高低順序分別是:(1)指數(shù)運(yùn)算符:^(2)取負(fù):-(3)乘法*、除法/(4)整除:\(5)取模(取余):Mod(6)加+、減-164在書(shū)寫(xiě)VB算術(shù)表達(dá)式時(shí)應(yīng)注意:(1)可以用圓括弧()改變表達(dá)式的運(yùn)算順序,括弧內(nèi)的運(yùn)算符總是先被運(yùn)算。(2)同級(jí)別的運(yùn)算符在一起時(shí),按自左向右順序運(yùn)算。(3)指數(shù)運(yùn)算符與取負(fù)運(yùn)算符在一起時(shí),先取負(fù)。比如3^-2表示3的-2次方。(4)為了提高表達(dá)式的可讀性,應(yīng)盡可能用“()”標(biāo)識(shí)出運(yùn)算順序。165習(xí)題P94一、6.執(zhí)行語(yǔ)句a=5Mod3,則a的值是()。A.0B.1C.2D.2.5答案:C166習(xí)題P94一、7.執(zhí)行語(yǔ)句a=5\3,b=5/2,則a、b的值分別是()。A.2、2.5B.1、2C.2.5、2D.1、2.5答案:D167形考冊(cè)作業(yè)2.一.66.表達(dá)式6+10Mod4*2+1的值是()。A.9B.11C.1D.3答案:A1682.關(guān)系運(yùn)算符關(guān)系運(yùn)算符主要用于對(duì)兩個(gè)運(yùn)算量進(jìn)行關(guān)系比較。所謂運(yùn)算量可以是常量、變量或算術(shù)表達(dá)式、函數(shù)等。通過(guò)關(guān)系運(yùn)算符將兩個(gè)運(yùn)算量連接起來(lái)形成關(guān)系表達(dá)式,關(guān)系表達(dá)式的值是邏輯值,只有真(True)和假(False)兩個(gè)值。在相應(yīng)的場(chǎng)合,VB把0解釋為False,而任何非0的解釋為T(mén)rue。169VB有六種關(guān)系運(yùn)算符:大于(>)小于(<)等于(=)不等于(<>)大于等于(>=)小于等于(<=)它們的優(yōu)先級(jí)是相同的,按自左向右運(yùn)算,即用于對(duì)字符串或數(shù)字型數(shù)據(jù)進(jìn)行比較。170關(guān)系運(yùn)算符操作舉例運(yùn)算符(名稱(chēng))適用操作數(shù)類(lèi)型示例結(jié)果=(等于)全部1=1True>(大于)全部1>2False<(小于>)全部3<5True<>(不等于)全部“He”<>”She”True>=(大于等于)全部4>=4True<=(小于等于)全部“ab”<=“ac”True171當(dāng)進(jìn)行字符串比較時(shí),其運(yùn)算邏輯是:按自左至右的順序,逐一比較兩個(gè)字符串對(duì)應(yīng)位置的ASCII碼值,第一次遇到ASCII碼值不同時(shí),哪個(gè)值最大則哪個(gè)字符串就大。比如“abcd>”abCD”的值為T(mén)rue。關(guān)系表達(dá)式采用以下格式書(shū)寫(xiě):運(yùn)算量1關(guān)系運(yùn)算符運(yùn)算量2172習(xí)題P94一、10.VB中下列邏輯表達(dá)式書(shū)寫(xiě)是正確的()。A.a>b>cB.a>banda>cC.a≤bD.A≠2答案:B173形考冊(cè)作業(yè)2.一.1111.“x是小于80的非負(fù)數(shù)”,用VB表達(dá)式表示正確的是()。A.0≤x<80B.0<=x<80C.0<=xAndx<80D.0<=xOrx<80答案:C174形考冊(cè)作業(yè)2.二.1212.將下列各條件寫(xiě)成VisualBasic邏輯表達(dá)式。(1)

1≤x<12(2)

A+B≥C或a-c≤c(3)

a和b都為正數(shù)或同為負(fù)數(shù)答案:(1)1<=xandx<12(2)A+B>=Cora-c<=c(3)a>0andb>0ora<0andb<01753.邏輯運(yùn)算符邏輯運(yùn)算符用于進(jìn)行邏輯判斷,用它們將算術(shù)表達(dá)式、關(guān)系表達(dá)式、常量、變量、函數(shù)連接起來(lái)就形成了邏輯表達(dá)式。任何一個(gè)邏輯表達(dá)式均具有True或False值。VB提供了六個(gè)邏輯運(yùn)算符,按優(yōu)先順序排列如下:(1)邏輯非:Not(2)邏輯與:And(3)邏輯或:Or(4)邏輯異或:Xor(5)等價(jià):Eqv(6)隱含:Imp176

邏輯運(yùn)算符使用說(shuō)明運(yùn)算符(名稱(chēng))用法及說(shuō)明Not(邏輯非)Nota若a為T(mén)ure,則結(jié)果為False,否則結(jié)果為T(mén)ureAnd(邏輯與)aAndb僅當(dāng)a與b同為T(mén)ure,結(jié)果為T(mén)ure,否則結(jié)果為FalseOr(邏輯或)AOrb僅當(dāng)a與b同為False,結(jié)果為False,否則結(jié)果為T(mén)ureXor(異或)AXorba,b不同時(shí),結(jié)果為T(mén)ure,否則結(jié)果為FalseEqv(邏輯相等)AEqvba,b相同時(shí),結(jié)果為T(mén)ure,否則結(jié)果為FalseImp(蘊(yùn)涵)AImpb當(dāng)且僅當(dāng)a為T(mén)ure,同時(shí)b為False時(shí),結(jié)果為False,否則結(jié)果為T(mén)ure177形考冊(cè)作業(yè)2.二.13

13.設(shè)A=2,B=3,C=4,D=5。表達(dá)式NotA<=COr4*C=B^2AndB<>A+C的值為

。答案:False解題思路:FNotA<=COr4*C=B^2AndB<>A+CTFTFT1784.字符串連接符字符串是由兩個(gè)雙引號(hào)“”包括的字母和數(shù)字的組合體,字符串連接符的作用是將字符串常量、變量和函數(shù)連接起來(lái),從而形成一個(gè)較大的字符串,主要要“+”和“&”兩個(gè)符號(hào),它們的運(yùn)算結(jié)果基本相同。比如:“Abcd”+”1234”將得到一個(gè)新的字符串“abcd1234”。179習(xí)題P94二、10.執(zhí)行賦值語(yǔ)句a=“1234”+“567“后,變量a的值為

。答案:"1234567"1803.4.8常用函數(shù)1.數(shù)值型函數(shù)函數(shù)名功能Abs求絕對(duì)值A(chǔ)tn反正切函數(shù)Cos余弦函數(shù)Exp求指數(shù)Fix取整數(shù),對(duì)負(fù)數(shù)較大的Int取整數(shù),對(duì)負(fù)數(shù)較小的Log求對(duì)數(shù)Rnd產(chǎn)生一個(gè)0~1間的隨機(jī)數(shù)Sgn求數(shù)字符號(hào)Sin正弦函數(shù)Sqr求平方根Tan正切函數(shù)181例:PrivateSubCommand1_Click()DimvnfTextAsVariantText1.Text=Abs(-20)'返回20Text2.Text=Int(3.5)'返回3Text3.Text=Int(-3.5)'返回-4Text4.Text=Fix(3.5)'返回3Text5.Text=Fix(-3.5)'返回-3Text6.Text=CInt(3.5)'返回4Text7.Text=Rnd'返回[0,1]之間的隨機(jī)數(shù)Text8.Text=Hex(128)'返回128的十六進(jìn)制數(shù)EndSu182數(shù)值型函數(shù)學(xué)習(xí)183形考冊(cè)作業(yè)2二.1111.將下列函數(shù)式子寫(xiě)成VisualBasic表達(dá)式。(1):

。(2):

。(3

溫馨提示

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

評(píng)論

0/150

提交評(píng)論