关于VisualBasic6.0类开发

2016-02-19 13:17 2 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的关于VisualBasic6.0类开发,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

对程序员和编程爱好者来说,VB中类的技术是学习中的一个难点,在大型软件的开发过程中,模块(Moudle)、控件(Activeocx)、链接库(Activedll)和类(Classmoudle)构成了系统化、高效化的软件工程,而类的技术是控件和链接库技术的基础,因此掌握类的理论和编程方法是非常有意义的。
  
  (一)类的基本定义和应用概述
  
  类是包含了方法、属性、数据成员的高级代码模块,它既在模块的范畴之内,又是一个没有图形界面的Activeocx,程序员可以象使用控件一样使用它,但却不能看到它,值得注意的是,类是不能继承的。
  类能够使我们高效的完成对某一个或者某几个特定的对象的复杂操作,对象的动作就是类的方法,对象的属性就是类的属性过程。相对而言,如果编程的对象是一组事物,那么,我们采用标准模块的方式是非常合适的,在下列两种情况下,应该使用类进行代码处理:
  
  (1)创建大量性质相近的对象;
  
  (2)提高代码的封装性。
  
  类的创建非常简单,在进行代码编写的时候,在“工程”菜单中选择“添加类模块”项目,就可以添加一个空白的类。
  
  类文件一般以.cls作为扩展名保存。
  
  (二)类的方法的实现
  
  类的方法类似于动态链接库的接口函数,它能够接受其他窗体代码的指定类型参数,并且传递到类中。一般来说类的方法是能够指定是否有返回值的。它在类中通常是一个public过程。请看下面的代码示例,它使一个密码框拒绝非字母的输入:
  
  (1)类cls的代码;
  
  OptionExplicit'变量检查
  
   PrivateWithEventsmytxtAsTextBox
  
   '本类中的方法接受和控制一个text密码框
  
   DimisNUMAsBoolean
  
   '类的模块级变量
  
   PublicSubAttach(itTEXTAsTextBox)
  
   '接受外部变量到mytxt中
  
   Setmytxt=itTEXT
  
  EndSub
  
  PrivateSubmytxt_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
  
  isNUM=(KeyCode=65)And(KeyCode=90)
  
  '测试密码框的键盘输入是否是英文字母
  
  IfisNUM=FalseThen
  
   Beep
  
   mytxt.Text=""
  
   '如果输入不是英文字母则响铃并且清空密码框内容
  
   MsgBox"非法字符输入!"
  
  EndIf
  
  Debug.Printmytxt.Text
  
  '调试输出密码框内容
  
  EndSub
  
   '类的代码结束
  
  (2)类的引用
  
  已经编写完成的类可以经过两种格式进行引用,第一种方式:Private(public或者dim)myCLS(指定的类名)AsNewcls(编写完成的类名);第二种方式较多用于程序编写风格较“老”的程序员:首先在窗体代码中进行模块级声明――DimmyCLSAscls,然后在具体代码过程中进行具体定义――Setmycls=Newcls。这两种方式的效率和代码的简洁性方面可能会有所差别,但在笔者的编程实践中,并没有什么特别的感觉,不过我较多使用第一种方式,因为它书写起来更加方便。另外,在代码结束的时候,使用SetmyCLS=Nothing来取消类的资源占用是一种非常好的编程习惯。
  
  在窗体form1中(窗体有一个密码框控件text1,passworldchar="*")添加以下代码:
  
  OptionExplicit
  
   PrivatemyCLSAsNewcls
  
   '引用cls
  
   PrivateSubForm_Load()
  
   myCLS.AttachText1
  
   '启动类
  
  EndSub
  
  '在代码结束时记得释放资源
  
  PrivateSubForm_Unload(CancelAsInteger)
  
   SetmyCLS=Nothing
  
  End
  
   EndSub
  
  本文代码展示了类的方法的代码编写过程和调用方式(尽管它和类的事件非常相似),它的效果是,如果密码框中被输入了非字母,则系统振铃,并删除密码框中的原来的数据――在一定程度上保护密码。
  类的方法可以不需要任何参数,这一点类似一个public的函数或者过程,它也是类中使用最广泛的。在下一篇文章中我将讨论,如何使用类的属性、事件和方法进行综合编程。

