Visual-Basic程序設(shè)計(jì)教程課件_第1頁(yè)
Visual-Basic程序設(shè)計(jì)教程課件_第2頁(yè)
Visual-Basic程序設(shè)計(jì)教程課件_第3頁(yè)
Visual-Basic程序設(shè)計(jì)教程課件_第4頁(yè)
Visual-Basic程序設(shè)計(jì)教程課件_第5頁(yè)
已閱讀5頁(yè),還剩55頁(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)介

VisualBasic程序設(shè)計(jì)教程

7/22/20231計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件

前面介紹的VB應(yīng)用程序是由過(guò)程組成的,除了定義一些公共的常量、變量或數(shù)組外,編寫(xiě)代碼都是在事件過(guò)程中進(jìn)行的。事件過(guò)程由VB預(yù)先定義,編程人員所要做的工作就是在已經(jīng)存在的過(guò)程中編寫(xiě)代碼。實(shí)際應(yīng)用中,為了使程序結(jié)構(gòu)清楚,代碼易于理解和維護(hù),或減少代碼的重復(fù)性,可將重復(fù)性較大、具有一定完整功能的代碼段獨(dú)立出來(lái)形成一個(gè)單獨(dú)的程序段,在需要完成該程序段功能時(shí)可根據(jù)不同的參數(shù)調(diào)用該程序段。這種經(jīng)過(guò)定義的具有獨(dú)立功能的程序段叫做“通用過(guò)程”。根據(jù)功能不同可以分為“子過(guò)程”和“函數(shù)過(guò)程”7/22/20232計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件第七章

過(guò)程

教學(xué)目的要求:

通過(guò)本章的學(xué)習(xí),要求熟悉和掌握:自定義函數(shù)過(guò)程和子過(guò)程聲明與調(diào)用的語(yǔ)法格式、參數(shù)含義及功能特性;三種參數(shù)傳遞方式(值傳遞、地址傳遞、數(shù)組傳遞)的應(yīng)用;嵌套調(diào)用和遞歸調(diào)用的執(zhí)行流程以及遞歸過(guò)程的特點(diǎn);變量聲明及其作用域;列表框、組合框和滾動(dòng)條的常用屬性、方法和事件。

教學(xué)難點(diǎn):確定過(guò)程體的內(nèi)容、形式參數(shù)的個(gè)數(shù)及數(shù)據(jù)類(lèi)型、參數(shù)傳遞方式;遞歸過(guò)程的遞推和遞歸問(wèn)題;多過(guò)程應(yīng)用程序中變量的作用域。

7/22/20233計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件第七章

數(shù)組7.1函數(shù)過(guò)程7.2子過(guò)程

7.3參數(shù)傳遞

7.4變量的作用域

7.5過(guò)程的遞歸調(diào)用7.6列表框、組合框和滾動(dòng)條7.7應(yīng)用程序舉例7/22/20234計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.1函數(shù)過(guò)程

VB系統(tǒng)自身提供了豐富的內(nèi)部函數(shù),這些函數(shù)無(wú)需用戶(hù)聲明即可在程序中直接調(diào)用。此外,VB允許程序設(shè)計(jì)人員根據(jù)需要,把某一算法編寫(xiě)成相對(duì)獨(dú)立的程序段,并按照一定的格式進(jìn)行聲明,在源程序的適當(dāng)位置對(duì)其進(jìn)行調(diào)用,這就是自定義函數(shù)過(guò)程的聲明及調(diào)用。用戶(hù)自定義的函數(shù)過(guò)程應(yīng)遵循先定義后使用的原則。7/22/20235計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明[Public|Private|Friend][Static]Function<函數(shù)過(guò)程名>[<(形式參數(shù)表)>][As<類(lèi)型>][<語(yǔ)句塊1>][<函數(shù)過(guò)程名>=<表達(dá)式>][ExitFunction][<語(yǔ)句塊2>][<函數(shù)過(guò)程名>=<表達(dá)式>]EndFunction7/22/20236計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明[Public|Private|Friend][Static]Function<函數(shù)過(guò)程名>[<(形式參數(shù)表)>][As<類(lèi)型>][Public|Private|Friend]:可選項(xiàng),缺省值為Public,表示該Function過(guò)程的適用范圍。[Static]:可選項(xiàng)。如果使用該選項(xiàng),則VB只給過(guò)程中的所有局部變量分配一次存儲(chǔ)空間,即在應(yīng)用程序執(zhí)行期間,每次調(diào)用該Function過(guò)程時(shí)將保留該過(guò)程中的局部變量值。若沒(méi)有使用該選項(xiàng),則每次調(diào)用該Function過(guò)程時(shí),其中的局部變量都要被重新初始化。7/22/20237計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明[Public|Private|Friend][Static]Function<函數(shù)過(guò)程名>[<(形式參數(shù)表)>][As<類(lèi)型>]<函數(shù)過(guò)程名>:Function過(guò)程的名稱(chēng),遵循變量的命名規(guī)則。<形參表>:可選項(xiàng)。表示在調(diào)用時(shí)要傳遞給Function過(guò)程的參數(shù)變量列表。多個(gè)變量之間用逗號(hào)隔開(kāi)。格式為:

