|
在本节中,我们来实践一下。首先创建一个COM对象,然后使用它,最后再想法改进。
首先进行下面两步:
运行VisualBasic;选择StandardEXE工程类型;由于COM对象是基于类的,而类实际上是程序包,就像模块中的代码一样。所以:
选择Project->AddClassModule;当相应的对话框出现后,选择ClassModule,然后单击Open按钮。
这样,在桌面上显示一个表单,以及包含在工程Project1中的Class1。
下面再将空的类的类名更改:
在类的属性窗口中,将类的Name属性改成CDog。
需要说明的是,为了区别起见,每个对象名的前面都有相应的前缀,例如TextBox对象前是txt、Form前是frm、类前可以大写字母C或小写字母cls,但这里使用前者。
下面我们添加一些代码来测试一下:
在CDog类通用声明部分中,添加变量的声明:
然后,打开Form1;
在表单中添加一个命令按钮;
打开代码窗口,为该命令按钮添加下列代码:
-> DimMyDogAsCDog SetMyDog=NewCDog MyDog.Name=BillyMoore MsgBoxMyDog.Name SetMyDog=Nothing-> 下面就来解释上述代码的含义:
该行语句是用来通知VisualBasic为CDog对象设置一个位空间,但这时还不能使用该对象,必须等到下条语句为止:
它是用来创建CDog的实例。这就意味着前面空的MyDog模板变成了现在可以使用的CDog对象。
-> MyDog.Name=BillyMoore MsgBoxMyDog.Name-> 上述代码的第一行是用来设置MyDog的Name变量,同时第二行语句是用来将该变量的内容显示在消息对话框中。最后:
用来将MyDog对象简单的置空。
按F5键运行并测试。
怎么样?但同时,我们可能不禁要问,标准模块和类模块究竟有什么不同?我们再来看看下面的示例:
将命令按钮的代码变成:
-> DimMyDogAsCDog SetMyDog=NewCDog DimMyDog2AsCDog SetMyDog2=NewCDog MyDog.Name=BillyMoore MsgBoxMyDog.Name MyDog2.Name=SadieMoore MsgBoxMyDog2.Name SetMyDog=Nothing SetMyDog2=Nothing-> 与最前面的代码不同的是,这里的代码实际上是定义两个对象MyDog和MyDog2,这两个对象是基于CDog的相互独立的两个对象。
按F5键运行并测试。
结果怎样?这一次是不是有两个对话框出现?一个显示BillyMoore,另一个显示SadieMoore。 上述定义的每个对象中除了Name外,没有任何实际的属性,因此下面过程就来添加:
打开前面的Class1;
声明下面的公共变量:
打开前面的Form1;
将命令按钮的代码变成:
-> DimMyDogAsCDog SetMyDog=NewCDog DimMyDog2AsCDog SetMyDog2=NewCDog MyDog.Name=BillyMoore MyDog.Age=4 MsgBoxMyDog.Name&is&MyDog.Age&yearsold MyDog2.Name=SadieMoore MyDog2.Age=7 MsgBoxMyDog2.Name&is&MyDog2.Age&yearsold SetMyDog=Nothing SetMyDog2=Nothing-> 这些代码和前面差不多,只不过这里使用了Age变量。
按F5键运行并测试。
应该出现显示name和age内容的两个消息对话框。
现在再试着将其中一个对象的age值设置成1,000或者30,000。看看结果如何?程序照样正常运行,这是因为定义的整型变量最大值可达32,767,但是实际中的狗(Dog)是不会有30,000岁的。
那么,这种情况应该怎样处理呢? -> |