相关教程vb6visual basic程序设计导学list_第1页
相关教程vb6visual basic程序设计导学list_第2页
相关教程vb6visual basic程序设计导学list_第3页
相关教程vb6visual basic程序设计导学list_第4页
相关教程vb6visual basic程序设计导学list_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9章创建和使用自己PublicTypePointxAsIntegeryAsIntegerEndTypeDimpAsPublicSubsetvalue(ByValaAsInteger,ByValbAsp.x=p.y=bEndSubPublicSubdisMsgBox"("+Str(p.x)+","+Str(p.y)+End,定义类型Point变成一个CPoint类时,其数据变成了私有型,它们的过程移到类中并变,【例9.1】创建一个工程并在其中添加一个类模块Class1和一个窗体Form1,共同实现用户图9.1类Class1在“过程”列表中显示这2个的名。一般Initialize包含了对象创建时所需的所有代码Terminate包含撤销对象后进行清理的所有代码本例不设计这两个过程。PrivateSubCommand1_Click()Setmyobject=NewClass1myobject.Name=Text1.TextText2.Text=myobject.NameEnd入字符串“”,然后单击“逆转”命令按钮,则文本框text2中出现字符串“”,如图9.3所示。图 图 类模块和标准模块的不同点在于数据方法的不同。标准模块的数据只有一个备份,这意味着标准模块中一个公共变量的值改变以后,在后面的程序中再该变量时,它将得:。 不属于默认接口是调出接口(即该接口可连接其他对象),而属性和方法属:。 PublicnameAsStringPublicageAsIntegerPrivatefAsSinglePrivatecAs数据隐藏也允许定义只读属性。例如,可用PropertyGet属性过程返回一个私有变量,这就【例9.2】创建一个类Class2说明属性过程的使用。PrivatepnAsPublicPropertyGetn()AsIntegern=pnEndPublicPropertyLetn(ByValNewnAsIf(Newn<=0)MsgBoxn值不能小于等于0vbOKOnly,信息提示pn=EndIfEndProperty假设有一个名为myobject的变量,Class2对象。当执行x=myobject.n代码时,就会调用PropertyGet过程,返回存于类模块私有变量pn的值。当执行myobject.n=10代码时,将调用PropertyLet过程。Setmyobject=Newmyobject.n=10'调用PropertyLet过程使pn=10x=myobject.n'调用PropertyGet过程将pn赋给n使 运 运 属性过 说Property Property Property 设置对象属性的值(即该属性含有对象用PropertySet,如果没有则调用PropertyLet。表9.2给出了在属性过程中参数的要求。表9.2属性过程中参数的要求PropertyGet PropertyGetpropertyname(参数1,...,参数n)AstypePropertyLet PropertyLetpropertyname(参数1,...,参数n,参数n+1)Property PropertySetpropertyname(参数1,...,参数n,参数过据注意:PropertyGet过程的比相关的PropertyLet或PropertySet少一个参数。PropertyGet过据PrivateAValueAsPublicPropertyLetPropArr(ByValXAsByValYAsInteger,ByValNewValueAsEndPropertyPropertyGet过程的参数必须与PropertyLet过程的参数名称和数据类型相同:PublicPropertyGetPropArr(ByValXAsInteger,ByValYAsInteger)AsVariantEndProperty图9.4给出了这些参数匹配规则的理由,并显示了VB如何将赋值语句部分与PropertyLet参Propname(a,b,c)=PropertyLe…EndPropname(x,y,z,w图 【例9.3】设计一个类Class3,采用属性过程的方法实现从华氏温度到摄氏温度之间的转PrivatefAsSinglePrivatecAsPublicPropertyGetcs()AsSinglecs=cEndPublicPropertyLetcs(ByValnewcAsSingle)c=newcEndPublicPropertyGetfs()AsSinglefs=fEndPublicPropertyLetfs(ByValnewfAsSingle)f=newfEndPropertyPublicSubtrans()c=(5/9)*(f-EndPrivateSubCommand1_Click()Setmyobject=NewClass3myobject.fs()=Val(Text1.Text)Text2.Text=myobject.cs()EndSub图 图 将下面的PublicFunction过程添加到类模块中:PublicFunctionComp()AsEnd类的公共接口是由类模块的属性和方法来定义的。同数据隐藏一样,为Private的过程也不是接口的组成部分。这意味着可以更改类模块的实用程序的过程,而不属性和方法属于入端接口,因为它们是从对象外面调用的。相对而言,被称为出端接口,因为它们是在对象里边产生,在其他地方处理。本节讨论在类模块中如何和处理的与触【例9.4】立一个和一个体设计个eenDoe用显示完任务的分比。我们在工中创建个类as5类有法方法可能费很长间来执行时as5分比的框但是以在每个用as5对象的工中就会离开那个用Class5方法的过程来处理那个。PercentDone也可以提供一种机制来取消任务。现在,可以开始为该来建立代码示例了,操作方法是打开一个“标准.EXE”工程,将表9.3图 在类模块的部分,用Event关键字来。可以有ByVal和ByRef参数,就OptionPublicEventPercentDone(ByValPercentAsSingle,ByRefCancelAsCancel参数设置为True,以取消触发该的方法。PercentDone是由Class5类的LongTask方法的。LongTask方法接受两个参数:总的PublicSubLongTask(ByValDurationAsSingle,ByValMinIntervalAsSingle)DimThresholdAsSingleDimStartAsDimblnCancelAsBooleanStart=TimerThreshold=DoWhileTimer<(Start+IfTimer>(Start+Threshold)ThenRaiseEventPercentDone(ThresholdDuration,blnCancel)IfblnCancelThenExitSubThreshold=Threshold+MinIntervalEndIfEndOptionPrivateWithEventsmyobjectAsClass5PrivatemblnCancelAsBooleanWithEvents变量不能是派生对象变量。也就是说,不能把它为AsObject。当该不能把WithEvents变量为AsNew。必须明确地创建源对象,并将它赋不能在标准模块中WithEvents变量。只能在类模块、窗体模块以及其他定义类的模块中。图 选定一个,将显示相应的过程,以myobject_为前缀。所有跟WithEvents变量相关PrivateSubmyobject_PercentDone(ByValPercentAsSingle,CancelAsBoolean)Label1.Caption=CInt(100*Percent)&"%"IfmblnCancelThenCancel=TrueEndSubDoEvents语句允许重新画出该,同时也给用户单击“取消”按钮的机会。将下面的代PrivateSubCommand2_Click()mblnCancel=TrueEnd当LongTask正在运行时,如果单击了“取消”按钮,一旦DoEvents语句允许出现对的处理,那么将会执行Command2_Click事件。模块级的变量mblnCancel设置为True,myobject_PercentDone将对其进试,并将ByRefCancel参数设置为True。他对象变量相同。必须创建对象,并将对该对象的赋给这个WithEvents变量。PrivateSubSetmyobject=NewClass5EndSubPrivateSubCommand1_Click()mblnCancel=FalseLabel1.Caption="0%"Callmyobject.LongTask(10,IfNotmblnCancelThenLabel1.Caption=End在调用LongTask方法之前,完成百分比的显示必须被初始化,而且必须将模块级用10秒任务延迟调用LongTask,每隔0.5秒触发一次PercentDone。每次触发该时,图 通过将新Class5的赋给myobject变量,可以使得myobject变量为不同Class5对象处理事Setmyobject=NewClass5 Callmyobject.LongTask(10,0.5)Set '<-的就会通过将myobject设置为Nothing而释放,而且这个Class5也被撤销。WithEvents变量每次只能包含一个对象,因此如果将不同的Class5对象赋给myobject,Setmyobject=Nothing'终止myobject处理【例9.5】建立一个类和一个窗体,在其中创建一个自定义Gong。在“工程”菜单上,选择“添加类模块”,将类模块Class6添加到工。将下面的代码放置到Class6的“”部分:PublicPropertyGetForm6()AsForm6SetForm6=mForm6EndPublicPropertySetForm6(ByValNewForm6AsForm6)SetmForm6=NewForm6EndEventPrivatemc1AsPrivateWithEventsmForm6AsWithEvents关键字意味着Form6的这个实例是与相关联的只有在创建了Gong后才事件得到过程。将下面的代码添加到该过:PrivateSubMsgBox"你按一个键激活执行一次Gong过程!",vbOKOnly,"信息提示"EndSubPrivateSubForm_Load()Setmc1=NewClass6Setmc1.Form6=MeEnd第一行创建了一个Class6对象,而第二行则将对Form6的赋给其Form6属性(在第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论