<變量名>[()][As<類(lèi)型>]7/22/20238計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明Function過(guò)程的建立可以在窗體模塊中進(jìn)行,也可以在標(biāo)準(zhǔn)模塊中進(jìn)行。建立的方法有以下兩種:例如,F(xiàn)unctionFact(nAsInteger),回車(chē)后,此時(shí)代碼窗口中即可在Function語(yǔ)句和EndFunction語(yǔ)句之間輸入程序代碼。1)直接在代碼窗口中輸入在代碼窗口中的所有過(guò)程之外,輸入過(guò)程的第一條語(yǔ)句。7/22/20239計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明2)使用“添加過(guò)程’’命令。打開(kāi)代碼窗口,執(zhí)行“工具”菜單中的“添加過(guò)程”命令,彈出‘‘添加過(guò)程’’對(duì)話框,輸入過(guò)程名選擇類(lèi)型選擇范圍7/22/202310計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的聲明例7-2

自定義一個(gè)實(shí)現(xiàn)n的階乘功能的函數(shù)Functionjiecheng(nAsInteger)AsLongEndFunctionDimiAsInteger,sAsLongs=1:i=2Whilei<=ns=s*ii=i+1Wend

jiecheng=s7/22/202311計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的調(diào)用由于函數(shù)過(guò)程返回一個(gè)值,故函數(shù)過(guò)程不能作為單獨(dú)的語(yǔ)句加以調(diào)用,必須作為表達(dá)式的一部分,再配以其他語(yǔ)法成分構(gòu)成語(yǔ)句。<實(shí)參表>為要傳送給Function過(guò)程的常量、變量或表達(dá)式,各參數(shù)之間用逗號(hào)分隔,如果是數(shù)組,在數(shù)組名之后必須跟一對(duì)空括號(hào)。Function過(guò)程的調(diào)用與內(nèi)部函數(shù)的調(diào)用類(lèi)似,即可以直接在表達(dá)式中調(diào)用。格式:<函數(shù)過(guò)程名>([<實(shí)參表>])7/22/202312計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件函數(shù)過(guò)程的調(diào)用例7-3利用自定義n的階乘函數(shù),求任意輸入正整數(shù)的階乘。Functionjiecheng(nAsInteger)AsLongDimiAsInteger,sAsLongs=1:i=2Whilei<=ns=s*ii=i+1Wend

jiecheng=sEndFunctionPrivateSubForm_Load()DimnAsIntegern=InputBox("請(qǐng)輸入n的值:")s=jiecheng(n)PrintsEndSub7/22/202313計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.2子過(guò)程當(dāng)需要定義的獨(dú)立的程序段返回一個(gè)值時(shí),使用前面介紹的函數(shù)過(guò)程很容易實(shí)現(xiàn),但在實(shí)際應(yīng)用中,可能希望過(guò)程不需要返回值,例如多次打印同一個(gè)圖形;或需要返回多個(gè)值,例如對(duì)一批數(shù)據(jù)進(jìn)行排序,或者要進(jìn)行較復(fù)雜的操作等等。在這些情況下就要利用子過(guò)程(Sub過(guò)程)來(lái)實(shí)現(xiàn)。7/22/202314計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程的聲明子過(guò)程的聲明格式:

