版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第9章
過程子程序過程函數(shù)過程參數(shù)傳遞可選參數(shù)與可變參數(shù)對象作參數(shù)9.1子程序過程子程序過程由Sub…EndSub定義,也稱為Sub過程。9.1.1Sub過程的定義定義Sub過程的一般格式如下:用上面的格式定義一個Sub過程如下:[Static][Public][Private]Sub過程名[(參數(shù)列表)]
局部變量或常量定義
語句塊 [ExitSub] [語句塊] EndSubPrivateSubTest()Print"ThisisaSubexample"EndSubSub過程以Sub開頭,以EndSub結(jié)束,在它們之間是描述該過程操作的語句塊,稱為過程體或子程序體。上面定義格式中各選項的含義如下:Static:指定過程中的局部變量都是靜態(tài)變量,即在每次調(diào)用該過程時,局部變量的值保持不變。Public:表示該Sub過程是公有過程,即可以在程序的任何地方調(diào)用它。Private:表示該Sub過程是私有過程,即只能被本模塊中的其他過程訪問,不能被其他模塊中的過程訪問。過程名:是一個長度不超過255個字符的變量名,在同一個模塊中,不允許變量名與過程名同名。參數(shù)列表:指明了在調(diào)用該過程時傳送給過程的參數(shù)的類型和個數(shù),這些參數(shù)稱為“形式參數(shù)”,簡稱“形參”。各參數(shù)之間以逗號分隔,每個參數(shù)的定義格式為:
其中,ByVal是可選的,如果有ByVal,表示該參數(shù)是“傳值參數(shù)”,不加ByVal的參數(shù)稱為“引用參數(shù)”。[ByVal]變量名[()][As數(shù)據(jù)類型]Sub過程不能嵌套,也就是說,在Sub過程內(nèi)不能再定義Sub過程或函數(shù)過程。不能用GoTo語句進(jìn)入或跳出一個Sub過程,只能通過調(diào)用執(zhí)行Sub過程,Sub過程的調(diào)用可以嵌套。下面再看一個Sub過程的例子:該Sub過程有兩個形參,其中第二個形參前面有ByVal,表示該參數(shù)是一個傳值參數(shù)。SubTry(xAsInteger,ByValyAsInteger) x=x+100 y=y*5 Printx,y EndSub再看一個無參的Sub過程:
SubTest() Do Response$=InputBox$("Continue(YorN)?") IfResponse$="N"OrResponse$="n"ThenEnd IfResponse$="Y"OrResponse$="y"ThenExitDo Loop EndSub9.1.2Sub過程的建立前面我們已學(xué)會如何建立事件過程,Sub過程不屬于任何一個事件過程,因此不能放在事件過程中。Sub過程是一個通用過程,可以在標(biāo)準(zhǔn)模塊中建立,也可以在窗體模塊中建立。在標(biāo)準(zhǔn)模塊中建立通用過程的步驟如下:(1)選擇“工程”菜單中的“添加模塊”命令,打開“添加模塊”對話框,在該對話框中選擇“新建”選項卡,然后雙擊“模塊”圖標(biāo),打開模塊代碼窗口。(2)選擇“工具”菜單中的“添加過程”命令,打開“添加過程”對話框,如右圖所示。在“名稱”框內(nèi)輸入要建立的過程的名字,在“類型”框內(nèi)選擇要建立的過程的類型:子程序過程或函數(shù)過程,在“范圍”框內(nèi)選擇過程的適用范圍。(3)單擊“確定”按鈕,回到模塊代碼窗口,此時可以在Sub和EndSub之間鍵入程序代碼。“添加過程”對話框9.1.3Sub過程的調(diào)用可以把Sub過程的調(diào)用當(dāng)作是一句獨(dú)立的調(diào)用語句,可以有兩種調(diào)用形式:
或
前者用Call關(guān)鍵字,若有實參,必須用小括號括起來,無實參時小括號可省略;而后者去掉了關(guān)鍵字Call,并且實參不需要用小括號括起來。實參也稱實際參數(shù),是在過程被調(diào)用時寫在過程名后面括號中的參數(shù)。且實參的數(shù)據(jù)類型必須與定義過程時的形式參數(shù)一致。它的作用是把需要實際運(yùn)算的數(shù)據(jù)傳遞給形式參數(shù)。如調(diào)用前面定義的Sub過程Try時,可用:
或
Call過程名[(實參表列)]過程名[實參表列]CallTry(a,b)Try
a,b例9.1
編寫一個計算矩形面積的Sub過程,然后調(diào)用該過程求一個矩形的面積。程序代碼如下:SubArea(x,y)DimSS=x*yMsgBox"Areais"&SEndSubSubForm_Click()DimA,BA=InputBox("Inputthelength:")A=Val(A)B=InputBox("InputtheWidth:")B=Val(B)CallArea(A,B)'或:AreaA,BEndSub程序運(yùn)行時,單擊窗體,首先出現(xiàn)一個輸入對話框,要求輸入矩形的長,假設(shè)輸入30,確定后又出現(xiàn)一個輸入對話框,要求輸入矩形的寬,假設(shè)輸入20,確定后出現(xiàn)運(yùn)行結(jié)果如下圖所示。調(diào)用Sub過程求矩形的面積9.2函數(shù)過程函數(shù)過程由Function…EndFunction定義,也稱為Function過程。與Sub過程相比,Sub過程不直接返回值,作為獨(dú)立的基本語句調(diào)用,而Function過程要返回一個值,通常在一個表達(dá)式中被調(diào)用。9.2.1Function過程的定義Function過程的定義格式如下:
其中:[As類型]可選項是Function過程返回的值的數(shù)據(jù)類型,可以是Integer、Long、Single、Double、Currency或String。如果省略,默認(rèn)為Variant類型。其他各選項與Sub過程相同。[Static][Public][Private]Function過程名[(參數(shù)列表)][As類型]
局部變量或常量定義
語句塊 [過程名=表達(dá)式] [ExitFunction] [語句塊] EndFunction把某功能定義為Sub過程還是Function過程,沒有嚴(yán)格的規(guī)定,但Function過程有返回值。定義Function過程時,要定義返回值的數(shù)據(jù)類型,同時在Function過程體內(nèi)可以對Function過程名賦值,該值就是這個函數(shù)的返回值。如果在Function過程體內(nèi)省略:
則該Function過程返回一個默認(rèn)值(0或空字符串)。例如,要編寫用輾轉(zhuǎn)相除法求最大公約數(shù)的函數(shù),程序如下:過程名=表達(dá)式Functiongcd(ByValxAsInteger,ByValyAsInteger)AsInteger DoWhiley<>0 r=xMody x=y y=r Loop gcd=xEndFunction9.2.2Function過程的調(diào)用由于Function過程能返回一個值,因此完全可以把Function過程當(dāng)做內(nèi)部函數(shù)調(diào)用,只不過內(nèi)部函數(shù)由系統(tǒng)提供,而Function過程由用戶自己定義。例如,上面的Function過程gcd,可以在下面的事件過程中調(diào)用。例9.2調(diào)用后,例9.2程序的運(yùn)行結(jié)果如下圖所示。SubForm_Click() DimaAsInteger,bAsInteger a=64:b=48 f=gcd(a,b) Print"最大公約數(shù)為:";fEndSub調(diào)用Function過程例9.3
分別編寫一個計算下列級數(shù)和的子過程和函數(shù)過程,并分別調(diào)用。1+x+x2/2!+…+xn/n!+…精確到|xn/n!|<eps(eps由用戶給定)子過程如下:Subsum1(s#,x!,eps#)Dimn%,t#n=1:s=0:t=1DoWhile(Abs(t)>=eps)s=s+tt=t*x/nn=n+1LoopEndSub函數(shù)過程如下:Functionsum2(x!,eps#)AsDoubleDimn%,s#,t#n=1:s=0:t=1DoWhile(Abs(t)>=eps)s=s+tt=t*x/nn=n+1Loopsum2=sEndFunction用下面的事件過程調(diào)用:PrivateSubCommand1_Click()Dimf1#,f2#Callsum1(f1,2#,0.000001)f2=sum2(2#,0.000001)Print"f1=";f1,"f2=";f2EndSub在窗體中添加一個命令按鈕Command1,程序運(yùn)行時單擊該命令按鈕,則運(yùn)行結(jié)果如下圖所示。其中f1是調(diào)用子過程sum1求得的級數(shù)和,f2是調(diào)用函數(shù)過程sum2求得的級數(shù)和。子過程和函數(shù)過程的比較9.3參數(shù)傳遞在調(diào)用一個過程時,一般主調(diào)過程與被調(diào)過程之間有數(shù)據(jù)傳遞,也就是要把主調(diào)過程的實參傳遞給被調(diào)過程的形參,完成實參與形參的結(jié)合,然后執(zhí)行被調(diào)過程體。在VB中,實參與形參的結(jié)合有兩種方法:傳值(ByVal)和傳址(ByDef)。9.3.1傳值和傳址傳址又稱為引用,是默認(rèn)的參數(shù)傳遞方法。區(qū)分兩種傳遞方法是看形參前有無“ByVal”關(guān)鍵字。傳址的結(jié)合過程是:當(dāng)調(diào)用一個過程時,將實參的內(nèi)存地址傳遞給形參。因此在被調(diào)過程體中對形參的操作實際是對相應(yīng)實參的操作,實參的值就會隨過程體內(nèi)對形參的值的改變而改變。傳址習(xí)慣上也稱為“引用”。傳值的結(jié)合過程是:當(dāng)調(diào)用一個過程時,系統(tǒng)將實參的值復(fù)制給形參,實參與形參各自占用不同的內(nèi)存單元,過程調(diào)用結(jié)束時,形參所占的內(nèi)存單元也同時被釋放。因此,在過程體內(nèi)對形參的操作不會影響到實參。例9.4
傳址與傳值的比較。有如下過程:SubTry(xAsInteger,ByDefyAsInteger)'第二個參數(shù)中的ByDef關(guān)鍵字可以省略 DimtempAsInteger temp=x x=y y=temp Form1.Print"x=";x,"y=";yEndSub在下面的事件過程中調(diào)用上述過程:
運(yùn)行程序,單擊窗體,輸出結(jié)果如下圖所示。由此可以看到,在過程Try中交換了兩個形參的值,調(diào)用結(jié)束返回事件過程后,兩個實參的值也被改變了。SubForm_Click() DimaAsInteger,bAsInteger a=10:b=20 Print"a=";a,"b=";b Trya,b Print"a=";a,"b=";bEndSub傳址調(diào)用如果不想改變實參的值,可將過程Try修改如下:仍舊用上面的Form_Click()事件過程去調(diào)用,則窗體上的輸出結(jié)果如下圖所示??梢钥吹叫螀⒌闹档母淖儧]有影響實參。SubTry(ByValxAsInteger,ByValyAsInteger) DimtempAsInteger temp=x x=y y=temp Form1.Print"x=";x,"y=";yEndSub傳值調(diào)用我們已經(jīng)知道,用Function過程可以通過過程名返回值,但一個Function過程只能返回一個值。Sub過程不能通過過程名返回值,但可以通過傳址結(jié)合的參數(shù)返回值,并且可以返回多個值,請看下面的例子。例9.5
通過傳址調(diào)用Sub過程,返回多個值。程序如下:SubS(ByValxAsInteger,ByValyAsInteger,mAsInteger,nAsInteger)m=x+yn=x*yEndSubPrivateSubForm_Click()DimSumAsInteger,MulAsIntegerS10,20,Sum,MulPrintSum,MulEndSubSub過程S有4個參數(shù),前兩個參數(shù)用關(guān)鍵字ByVal指明是傳值調(diào)用,后兩個參數(shù)m和n前面沒有關(guān)鍵字,則是默認(rèn)的傳址方式。在Form_Click()事件過程中調(diào)用Sub過程S的語句為:則將10和20分別傳值給形參x和y,將實參Sum和Mul的地址傳遞給形參m和n,即m與Sum占用同一段內(nèi)存,n與Mul占用同一段內(nèi)存,因此在過程S中將x+y、x*y的值分別賦給m、n,也就是將這兩個值分別存入了Sum和Mul所占的內(nèi)存單元中。于是調(diào)用完過程S返回Form_Click()事件過程中輸出Sum和Mul的值時,將輸出:
S10,20,Sum,Mul30 2009.3.2數(shù)組作參數(shù)傳遞在VB中允許把數(shù)組作為實參傳遞給一個過程。這時,應(yīng)將數(shù)組名分別放入實參表和形參表中,并略去數(shù)組的上下界,但數(shù)組名后的小括號不能省,以免與普通變量混淆。數(shù)組只能通過傳址方式進(jìn)行傳遞,也就是說,用數(shù)組作過程參數(shù)時,可以將實參數(shù)組的全部元素傳送給一個過程,而形參數(shù)組中各元素的改變將被帶回到實參數(shù)組。例9.6
編寫一個Function過程,求數(shù)組的最大值。PrivateFunctionFindMax(a()AsInteger)DimStartAsInteger,FinishAsInteger,iAsIntegerStart=LBound(a)Finish=UBound(a)Max=a(Start)Fori=StartToFinishIfa(i)>MaxThenMax=a(i)NextiFindMax=MaxEndFunctionSubForm_Click()ReDimb(10)AsIntegerFori=1To10t=InputBox("inputInteger:")b(i)=tNextic=FindMax(b())PrintcEndSub程序中定義了一個函數(shù)過程FindMax,它有一個形參,即數(shù)組a。當(dāng)在Form_Click()事件過程中調(diào)用函數(shù)過程FindMax時,將實參數(shù)組b作參數(shù)傳遞給形參數(shù)組a,于是,形參數(shù)組a與實參數(shù)組b共占同一段內(nèi)存空間。而且因為兩個數(shù)組類型相同,因此a(i)就是b(i)的值。接下來在函數(shù)過程FindMax中用LBound和Ubound函數(shù)分別求得數(shù)組a的下界和上界,然后對數(shù)組中元素進(jìn)行比較,找到數(shù)組a的最大值,其實也就是數(shù)組b中所有元素的最大值,通過函數(shù)過程FindMax,將此最大值返回給Form_Click()事件過程并輸出。有時不需要把整個數(shù)組傳送給通用過程,可以只傳送所需要的某個元素,只要在實參數(shù)組名后的小括號內(nèi)寫上要傳送的元素的下標(biāo)。這時,形參不需要定義成數(shù)組,只要定義成與作實參的數(shù)組元素同類型的變量即可。這種用法其實與前面介紹的傳值或傳址調(diào)用類似。例9.7
用二維數(shù)組的某個元素作實參調(diào)用一個Sub過程。程序代碼如下:Dimtest_array()AsIntegerStaticSubSqval(a)a=Sqr(Abs(a))EndSubSubForm_Click()ReDimtest_array(1To5,1To3)test_array(5,3)=-25Printtest_array(5,3)CallSqval(test_array(5,3))Printtest_array(5,3)EndSub程序中:CallSqval(test_array(5,3))語句把二維數(shù)組test_array中的元素test_array(5,3)作為實參傳遞給形參a,可以看到形參a是一個變量,并且實參與形參的結(jié)合是默認(rèn)的傳址方式。因此在調(diào)用過程Sqval時改變a的值,實參test_array(5,3)的值也隨之改變。所以程序運(yùn)行后,單擊窗體,在窗體中顯示輸出結(jié)果為:最后還要說明一點:通過過程傳送參數(shù)時,實參與對應(yīng)的形參的類型應(yīng)當(dāng)一致。如果實參是數(shù)值常數(shù)或數(shù)值表達(dá)式,而它的類型與對應(yīng)的形參的類型又不匹配時,則系統(tǒng)會將此數(shù)值常數(shù)或數(shù)值表達(dá)式強(qiáng)制轉(zhuǎn)換為相應(yīng)形參的類型。 -2559.3.3按位置傳送和指名傳送1.按位置傳送按位置傳送是大多數(shù)程序設(shè)計語言在子程序調(diào)用時所使用的參數(shù)傳送方式,在前面的例子中使用的都是按位置傳送。使用按位置傳送時,實參的個數(shù)與形參的個數(shù)必須相等,而且實參的類型必須與相應(yīng)的形參的類型相同,實參的名字與相應(yīng)的形參的名字可以不同。也就是說,實參必須和形參表中同一位置的形參相匹配。如下面定義的一個過程:
SubTest(x1AsInteger,x2AsSingle,x3AsString) …… EndSub我們可以用下面的語句調(diào)用該過程:不難看出,實參a、b和"ABC"分別與對應(yīng)位置上的形參x1、x2和x3類型相同,并且實參的個數(shù)與形參的個數(shù)也相同。在按位置傳送時,實參可以是常數(shù)、合法的變量名、表達(dá)式或后面跟有左右括號的數(shù)組名。而形參表中的變量可以是除定長字符串之外的合法變量名或后面跟有左右括號的數(shù)組名。注意:只能使用形如Str$或StrAsString之類的變長字符串作為形參,不能用形如StrAsString*8之類的定長字符串作為形參,但定長字符串可以作實參傳送給過程。 CallTest(a%,b!,"ABC")2.指名傳送除按位置傳送外,在VB中還提供了與Ada語言類似的參數(shù)傳送方式,即指名參數(shù)傳送方式。所謂指名傳送方式,就是顯式地指出與形參結(jié)合的實參,把形參用“:=”與實參連接起來。指名傳送方式不受參數(shù)的位置次序的影響,但要求實參與形參的名字必須相同。如建立如下的過程:
使用按位置傳送時,我們可以寫出調(diào)用語句如下:SubTest(x1AsInteger,x2AsInteger,x3AsInteger) …… EndSub Test4,6,8如果使用指名傳送方式,則下面的三個調(diào)用語句都是可以的:
并且這三個調(diào)用語句是完全等價的。使用指名傳送比使用按位置傳送在書寫上繁瑣,但指名傳送能改善過程調(diào)用的可讀性,而且,當(dāng)參數(shù)較多,類型又相似時,指名傳送比按位置傳送出錯的可能性要小一些。但應(yīng)當(dāng)注意的是,有些方法的調(diào)用是不能使用指名傳送的。使用時可查閱相關(guān)的幫助信息。Testx1:=4,x2:=6,x3:=8Testx2:=6,x1:=4,x3:=8Testx3:=8,x2:=6,x1:=49.4可選參數(shù)與可變參數(shù)在VB中調(diào)用一個過程時,還可以向過程傳送可選的參數(shù)或者任意數(shù)量的參數(shù),即可選參數(shù)和可變參數(shù)。9.4.1可選參數(shù)在前面的例子中,如果一個過程有3個形參,則調(diào)用時必須按相同的順序和類型提供3個實參。在VB中,還可以指定一個或多個參數(shù)作為可選參數(shù),在調(diào)用時,可以不必給可選參數(shù)傳遞實參。為了定義帶可選參數(shù)的過程,需要在可選參數(shù)名前加“Optional”關(guān)鍵字,并在過程體中通過IsMissing函數(shù)測試調(diào)用時是否給可選參數(shù)傳遞實參。例如:SubSum(aAsInteger,bAsInteger,Optionalc)n=a+bIfNotIsMissing(c)Thenn=n+cEndIfPrintnEndSub上述過程中有3個參數(shù),前兩個參數(shù)與前面例子中的參數(shù)相同,最后一個參數(shù)沒有指定類型,默認(rèn)其類型為Variant,它前面有一個關(guān)鍵字“Optional”,表示它是一個可選參數(shù)。在過程體中,首先計算前兩個參數(shù)的和,并把結(jié)果賦值給變量n,然后用IsMissing函數(shù)測試第三個參數(shù)c是否存在,如果存在,則把第三個參數(shù)c的值也加到變量n中,最后將n的值輸出。在調(diào)用上面的Sum過程時,可以傳遞兩個實參,求出兩個數(shù)的和,也可以傳遞三個實參,求出三個數(shù)的和。如用下面的事件過程調(diào)用上述的Sum過程:輸出結(jié)果為: 30PrivateSubForm_Click()Sum10,20EndSub也可以用下面的過程調(diào)用:
輸出結(jié)果為: 60上面的Sum過程只有一個可選參數(shù),我們可以根據(jù)實際需要,用同樣的方法設(shè)置兩個或多個可選參數(shù)。但要注意:可選參數(shù)必須放在參數(shù)表列的最后,并且必須是Variant類型。PrivateSubForm_Click() Sum10,20,30 EndSub9.4.2可變參數(shù)所謂可變參數(shù),就是在定義過程時參數(shù)的個數(shù)是可變的,這在處理一些問題時是非常有用的。這里的“數(shù)組名()”是一個形參,只有名字和括號,沒有上、下界,其類型默認(rèn)為Variant類型。在VB中,建立可變參數(shù)過程可用如下方式定義: Sub過程名(ParamArray數(shù)組名())
過程體 EndSub前面定義的Sum過程可以求兩個或三個數(shù)的和。如果想求任意多個數(shù)的和,可定義一個可變參數(shù)過程Sum如下:
可以用任意多個實參調(diào)用上面的Sum過程。如編寫下面的事件過程:用該事件過程調(diào)用上面的Sum過程,輸出結(jié)果為: 15SubSum(ParamArrayNum()) n=0 ForEachxInNum n=n+x Nextx Printn EndSub PrivateSubForm_Click() Sum1,2,3,4,5 EndSub由于可變參數(shù)過程中的形參是Variant類型,因此我們可以把任何類型的參傳送給該過程??聪旅孢@個事件過程:
調(diào)用上面的Sum過程,輸出結(jié)果為: 28PrivateSubForm_Click() DimaAsInteger,bAsLong,cAsVariant,dAsInteger a=6:b=8:c=12:d=2 Suma,b,c,d EndSub9.5對象作參數(shù)除了可以用變量作通用過程的形式參數(shù)外,在VB中還允許用對象(即窗體或控件)作通用過程的參數(shù)。用窗體或控件作形參時,過程的定義格式與用變量作參數(shù)相同。只不過是把形參表中的對象參數(shù)的類型定義為“Control”或“Form”。但要注意,在調(diào)用含有對象參數(shù)的過程時,對象參數(shù)只能用傳地址方式傳送。也就是說,在定義過程時不能在對象參數(shù)前加關(guān)鍵字ByVal。9.5.1窗體參數(shù)假設(shè)我們要設(shè)計一個程序,在這個程序中含有多個窗體(關(guān)于多窗體的程序設(shè)計,我們將在后面章節(jié)介紹),而且要求在運(yùn)行程序時,這些窗體的位置、大小都相同。我們知道,窗體的位置和大小可以通過窗體的Left、Top、Width及Height四個屬性來設(shè)置。假定這些窗體的名字分別為Form1、Form2、Form3…,我們可以寫出下面的程序段:
…… Form1.Left=2000 Form1.Top=3000 Form1.Width=5000 Form1.Height=3000Form2.Left=2000 Form2.Top=3000 Form2.Width=5000 Form2.Height=3000
Form3.Left=2000 Form3.Top=3000 Form3.Width=5000 Form3.Height=3000 ……每個窗體都要用四個語句來確定其大小和位置。這四個語句除窗體名不同外,其他都是一樣的。因此,為了避免這些語句的重復(fù)書寫,我們可以用窗體作參數(shù),編寫出如下的通用過程:
該過程的形參即為一個窗體類型。在調(diào)用時,就可以用窗體作實參。例如可以用如下的語句調(diào)用上述過程:
則將按過程中給出的各屬性值設(shè)置窗體Form1的大小和位置。SubFormSet(FormNumAsForm) FormNum.Left=2000 FormNum.Top=3000 FormNum.Width=5000 FormNum.Height=3000 EndSubFormSetForm1為了調(diào)用上面的通用過程FormSet,可以選擇“工程”菜單中的“添加窗體”命令建立多個窗體,現(xiàn)假設(shè)我們建立4個,即Form1、Form2、Form3和Form4。在默認(rèn)情況下,第一個建立的窗體(這里假設(shè)是Form1)是啟動窗體。我們對Form1編寫如下的事件過程:
PrivateSubForm_Load() FormSetForm1 FormSetForm2 FormSetForm3 FormSetForm4 EndSub然后對4個窗體分別編寫如下的Click事件過程:
PrivateSubForm_Click() Form1.Hide'窗體Form1隱藏 Form2.Show'顯示窗體Form2 EndSub PrivateSubForm_Click() Form2.Hide Form3.Show EndSub
PrivateSubForm_Click() Form3.Hide Form4.Show EndSubPrivateSubForm_Click() Form4.Hide Form1.Show EndSub于是,在運(yùn)行程序時,首先顯示Form1,單擊該窗體后,F(xiàn)orm1隱藏,顯示Form2;單擊Form2窗體后,F(xiàn)orm2隱藏,F(xiàn)orm3顯示出來……,每個窗體顯示的大小和位置均相同。9.5.2控件參數(shù)和窗體參數(shù)一樣,控件也可以作通用過程的參數(shù),即可以在一個通用過程中設(shè)置相同性質(zhì)的控件所需要的屬性,然后用不同的控件作實參調(diào)用該過程。請看下面這個例子。例9.8
在窗體上建立兩個文本框,然后編寫一個通用過程,用控件作參數(shù),用來設(shè)置文本框中顯示的字體屬性。通用過程如下:
SubFontSet(Ctrl1AsControl,Ctrl2AsControl) Ctrl1.FontSize=18 Ctrl1.FontName=“幼圓” Ctrl1.FontItalic=True Ctrl1.FontBold=True Ctrl1.FontUnderline=FalseCtrl2.FontSize=26 Ctrl2.FontName=“隸書” Ctrl2.FontItalic=False Ctrl2.FontUnderline=True EndSub該過程有兩個參數(shù),其類型均為Control,即控件參數(shù)。在該過程中通過一系列語句設(shè)置了控件上所顯示的文字的屬性。為了調(diào)用該過程,我們在窗體上建立兩個文本框,然后編寫如下的事件過程:
PrivateSubForm_Load() Text1.Text=“歡迎來到” Text2.Text=“新鄉(xiāng)師專計科系” EndSub
PrivateSubForm_Click() FontSetText1,Text2 EndSub
程序運(yùn)行后,窗體顯示如左圖所示,然后單擊窗體,運(yùn)行結(jié)果如右圖所示。對象參數(shù)示例
對象作參數(shù)改變文本框字體在使用控件作參數(shù)時,由于不同的控件所具有的屬性也不一樣,因此,在用指定的控件作實參調(diào)用通用過程時,如果通用過程中
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防安全教育培訓(xùn)合同6篇
- 2024年生態(tài)環(huán)境保護(hù)與修復(fù)項目承攬合同
- 2024年砂石材料市場分析與預(yù)測服務(wù)合同
- 云南省景洪市第三中學(xué)2014-2021學(xué)年高二上學(xué)期期末考試生物試題(掃描版)
- 2024年私人航天飛行服務(wù)合同
- 數(shù)字證書辦理指南(深圳CA)
- 北京廣通信達(dá)it運(yùn)維管理平臺簡介-20210818003557
- 武林外傳全劇本臺詞80
- 梅輪E9一體化電梯控制器說明手冊
- 《戰(zhàn)略的本質(zhì)復(fù)雜商業(yè)環(huán)境中的最優(yōu)競爭戰(zhàn)略》
- 寶寶大便觀察及護(hù)理課件
- 學(xué)校最小應(yīng)急單元應(yīng)急預(yù)案
- 一年級第一學(xué)期口算題(20以內(nèi)口算天天練-15份各100題精確排版)
- 公司月度安全生產(chǎn)綜合檢查表
- 重慶市康德卷2023-2024學(xué)年物理高二上期末綜合測試試題含解析
- (銀川市直部門之間交流)2022事業(yè)單位工作人員調(diào)動表
- 七年級音樂下冊 第4單元《北京喜訊到邊寨》課件1 花城版
- 飛行員獻(xiàn)身國防志愿書1000字
- 瓷磚采購?fù)稑?biāo)方案
- 世界國家地區(qū)區(qū)域劃分 Excel對照表 簡
- 移動互聯(lián)網(wǎng)的實訓(xùn)報告優(yōu)秀三篇
評論
0/150
提交評論