1. 程式人生 > >你還記得嗎-VB中Sub子過程與函式的呼叫

你還記得嗎-VB中Sub子過程與函式的呼叫

    在做學生管理系統中,遇到了太多太多的問題,發現了VB的學習是多麼的不牢固,即使當初耗費了大量的時間。從現在開始,將把自己遇到的那些模糊或者不懂的知識總結出來,查漏補缺,歡迎大家提出批評指正!

    VB中的呼叫主要針對Sub子過程和自定義函式的呼叫。不論是Sub子過程還是函式過程,都是將一段完整的功能獨立出來,建立一個過程。在主調程式中通過呼叫過程,將需要計算的引數(實參)傳遞給過程;在過程中求得結果後再講結果返回到主調程式,從而實現程式的功能,並使程式結構更為清晰、簡潔。

    一、Sub子過程的呼叫

    在程式中要呼叫Sub子過程的方法有如下兩種:

    Call 過程名 (實參列表)  或   過程名  [實參列表] 

    呼叫Sub子程式的程式段稱為主調程式。在主調程式中呼叫Sub子過程時,將使程式流程自動轉向被呼叫的Sub子過程。在過程執行完最後一行語句 End Sub 之後,程式流程將自動返回到主調程式語句的下一行繼續進行,如下圖所示:

                   

    在呼叫過程的的語句中,不僅要求實參個數與被呼叫過程形參個數一致,而且要求實參表的引數型別、引數順序與被呼叫過程形參表的引數完全一致。

    二、自定義函式的呼叫形式如下:

           函式名  (實參列表)

        實參列表有變數名、陣列名、陣列元素名、常熟或表示式組成,在呼叫時,實參和形參的資料型別、順序、個數必須一一對應。如下圖所示:

                

    函式呼叫只能出現在表示式中,其功能是求得到函式的返回值。

    從上面兩張圖中可以看出,Sub子過程和函式過程在傳遞需要計算的引數時(實參a、b傳遞給形參x、y),兩者並沒有什麼不同。但在返回結果方面,因為函式過程可以通過函式名返回結果,因此,在函式過程中一般只需要設定接收計算引數的形參即可(圖2的形參為x、y);Sub子過程卻有所不同,由於Sub子過程名只代表名字,沒有返回值,所以必須另外設定專門的形參用於返回結果(圖1的形參為z1、z2)。

    那麼,在解決一個問題時,是使用Sub子過程還是使用函式過程呢?從原則上來說,解決一個問題,既可以使用Sub子過程,也可以使用函式過程。如果是需要過程只有一個返回值,一般習慣使用函式過程,通過函式名來返回結果;如果不是為了求一個值,而是完成一些操作,或者需要返回多個值,則使用Sub子過程比較方便

,此時,可以通過設定與返回值個數相符的形參個數來得到返回結果。

補充:多窗體間資料的訪問與傳遞

                ①直接訪問其他窗體的控制元件屬性

                    在一個窗體中可以直接訪問另一個窗體上控制元件的屬性,訪問時要指明是哪一個窗體,形式為:

                                                 另一窗體名.控制名.屬性   如Text1.Text=Form1.Text1.Text

                ②直接訪問其他窗體中宣告的全域性變數

                    在窗體的通用宣告區用Public關鍵字宣告的變數,可以被工程中其他的窗體或模組所使用.需要注意的是,在使用窗體的全域性變數時,必須帶有窗體名。         格式為:         窗體名.變數名

                ③在標準模組中宣告全域性變數,實現資料的共享

                    為了實現窗體間的資料互訪,還可以在標準模組中宣告全域性變數,並以該全域性變數作為交換資料的場所。 例如:在標準模組中宣告:Public Pubx As Integer  ,此時在一個窗體中對Pubx的賦值可以被另外窗體使用。