[Private|Public][Static]Sub<過(guò)程名>[(<形參表>)][<語(yǔ)句組>][ExitSub][<語(yǔ)句組>]EndSub7/22/202315計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程的聲明例自定義一個(gè)能夠在當(dāng)前窗體上顯示n行由指定字符組成下列圖形的子過(guò)程。**********…………SubDisplay(xAsInteger,sAsString)DimiAsInteger,jAsIntegerFori=1ToxPrintTab(10);Forj=1ToiPrints;NextjPrintNextiEndSub7/22/202316計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程的建立

Sub過(guò)程的建立方法與Function過(guò)程的建立方法相同,可以在代碼窗口中直接輸入,也可通過(guò)執(zhí)行“工具”菜單中的“添加過(guò)程”命令生成過(guò)程模板。7/22/202317計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程的調(diào)用<實(shí)參表>:要傳送給Sub過(guò)程的常量、變量或表達(dá)式,各參數(shù)之間用逗號(hào)分隔,并且要與被調(diào)用子過(guò)程聲明語(yǔ)句中<形參表>中的參數(shù)在數(shù)目、類(lèi)型、排列順序上保持一致。如果是數(shù)組參數(shù),則要在數(shù)組名之后跟一對(duì)空括號(hào)。用Call語(yǔ)句調(diào)用一個(gè)Sub過(guò)程時(shí),實(shí)參必須加圓括號(hào)括起來(lái),如果過(guò)程本身沒(méi)有參數(shù),則省略<實(shí)參表>和括號(hào)。(如果加了括號(hào)則會(huì)自動(dòng)去掉)格式二省略了Call關(guān)鍵字,則<實(shí)參表>兩邊不能帶小括號(hào)調(diào)用格式一:Call<過(guò)程名>[(<實(shí)參表>)]調(diào)用格式二:<過(guò)程名>[<實(shí)參表>]7/22/202318計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程的調(diào)用PrivateSubForm_Click()DimsAsString,nAsIntegern=6s="*"

CallDisplay(n,s)s="@"n=3

Displayn,s

CallDisplay(5,"#")EndSub7/22/202319計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件例1

分別編一計(jì)算某級(jí)數(shù)部分和的子過(guò)程和函數(shù)過(guò)程,并調(diào)用。eps!<nxn函數(shù)過(guò)程實(shí)現(xiàn)求部分級(jí)數(shù)和

FunctionJishu1#(x!,eps#)

Dimn%,s#,t# n=1:s=0:t=1 DoWhile(Abs(t)>=eps) s=s+t t=t*x/n n=n+1 Loopjishu1=sEndFunction子過(guò)程實(shí)現(xiàn)求部分級(jí)數(shù)和