我们讨论了类的理论、类的创建和类的方法的编程实践,实际上,类之所以能够在软件工程中广泛应用,最主要的一点是它可以非常方便的封装许多编程需要的属性,这不仅使程序员在一定程度上克服控件(ocx)和链接库(dll)设计和调试中的复杂性,而且能够提高程序代码的简洁和高效性――本文将讨论完整的类的编程,包括方法、属性和基本事件。
  
  (一)类的属性的特征和定义;
  
  类似于标准控件的属性,类的属性允许用户在指定的数据范围内进行赋值,这些值被类内的各个代码部分所共享。属性的获得和传递需要经过PropertyLet和PropertyGet语句进行编程,当然,我们首先需要在类中进行全局或者模块级的相应变量定义。
  
  (二)事件的属性和基本定义;
  
  和窗体的事件类似,类也有两个基本的事件,Class_Initialize(类加载时触发)和Class_Terminate(类卸载时触发),这两个事件都是private的。实际上,我们完全可以忽略这两个事件――只要你记得完善类的方法和属性。
  
  类同样可以定义自己的事件,它和方法的程序编写格式类似,只不过需要WithEvents关键字进行参数声明,而且事件不能有任何命名参数或者可选参数,它也没有返回值。
  
  实际上,结构良好的方法和属性完全可以替代结构复杂的类的事件。
  
  (三)类的方法、事件和属性的编程实例;
  
  本程序的设计目的是,通过类控制窗体中文本框的内容的全部大写、小写和逆向排序转化。
  
  为了方便代码的书写和调用,我在类中引用了枚举的编程方法。
  
  以下代码在类Class1:
  
  OptionExplicit
  
   PrivateWithEventsmyTXTAsTextBox
  
   '方法的参数接口
  
   PublicEnumsTYLE
  
  Lcaseit'小写属性
  
  Lbigit'大写属性
  
  NLogoit'逆向排序属性
  
   EndEnum
  
  '自定义枚举,用来实现属性的自动赋值
  
  PrivatemvarBiaozhiAssTYLE
  
  '实现枚举常量的连接
  
  PublicFunctiondONE()AsString'
  
  'DONE方法用来根据指定的枚举属性,对
  
  '窗体文本框进行相应的字符转化操作
  
  '并且返回转化后的字符串
  
  IfmvarBiaozhi=NLogoitThen
  
   dONE=StrReverse(myTXT)
  
   '逆向排序
  
  ElseIfmvarBiaozhi=LcaseitThen
  
   dONE=LCase(myTXT)
  
   '强制小写转化
  
  Else
  
   dONE=UCase(myTXT)
  
   '强制大写转化
  
  EndIf
  
  EndFunction
  
  'DONE方法结束
  
  PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
  
   '获得属性的被赋的值
  
   mvarBiaozhi=vData
  
  EndProperty
  
  PublicPropertyGetBiaozhi()AssTYLE
  
   '传递属性值到类中
  
   SetBiaozhi=mvarBiaozhi
  
  EndProperty
  
  PublicSubAttach(itTEXTAsTextBox)
  
   '连接类的方法
  
   SetmyTXT=itTEXT
  
  EndSub
  
  PrivateSubClass_Initialize()
  
   '本事件在类倍加载时激活
  
   MsgBox"你好!本程序向您展示使用类的方法、属性、事件进行编程的技术!"
  
  EndSub
  
  PrivateSubClass_Terminate()
  
   '本事件在类被卸载时激活
  
   MsgBox"你好!记得在Class_Terminate中填写对象撤销后的代码!"
  
  EndSub
  
  '类的代码全部结束
  
  (四)窗体代码的引用编程;
  
  在窗体FORM1中添加文本控件TEXT1、下拉列表控件COMBO1、命令按钮COMMAND1(CAPTION="开始转化"),调整三个控件到适当位置。
  
  DimmyTAsNewClass1
  
  '类的引用
  
  PrivateSubForm_Load()
  
   Combo1.Clear
  
   Combo1.AddItem"字符串大写转化"
  
   Combo1.AddItem"字符串小写转化"
  
   Combo1.AddItem"字符串逆向排序"
  
   Combo1.ListIndex=0
  
   '在列表框中添加属性选项
  
  EndSub
  
  PrivateSubCommand1_Click()
  
   '当命令按钮按下时激活类
  
   myT.AttachText1
  
   '方法参数联接
  
   SelectCaseCombo1.ListIndex
  
  Case0
  
    myT.Biaozhi=Lbigit
  
  Case1
  
    myT.Biaozhi=Lcaseit
  
  Case2
  
    myT.Biaozhi=NLogoit
  
   EndSelect
  
   '根据列表框的选择,给类的Biaozhi属性赋值
  
   '注意,在编程环境中,上述属性值自动添加
  
   Text1.Text=myT.dONE
  
   '返回排序结束后的字符串
  
  EndSub
  
  PrivateSubForm_Unload(CancelAsInteger)
  
   SetmyT=Nothing
  
  End
  
  '良好的编程习惯
  
  EndSub
  
  怎么样,我们的代码看起来如此的简洁,这种感觉就象是在使用一个控件,不仅可以随心所欲的调用,而且方便的使用了vb的自动提示功能。
  
  (五)关于类的编程技术的总结;
  
  严格的说,类是vb编程中的一个相当有用的技术,同样也是学习和掌握中的难点,类在大型软件工程中应用是非常广泛和卓有成效的,但是,在小型软件开发中,为了提高软件的效率和代码的清晰度,应该避免使用较多的类模块,控件和联接库,取代以标准模块。
  
  本文所示例的代码比较简单,却覆盖了关于模块编程技术的方方面面,希望初学者能够有所借鉴,也希望程序员能够共同探讨。我们应该相信,无论多么复杂的高楼大厦都是由普普通通的方砖堆砌而成的,同样,无论所么复杂的软件工程都是由基本的程序语句所构成的,编程爱好者、程序员和分析员的区别只是在于,用同样的程序语句构建的程序的不同而已。->

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1603647.html

