电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> VB编程>>VB中类模块的循序渐进:

VB中类模块的循序渐进

来源:www.cncfan.com | 2006-11-19 | (有4591人读过)

摘自msdn中“类模块的循序渐进”  
   
   
  本示例演示了如何用类模块定义类(然后可以用它创建对象)。还将展示如何为新的类创建属性和方法并演示对象是如何创建和撤消的。  
   
  打开一个新的“标准   EXE”工程,在“工程”菜单中选中“添加类模块”插入一个类模块。在窗体上画四个按钮。下表列出了本示例中要设置的对象属性值。  
   
  对象   属性   设置值    
  Class   类模块   Name   Thing    
  Command1   Caption   显示该   Thing    
  Command2   Caption   颠倒该   Thing   的名称    
  Command3   Caption   创建新的   Thing    
  Command4   Caption   临时的   Thing    
   
   
  注意   类模块保存在扩展名为   .cls   的文件中。  
   
  添加下列代码到类模块的声明段:  
   
  Option   Explicit  
  Public   Name   As   String  
  Private   mdtmCreated   As   Date  
   
  变量   Name   将成为   Thing   对象的属性,因为它声明为   Public。  
   
  注意   不要把这个   Name   属性和上表设置的类模块的   Name   属性混淆(类模块的   Name   属性为   Thing   类提供了名称)。为什么要给   Thing   类命名呢?最好应该反过来问,为什么不?应该给   Thing   类一个名称因为事物总是有名称的!应该知道   Visual   Basic   使用属性和方法的名称并没有什么特殊点。可以为自己不同的类使用相同的属性和方法名。  
   
  变量   mdtmCreated   是私有数据成员,用于存储只读的   Created   属性的值。Created   属性返回   Thing   对象产生的日期和时间。为了实现   Created   属性,将以下   Property   Get   代码添加到类模块的声明部分:  
   
  Property   Get   Created()   As   Date  
        Created   =   mdtmCreated  
  End   Property  
   
  注意   如果通过“工具”菜单下的“添加过程”对话框添加属性过程,应确认删除了   Property   Let   声明,它是通过本对话框自动添加的。Property   Let   只用于读写属性,参见“运用属性过程”部分。  
   
  Thing   对象有一个方法   ReverseName,用于颠倒   Name   属性的字母顺序。它不返回值,因此是一个   Sub   过程。向类模块添加以下   Sub   过程。  
   
  Public   Sub   ReverseName()  
        Dim   intCt   As   Integer  
        Dim   strNew   As   String  
        For   intCt   =   1   To   Len(Name)  
              strNew   =   Mid$(Name,   intCt,   1)   &   strNew  
        Next  
        Name   =   strNew  
  End   Sub  
   
  类模块有两个事件:Initialize   和   Terminate。从类模块的“对象”下拉列表中,选择“类”。下拉出的“过程”列表将显示事件。将以下代码放到事件过程中:  
   
  Private   Sub   Class_Initialize()  
        '设置对象创建的日期/时间,  
        '       由只读的   Created   属性返回。  
        mdtmCreated   =   Now  
        '显示对象属性。  
        MsgBox   "Name:   "   &   Name   &   vbCrLf   &   "Created:   "   _  
        &   Created,   ,   "Thing   Initialize"  
  End   Sub  
   
  Private   Sub   Class_Terminate()  
        '显示对象属性。  
        MsgBox   "Name:   "   &   Name   &   vbCrLf   &   "Created:   "   _  
        &   Created,   ,   "Thing   Terminate"  
  End   Sub  
   
  一般   Initialize   事件包含了对象创建时所需的所有代码,如为   Created   属性提供时间标记。Terminate   事件包含撤消对象后进行清理的所有代码。  
   
  本示例中,两个事件主要用来提供   Thing   对象创建或撤消的可视化指示。  
   
  Thing   对象的使用  
  添加以下代码到窗体模块的声明段:  
   
  Option   Explicit  
  Private   mth   As   Thing  
   
  变量   mth   保存了对一个   Thing   对象的引用,该对象是在窗体的   Load   事件中产生的。将以下代码分别添加到   Form_Load   事件过程及四个按钮的   Click   事件过程中。  
   
  Private   Sub   Form_Load()  
        Set   mth   =   New   Thing  
        mth.Name   =   InputBox("Enter   a   name   for   the   Thing")  
  End   Sub  
   
  '按钮“显示该   Thing”  
  Private   Sub   Command1_Click()  
        MsgBox   "Name:   "   &   mth.Name   &   vbCrLf   _  
        &   "Created:   "   &   mth.Created,   ,   "Form   Thing"  
  End   Sub  
   
  '按钮“颠倒该   Thing   的名称”  
  Private   Sub   Command2_Click()  
        mth.ReverseName  
        '单击“显示该   Thing”  
        Command1.Value   =   True  
  End   Sub  
   
  '按钮“创建新的   Thing”  
  Private   Sub   Command3_Click()  
        Set   mth   =   New   Thing  
        mth.Name   =   InputBox(   _  
        "Enter   a   name   for   the   new   Thing")  
  End   Sub  
   
  '按钮“临时的   Thing”。  
  Private   Sub   Command4_Click()  
        Dim   thTemp   As   New   Thing  
        thTemp.Name   =   InputBox(   _  
        "Enter   a   name   for   the   Temporary   Thing")  
  End   Sub  
   
  运行工程  
  按   F5   键运行该工程。观察   Form_Load   事件过程可知   New   操作符用于创建   Thing   对象。对该对象的引用赋给了变量   mth。  
   
  InputBox   函数要求输入   Thing   的名称。输入名称并按   ENTER   键后,返回值被赋予   Thing   对象的   Name   属性。  
   
  显示窗体   Thing  
  可以通过按下第一个按钮“显示该   Thing”来验证所赋的   Name   属性值,此时将显示一个包含了   Thing   对象所有属性的消息框。  
   
  颠倒   Thing   的名称  
  按第二个按钮“颠倒该   Thing   的名称”。该按钮调用   ReverseName   方法把   Thing   对象的名称倒过来,然后按第一个按钮显示更新过的属性值。  
   
  创建新的   Thing  
  单击“创建新的   Thing”按钮撤消已存在的   Thing   对象后再创建一个新的对象。(或,反过来进行,创建一个新的   Thing   对象然后撤消旧的。)  
   
  New   操作符创建一个新的   Thing,因此可以看见新   Thing   的   Initialize   事件显示的消息框。单击“确定”,对新   Thing   的引用被赋给了窗体级的变量   mth。  
   
  这样做清除了对旧的   Thing   的引用。由于不再有引用,所以它被撤消,因此可以看到   Terminate   事件的消息框。单击“确定”后,InputBox   语句要求输入新   Thing   的名称。  
   
  注意   如果希望在创建新的   Thing   之前撤消旧的,可以添加代码   Set   mth   =   Nothing   到事件过程的开始部分。  
   
  临时的   Thing  
  第四个按钮演示了对象存活期的另一个方面。按下后,将提示输入临时   Thing   的名称。  
   
  可是等一等,这还不是一个临时的   Thing   对象。还没有见到其   Initialize   消息框,怎么赋给它名称呢?  
   
  由于变量   thTemp   已被   As   New   声明过了,因此当一个属性或方法被使用时就会创建   Thing   对象。这将发生在输入框返回的值被赋给   Name   属性时。在输入框键入名称后单击“确定”。  
   
  此时可以看到   Initialize   的消息框,其中的   Name   属性还是空白。当单击“确定”关闭消息框后,InputBox   语句的值终于赋给了   Name   属性。看看这一行代码作了多少事。  
   
  当然,当完成了这一切后,Click   事件过程也结束了,变量   thTemp   也超出可见范围,对临时   Thing   的对象引用也被释放,因此可以看到   Thing   的   Terminate   消息框,注意其中包含所提供的名称。  
   
  每次单击该按钮将创建另一个临时   Thing,并进行命名,将它撤消。  
   
  关闭程序  
  单击窗体的“关闭”按钮可终止应用程序。不要使用工具栏上的   End   按钮。应用程序终止时,Form1   被撤消。变量   mth   也超出可见范围,Visual   Basic   清除对   Thing   的引用。由于已不存在对   Thing   的引用,因此被撤消并显示   Terminate   事件的消息框。  
   
  再次运行应用程序,这次用工具栏上的   End   按钮终止程序。注意这时没有显示   Thing   对象的   Terminate   消息框。  
   
  应特别记住使用   End   按钮终止应用程序或在代码中用   End   语句立即退出应用程序,并不能运行任何对象的   Terminate   事件。最好能通过卸载所有的窗体来关闭应用程序。  
   
  通过   F8   键以每次运行一行代码的形式运行示例,是一个很有用的方法。这有利于理解创建和撤消对象的事件的顺序。  
   
  重点   在实际的应用程序中,Initialize   和   Terminate   事件不应包含消息框或其它任何使   Windows   显示消息的代码。一般来说,调试对象的存活期时最好用   Debug.Print   语句。  
   
  详细信息   窗体和控件与其它对象有一些差别,这一点将在“Visual   Basic   窗体的存活期”中讨论。  
   
  在“向类中添加属性和方法”和“向类中添加事件”这些节中可以读到更多有关使用类和类模块的信息。   
 
VB编程热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号