SubJishu2(s#,x!,eps#)Dimn%,t#n=1:s=0:t=1DoWhile(Abs(t)>=eps)s=s+tt=t*x/nn=n+1LoopEndSub7/22/202320計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件若x=2,eps=0.000001,求級(jí)數(shù)的和

PrivateSubCommand1_Click()Dimf1#,f2#f1=jishu1(2!,0.000001)

Calljishu2(f2,2!,0.000001)

Print"f1=";f1,"f2=";f2EndSubSubjishu2(s#,x!,

eps#)…s=表達(dá)式EndSub找子過(guò)程名調(diào)用jishu2⑥①Functionjishu1#(x!,eps#)…

jishu=表達(dá)式EndFunction

找函數(shù)名調(diào)用jishu1②⑤⑦⑧函數(shù)名帶了值返回④③7/22/202321計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件子過(guò)程與函數(shù)過(guò)程的區(qū)別

(1)函數(shù)過(guò)程名有值,有類(lèi)型,在函數(shù)體內(nèi)至少對(duì)函數(shù)過(guò)程名賦值一次(若不賦值則失去了定義函數(shù)的目的);子過(guò)程名無(wú)值,無(wú)類(lèi)型,在子過(guò)程體內(nèi)不能對(duì)子過(guò)程名賦值;

(2)調(diào)用時(shí),子過(guò)程調(diào)用是一句獨(dú)立的語(yǔ)句;函數(shù)過(guò)程不能作為單獨(dú)的語(yǔ)句加以調(diào)用,必須參與表達(dá)式運(yùn)算。

(3)把某功能聲明為函數(shù)過(guò)程還是子過(guò)程沒(méi)有嚴(yán)格規(guī)定,一般當(dāng)過(guò)程有一個(gè)函數(shù)值,使用函數(shù)過(guò)程較直觀;反之若過(guò)程無(wú)返回值或有多個(gè)返回值,使用子過(guò)程較直觀。7/22/202322計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件嵌套調(diào)用

VB系統(tǒng)中不允許在一個(gè)過(guò)程體內(nèi)出現(xiàn)對(duì)另一個(gè)過(guò)程的聲明,即嵌套的過(guò)程聲明。因?yàn)楦鬟^(guò)程之間是平行的。但是允許在一個(gè)過(guò)程體中出現(xiàn)對(duì)另一個(gè)過(guò)程的調(diào)用,這樣就出現(xiàn)了過(guò)程的嵌套調(diào)用,即在主調(diào)過(guò)程中又調(diào)用其它過(guò)程。7/22/202323計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.3參數(shù)傳遞如何將實(shí)參的數(shù)據(jù)對(duì)應(yīng)傳送給形參呢?有2種方式。一是按地址傳遞(傳址),二是按值傳遞(傳值)。形參與實(shí)參:形參:也叫做形式參數(shù),它是在Sub、Function過(guò)程的定義中出現(xiàn)的變量名。實(shí)參:也叫做實(shí)際參數(shù),它是在調(diào)用Sub、Function過(guò)程時(shí)傳送給Sub和Function過(guò)程中的常數(shù)、變量、表達(dá)式或數(shù)組。在傳遞參數(shù)時(shí),形參與實(shí)參中對(duì)應(yīng)參數(shù)的名字不必相同,但形參和實(shí)參在數(shù)量、類(lèi)型和順序上應(yīng)保持一致。7/22/202324計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.3參數(shù)傳遞[Private|Public][Static]Sub<過(guò)程名>[<(形參表)>][Public|Private][Static]Function<函數(shù)過(guò)程名>[<(形參表)>][As<類(lèi)型>]([ByVal|ByRef]變量名1[As數(shù)據(jù)類(lèi)型],

[ByVal|ByRef]變量名2[As數(shù)據(jù)類(lèi)型],……)(形參表)格式還可細(xì)化為:[ByVal|ByRef]省略默認(rèn)為按地址傳遞7/22/202325計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件按值傳遞按值傳遞是指在過(guò)程調(diào)用是系統(tǒng)把實(shí)參值傳遞給形參而不傳遞實(shí)參的地址。系統(tǒng)將調(diào)用語(yǔ)句中對(duì)應(yīng)的實(shí)參的值取出,同時(shí)為被調(diào)用過(guò)程的形參變量分配新的存儲(chǔ)單元,并將上述數(shù)值存入相應(yīng)存儲(chǔ)單元內(nèi),轉(zhuǎn)去執(zhí)行被調(diào)用過(guò)程中的程序,直至被調(diào)用過(guò)程結(jié)束。這種情況下,被調(diào)用過(guò)程中對(duì)形參變量值的修改,當(dāng)被調(diào)用過(guò)程執(zhí)行結(jié)束返回主過(guò)程時(shí),不會(huì)影響實(shí)際參數(shù)變量的值,數(shù)據(jù)的傳遞是單向的。7/22/202326計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件按值傳遞例7-9

將主過(guò)程中兩個(gè)變量x、y中的值,通過(guò)調(diào)用兩參數(shù)交換子過(guò)程myfunc(),對(duì)其進(jìn)行交換。

PrivateSubForm_Click()Form1.FontSize=12Dimx%,y%x=3:y=5PrintPrint“交換前:x=";x;"y=";yCallmyfunc(x,y)Print“交換后:x=";x;"y=";yEndSubSubmyfunc(ByVala%,ByValb%)DimtempAsIntegerPrint“交換前:a=";a;"b=";btemp=aa=bb=tempPrint“交換后:a=";a;"b=";bEndSub7/22/202327計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件按地址傳遞按地址傳遞是指主過(guò)程將實(shí)參的地址傳給被調(diào)用過(guò)程的形參,使形參和實(shí)參具有相同的地址,即形參與實(shí)參共享同一存儲(chǔ)單元。被調(diào)用過(guò)程在執(zhí)行時(shí)對(duì)形參的操作修改都變成了對(duì)實(shí)參的操作,實(shí)參值會(huì)隨著被調(diào)用過(guò)程對(duì)其形參的修改而改變。因此按地址傳遞可以實(shí)現(xiàn)調(diào)用過(guò)程與子過(guò)程之間數(shù)據(jù)的雙向傳遞。形參使用關(guān)鍵字ByRef定義(或省略),表示要按地址傳遞。

7/22/202328計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件按地址傳遞PrivateSubForm_Click()Form1.FontSize=12Dimx%,y%x=3:y=5PrintPrint“交換前:x=";x;"y=";yCallmyfunc(x,y)Print“交換后:x=";x;"y=";yEndSubSubmyfunc(ByVala%,ByValb%)DimtempAsIntegerPrint“交換前:a=";a;"b=";btemp=aa=bb=tempPrint“交換后:a=";a;"b=";bEndSub7/22/202329計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件數(shù)組的傳遞前面出現(xiàn)在形式參數(shù)表、實(shí)際參數(shù)表中的數(shù)據(jù)類(lèi)型,都是基本數(shù)據(jù)類(lèi)型,當(dāng)需要傳遞的數(shù)據(jù)為批量數(shù)據(jù)時(shí),數(shù)組變量成為參數(shù)傳遞的一個(gè)重要內(nèi)容。VB規(guī)定:1.形參變量中出現(xiàn)數(shù)組變量時(shí),僅寫(xiě)數(shù)組名加圓括號(hào)即可(省略下標(biāo)上、下限的聲明)。2、當(dāng)被調(diào)用過(guò)程聲明語(yǔ)句的形參表中包含數(shù)組時(shí),主調(diào)過(guò)程語(yǔ)句實(shí)參表的對(duì)應(yīng)參數(shù)也應(yīng)為數(shù)組名加圓括號(hào),且兩數(shù)組的數(shù)據(jù)類(lèi)型應(yīng)保持一致。3、數(shù)組參數(shù)必須為地址傳遞方式。7/22/202330計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.4變量的作用域

VB應(yīng)用程序由三種模塊組成,即窗體模塊(Form)、標(biāo)準(zhǔn)模塊(Module)和類(lèi)模塊(Class)。這些模塊通常保存在具有特定類(lèi)型名的文件中,窗體模塊保存在以.frm為類(lèi)型名的文件中;標(biāo)準(zhǔn)模塊保存在以.bas為類(lèi)型名的文件中;類(lèi)模塊保存在以.cls為類(lèi)型名的文件中。7/22/202331計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件類(lèi)模塊(.cls)文件標(biāo)準(zhǔn)模塊(.bas)文件事件過(guò)程窗體模塊(.frm)文件應(yīng)用程序工程文件Function過(guò)程Sub過(guò)程Function過(guò)程Sub過(guò)程7.4變量的作用域7/22/202332計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件窗體模塊窗體模塊是大多數(shù)VB應(yīng)用程序的基礎(chǔ)。

VB中每個(gè)窗體對(duì)應(yīng)一個(gè)窗體模塊,窗體模塊包含窗體及其控件的屬性設(shè)置、窗體變量的聲明、處理事件過(guò)程、通用過(guò)程以及外部過(guò)程的窗體級(jí)聲明。7/22/202333計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件標(biāo)準(zhǔn)模塊標(biāo)準(zhǔn)模塊可以包含變量、常量、外部過(guò)程和全局(在整個(gè)應(yīng)用程序范圍內(nèi)有效的)過(guò)程的全局聲明或模塊級(jí)聲明。缺省情況下,標(biāo)準(zhǔn)模塊中的代碼是公有的,任何窗體或模塊中的事件過(guò)程或通用過(guò)程都可以訪問(wèn)它。

標(biāo)準(zhǔn)模塊不與任何窗體相關(guān)聯(lián)。在標(biāo)準(zhǔn)模塊中可以包含通用過(guò)程,但不能包含事件過(guò)程。當(dāng)一個(gè)應(yīng)用程序含有多個(gè)窗體,且這些窗體都需要調(diào)用某一個(gè)通用過(guò)程時(shí),就需要建立一個(gè)標(biāo)準(zhǔn)模塊,在該標(biāo)準(zhǔn)模塊中建立通用過(guò)程。7/22/202334計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件變量的作用域

VB的程序模塊由一些過(guò)程組成,幾乎在每一個(gè)過(guò)程中我們都能夠看到用Dim或Static語(yǔ)句聲明的變量。變量的定義位置不同,定義方式不同,允許被訪問(wèn)的范圍和作用時(shí)間也不相同。變量的作用域即指變量的有效范圍。

根據(jù)變量聲明后發(fā)揮作用的區(qū)域,可以將變量分為:過(guò)程級(jí)變量、窗體/模塊級(jí)變量、全局變量。7/22/202335計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件過(guò)程級(jí)變量又稱(chēng)局部變量,指在過(guò)程內(nèi)用Dim或Static語(yǔ)句聲明的變量(或不加聲明直接使用的變量),只能在本過(guò)程中使用的變量,別的過(guò)程不可訪問(wèn)。由關(guān)鍵字Dim聲明的過(guò)程變量隨過(guò)程的調(diào)用而分配存儲(chǔ)單元,并進(jìn)行變量的初始化,在此過(guò)程體內(nèi)進(jìn)行數(shù)據(jù)的存取,一旦該過(guò)程體結(jié)束,變量的內(nèi)容白動(dòng)消失,占用的存儲(chǔ)單元釋放。

用關(guān)鍵字Static聲明的過(guò)程級(jí)變量,當(dāng)該過(guò)程運(yùn)行結(jié)束時(shí)變量的內(nèi)容不丟失,再次運(yùn)行這個(gè)過(guò)程,系統(tǒng)保持上次的計(jì)算結(jié)果,但Static聲明的變量同樣在其他過(guò)程中無(wú)效,即使是同名變量;7/22/202336計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件指在一個(gè)窗體或模塊的任何過(guò)程外,即在“通用聲明”區(qū)域中用Dim語(yǔ)句或用Private語(yǔ)句聲明的變量,可被本窗體或模塊的任何過(guò)程訪問(wèn)。窗體/模塊級(jí)變量:全局級(jí)變量:指在窗體或模塊的“通用聲明”區(qū)域中用Public語(yǔ)句聲明的變量,可供應(yīng)用程序的所有窗體和所有標(biāo)準(zhǔn)模塊中的過(guò)程調(diào)用。如果在某一窗體內(nèi)定義了同名的窗體級(jí)或過(guò)程級(jí)變量,該變量在其定義的區(qū)域中保持窗體級(jí)或過(guò)程級(jí)變量的屬性,在其他模塊中仍為全局變量7/22/202337計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件三種變量對(duì)比7/22/202338計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件例如在下面一個(gè)標(biāo)準(zhǔn)模塊文件中不同級(jí)的變量聲明:

PublicPaAsinteger '全局變量

PrivateMbAsstring*10 '窗體/模塊級(jí)變量

SubF1() DimFaAsinteger '局部變量

… EndSub SubF2() DimFbAsSingle '局部變量

… EndSub7/22/202339計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件PublicTempAsinteger '全局變量SubForm_Load()

DimTempAsInteger '局部變量

Temp=10 '訪問(wèn)局部變量

Form1.Temp=20 '訪問(wèn)全局變量必須加窗體名

PrintForm1.Temp;Temp '顯示2010EndSub若在不同位置聲明了不同級(jí)別相同的變量名,系統(tǒng)按局部、窗體/模塊、全局次序訪問(wèn)。7/22/202340計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件過(guò)程的作用域窗體/模塊級(jí):加Private關(guān)鍵字的過(guò)程,只能被定義的窗體或模塊中的過(guò)程調(diào)用。全局級(jí):加Public關(guān)鍵字(缺?。┑倪^(guò)程,可供該應(yīng)用程序的所有窗體和所有標(biāo)準(zhǔn)模塊中的過(guò)程調(diào)用。7/22/202341計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件7.6列表框、組合框和滾動(dòng)條一、列表框(ListBox)列表框是顯示項(xiàng)目列表的控件,從中可以選擇一項(xiàng)或多項(xiàng)。如果項(xiàng)目總數(shù)超過(guò)了可顯示的項(xiàng)目數(shù),就自動(dòng)在列表框上添加滾動(dòng)條。7/22/202342計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框?qū)傩砸郧皩W(xué)習(xí)過(guò)的屬性:Name、Visible、EnabledFontBold、FontItalic、FontName、FontSize、FontUnderline

Height、Width、Left、TopList:返回或設(shè)置控件的列表部分的項(xiàng)目。列表是一個(gè)字符串?dāng)?shù)組,數(shù)組的每一項(xiàng)都是一列表項(xiàng)目。

