在本節中,我們來實踐一下。先建立一個COM對象,然後使用它,最後再想法改進。
首先進行下面兩步:
執行VisualBasic;選擇"StandardEXE"工程類型;由於COM物件是基於類別的,而類別實際上是程式包,就像模組中的程式碼一樣。所以:
選擇"PRoject"->"AddClassModule";對應的對話方塊出現後,選擇"'ClassModule",然後點選"Open"按鈕。
這樣,在桌面上顯示一個表單,以及包含在工程Project1中的Class1。
下面再將空的類別的類別名稱更改:
在類別的屬性視窗中,將類別的Name屬性改成CDog。
需要說明的是,為了區別起見,每個物件名稱的前面都有對應的前綴,例如TextBox物件前是"txt"、Form前是"frm"、類別前可以大寫字母"C"或小寫字母"cls ",但這裡使用前者。
下面我們來加入一些程式碼來測試一下:
在CDog類別通用聲明部分中,新增變數的聲明:
然後,打開Form1;
在表單中新增一個命令按鈕;
打開程式碼窗口,為該命令按鈕新增下列程式碼:
下面就來解釋上述程式碼的含義:
該行語句是用來通知VisualBasic為CDog物件設定一個位元空間,但此時還不能使用該對象,必須等到下條語句為止:
它是用來建立CDog的實例。這意味著前面空的MyDog模板變成了現在可以使用的CDog物件。
上述程式碼的第一行是用來設定MyDog的Name變量,同時第二行語句是用來將該變數的內容顯示在訊息對話方塊中。最後:
用來將MyDog物件簡單的置空。
按F5鍵運行並測試。
怎麼樣?但同時,我們可能不禁要問,標準模組和類別模組究竟有什麼不同?我們再來看看下面的範例:
將命令按鈕的程式碼變成:
與最前面的程式碼不同的是,這裡的程式碼實際上是定義兩個物件MyDog和MyDog2,這兩個物件是基於CDog的相互獨立的兩個物件。
按F5鍵運行並測試。
結果怎樣?這次是不是有兩個對話方塊出現?一個顯示"BillyMoore",另一個顯示"SadieMoore"。
上述定義的每個物件中除了Name外,沒有任何實際的屬性,因此下面過程就來添加:
打開前面的Class1;
聲明下面的公共變數:
打開前面的Form1;
將命令按鈕的程式碼變成:
這些程式碼和前面差不多,只不過這裡使用了Age變數。
按F5鍵運行並測試。
應該會出現顯示name和age內容的兩個訊息對話框。
現在再試著將其中一個物件的age值設定成1,000或30,000。看看結果如何?程式照樣正常運行,這是因為定義的整數變數最大值可達32,767,但是實際中的狗(Dog)是不會有30,000歲的。
那麼,這種情況該怎麼處理呢?
->