延伸阅读
    先看一个简单的例子:以下是常见按钮,使用“类”控制字体的按钮是不是漂亮了许多?而没有使用“类”控制的按钮的字体看上去就有点变形?本例使用9pt大小的宋体字控制的。        这是“类”的一个用途。     奥秘是这样的:     先定义一...
一、OLE技术介绍 OLE和DDE,是支持Windows应用之间相互通讯的一种机制。OLE技术通过"对象"集成windows应用程序,它采用图象、图表、数据库、声音、文本等构成复合对象(也称复合文档)。OLE技术是在复合文档中实现链接对象或嵌入对象的一组协议,该技术首先由Aldus公司在1988年提出,后被Microsoft公司引进到Windows中。使用OLE,一个应用程序...
开始编码之前 在VisualBasic中创建应用程序的最重要的(又往往为人忽视的)部分是设计阶段。需要为应用程序设计一个用户界面,这是显然的;但需要设计代码的结构就不那么显然了。构造应用程序的方法不同,可造成应用程序的性能及代码的可维护性、可使用性不同。 VisualBasic应用程序的代码是用分层方式组织的。典型应用程序包括...
VxD (Virtual Device Driver), 即虚拟设备驱动程序, 是运行在处理器Ring0特权级别的驱动程序,可以执行任何处理器指令,访问机器中的任何数据寄存器。VxD被用作Windows 9x系统和物理设备之间的接口,扩展了WINDOWS 系统的核心服务,能够访问和控制实际的硬件环境。 随着WIN 2000和新一代的设备驱动程序WDM(Windows Driver Model)推...
标签: ASP
  实例:具体功能见“我爱博客(http://www.woiblog.com)”里有相关使用介绍! 1,要实现的功能就是在浏览器加一个右键快捷方式提交所选的网页或图片内容!实例应用在博客程序里,就是在你已登陆的情况下,浏览网页时看到比较好的新闻或图片!你就可以选中内容--》点右键 出现“加入我的网摘”,这时就会弹出一个IE窗口,自动将网页标题...

经验教程

556

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部