①格式:對(duì)象名稱(chēng).List(下標(biāo))[=字符串]

②這里注意list屬性值是一組數(shù)據(jù)。例如:List1.List(0)="AAAAAA"‘對(duì)列表框List1的第0個(gè)項(xiàng)目賦值。7/22/202343計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框?qū)傩訪istCount:返回控件的列表部分項(xiàng)目的個(gè)數(shù)。ListIndex:返回或設(shè)置控件中當(dāng)前所選的項(xiàng)目下標(biāo),列表框的第一個(gè)項(xiàng)目下標(biāo)為0,第二個(gè)項(xiàng)目下標(biāo)為1,最后一個(gè)項(xiàng)目下標(biāo)為L(zhǎng)istCount-1。如果沒(méi)有選中任何項(xiàng)目,ListIndex屬性值為-1。MultiSelecl屬性:返回或設(shè)置一個(gè)值,該值指示是否能夠同時(shí)選擇列表框中的多個(gè)項(xiàng)(復(fù)選),以及如何進(jìn)行復(fù)選

0-None為缺省值,表示不允許復(fù)選。1-Simple表示單擊鼠標(biāo)或按空格鍵可在列表中選擇或取消選擇列表項(xiàng)。

2-Extended表示按下Shift鍵并單擊鼠標(biāo),或按下Shift健以及一個(gè)箭頭鍵將在以前選擇項(xiàng)的基礎(chǔ)上擴(kuò)展選擇到當(dāng)前選擇項(xiàng)。7/22/202344計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框?qū)傩?/p>

Selected:返回或設(shè)置ListBox或FileListBox控件中的各個(gè)項(xiàng)的選擇狀態(tài)。當(dāng)數(shù)組元素的值為T(mén)rue時(shí),表明選擇了List屬性的對(duì)應(yīng)項(xiàng),如為False時(shí),則表示該項(xiàng)未被選擇。該屬性的返回值可以檢查用戶(hù)對(duì)列表框的選擇情況,也可以在程序中賦值,指定選擇:對(duì)象名稱(chēng).Selected(下標(biāo))[=True|False]其中:<下標(biāo)>值為0到ListCount–1。例:List1.Selected(3)=True‘選擇List1的第4個(gè)項(xiàng)目

List1.Selected(1)=False‘取消List1第2個(gè)項(xiàng)目的選擇7/22/202345計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框?qū)傩?/p>

SelCount:返回被選中項(xiàng)的數(shù)量。如果沒(méi)有項(xiàng)被選中,那么SelCount

屬性將返回0值。

Sorted:邏輯型。它用來(lái)確定列表框中的項(xiàng)目是否按字母數(shù)字升序排列,通過(guò)屬性窗口設(shè)置。若Sorted屬性設(shè)為T(mén)rue,項(xiàng)目按字母數(shù)字升序排列,如果設(shè)為False(缺省值),則表項(xiàng)按加入列表框的先后順序排列。

Text:字符串型。返回列表框中當(dāng)前選擇的項(xiàng)目。返回值與表達(dá)式List(ListIndex)的返回值相同。在設(shè)計(jì)時(shí)和運(yùn)行時(shí)都為只讀,即不能企圖通過(guò)屬性窗口或賦值語(yǔ)句修改ListBox的Text屬性。7/22/202346計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框事件列表框接受Click、DblClick、GotFocus、LostFocus等大多數(shù)控件的通用事件,但通常不編寫(xiě)Click事件過(guò)程,而是當(dāng)單擊某個(gè)命令按鈕或雙擊列去框時(shí)讀取列表框的Text屬性值。7/22/202347計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框方法AddItem:該方法用于向列表框添加一個(gè)新的項(xiàng)目,格式:列表框名.AddItem

字符串[,<下標(biāo)>]

AddItem方法把“字符串”的文本插入到由“下標(biāo)”指定列表框的位置中。如果缺省下標(biāo),則把文本添加到列表框的尾部。下標(biāo)的取值范圍從0到ListCount–1。例如:lst1.AddItem“年齡”,3‘插入第三項(xiàng)

lst1.AddItem“通訊地址”‘添加末項(xiàng)7/22/202348計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框方法

Clear

清除列表框中全部?jī)?nèi)容。執(zhí)行Clear方法后,ListCount屬性重新被設(shè)置為0。例如:list2.Clear‘清除列表框lst2

RemoveItem

刪除列表框的指定項(xiàng)目。格式為:列表框名.RemoveItem<下標(biāo)>例如:lst2.RemoveItem5‘刪除第六項(xiàng)

lst2.RemoveItemlist2.ListIndex‘刪除當(dāng)前所選項(xiàng)7/22/202349計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框舉例PrivateSubCommand1_Click()IfList1.ListIndex=-1Then

MsgBox(“請(qǐng)?jiān)谧竺媪斜砜蛑羞x擇一個(gè)項(xiàng)目!")ElseList2.AddItemList1.TextList1.RemoveItemList1.ListIndexEndIfEndSub例7-16窗體中有兩個(gè)列表框,設(shè)計(jì)兩個(gè)按鈕,單擊其中一個(gè)實(shí)現(xiàn)將列表框1中選定的項(xiàng)目添加到列表框2中,單擊另一個(gè)將列表框2中選定的項(xiàng)目添加到列表框1中。7/22/202350計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件列表框舉例PrivateSubCommand2_Click()IfList2.ListIndex=-1Then

MsgBox("請(qǐng)?jiān)谟颐媪斜砜蛑羞x擇一個(gè)項(xiàng)目!")ElseList1.AddItemList2.TextList2.RemoveItemList2.ListIndexEndIfEndSub7/22/202351計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件組合框組合框(ComboBox)是一種同時(shí)具有文本框和列表框特性的控件。它可以像列表框一樣,讓用戶(hù)通過(guò)鼠標(biāo)選擇所需要的項(xiàng)目,也可以像文本框那樣,用鍵入方式輸入項(xiàng)目。組合框共三種風(fēng)格:下拉式組合框、簡(jiǎn)單組合框、下拉式列表框。7/22/202352計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件組合框?qū)傩許tyle屬性:用來(lái)指示組合框的顯示類(lèi)型和行為。(1)當(dāng)Style屬性被設(shè)為0時(shí),稱(chēng)為“下拉式組合框”。包括一個(gè)下拉式列表和一個(gè)文本框,允許用戶(hù)從下拉列表中選擇項(xiàng)目,還可以從文本編輯區(qū)輸入文本。(2)Style屬性為1的組合框稱(chēng)為“簡(jiǎn)單組合框”。它由一個(gè)文本編輯框和一個(gè)不能下拉的標(biāo)準(zhǔn)列表框組成。可以從列表中選擇或在文本框中輸入。(3)Style屬性為2的組合框稱(chēng)為“下拉式列表框”。它的外觀和下拉式組合框一樣,右端也有一個(gè)箭頭,可供“拉下”或“收起”列表框,這種樣式僅允許從下拉列表中選擇,不能在文本框中輸入文本,列表可以折疊起來(lái)。。

7/22/202353計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件組合框?qū)傩灾饕獙傩裕篖ist、ListCount、ListIndex、TopIndex、NewIndex、Sorted等屬性的應(yīng)用,類(lèi)似于列表框。Text屬性:當(dāng)控件的Style屬性設(shè)置為0或1時(shí),該屬性用于返回或設(shè)置編輯域中的文本。而當(dāng)Style屬性設(shè)置為2時(shí),該屬性為只讀,運(yùn)行時(shí)返回在列表中選擇的項(xiàng)目。7/22/202354計(jì)算機(jī)技術(shù)基礎(chǔ)系列課程課件組合框事件組合框的事件與Style屬性有關(guān),當(dāng)Style為0時(shí),響應(yīng)Click、Change、DropDown事件。當(dāng)Style為1時(shí),響應(yīng)Click、DblClick、Change事件。當(dāng)Style為2時(shí),響應(yīng)Click、DropDown事件。當(dāng)用戶(hù)單擊組合框的下拉箭頭時(shí),觸發(fā)DropDown事件;而組合框可以接受文本編輯時(shí),則可以觸發(fā)Change事件。通常是在其他事件過(guò)程(如命令

溫馨提示

  • 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)論