您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 基于VB的桌面系统开发方案_T6
1基于VB的桌面系统开发方案ActiveX控件2课题目标了解什么是ActiveX控件及其用处分析ActiveX控件和COM服务器的区别了解控件类的概念了解创建和编译一个ActiveX控件的步骤把ActiveX控件作为数据源控件使用3回顾组件对象模型COM–COM是OLE和ActiveX技术的主要理论依据–COM允许一个应用程序向其它的应用程序提供服务关于COM的术语讨论了连接式对象和嵌入式对象的特点及其相互的区别4ActiveX的介绍COM的目标之一是共享资源和创建可重用组件一个ActiveX控件就是一个具有下列特征的COM组件:–识别事件的能力–能够对这些事件编写代码–可以执行用户编写的不同事件的代码–和其它的COM对象一样拥有的方法和属性5ActiveX控件VisualBasic提供了许多ActiveX控件,如ADO数据控件、状态条、工具条、DataCombo和DataList控件个案研究–考虑一个要求用户输入一个ID和口令的登录窗口–需要编写代码来验证用户的ID和口令是否匹配–这个窗口所需要的控件可以打包在一起–创建一个登录屏幕,则用户所需要做的只是把这个组合好的控件放置到屏幕上–我们可以通过把这些控件以及相关的代码组合到一个ActiveX控件中去就可以实现前面的设想6ActiveX控件(续)在VisualBasic中有三种创建控件的模型:–创建自己绘制的控件使用可视的元素和自己选择的行为来创建自己的控件这种类型的控件称为用户绘制(user-drawn)的控件–在已存在的简单控件上增加功能也就是在已存在的控件上添加自己的属性、方法和事件例如:我们可以创建一个只能输入数字的文本框7ActiveX控件(续)–从多个已有的控件集成一个新的控件VisualBasic为我们提供了一个叫做UserControl的控件UserControl对象–和一个没有边界的窗体很类似–可以在UserControl上放置一些已有的控件,然后把它们聚合成一个ActiveX控件–这些已有的控件称为成员控件例如:在一个数据库程序中可能需要创建一组命令按钮来完成如插入、更新和删除这样的数据操作8控件类在VisualBasic开发中使用到的控件实际上都是一个控件类一个用于创建控件的描述当我们在窗体中放置一个控件时,实际上是创建了一个控件类的实例9控件类(续)考虑一个通过在UserControl中放置多个UI控件来创建的ActiveX控件UserControl就是ActiveX控件创建的基础为了创建需要的ActiveX控件,我们可以为每个单独的控件设置属性,或是为它添加代码10控件类(续)用户所创建的ActiveX控件的信息–保存在一个普通的文本文件中–它包含UserControl和成员控件的代码和属性。–这类文件的扩展名是‘.ctl’如果UserControl或是它的成员控件使用如位图这样的图形元素,VisualBasic会把这些元素保存在后缀名是“.ctx”的文件中,文件的名字和扩展名为“.ctl”的文件的名字一样“.ctl”和“.ctx”文件组合在一起定义了ActiveX控件的外观、属性、方法和事件在一个ActiveX控件工程被编译过后,控件类对应的文件扩展名为“.ocx”11控件类(续)每一个“.ctl”文件都定义了一个独立的控件类“.ocx”文件中包含了工程中所有的控件也即VisualBasic只为一个工程中所有控件创建一个“.ocx”文件12创建一个ActiveX控件第一步是创建一个“ActiveXControl”类型的工程这类工程中没有窗体只有一个UserControl对象这个对象和窗体类似,但是没有边界已有的控件可以象在标准窗体中一样把它们放置到UserControl对象中13创建一个ActiveX控件(续)14创建一个ActiveX控件(续)15创建一个ActiveX控件(续)控件的名称将用来标志这个ActiveX控件,控件的名称属性的缺省值是UserControl1BackStyle属性:–用来决定成员控件的背景是透明的还是不透明的–值为0表示透明–值为1表示不透明16属性(续)ToolBoxBitmap属性:–设置用来在工具箱中表示这个控件的位图–缺省情况下位图的大小是16x16象素–如果指定的位图的大小超过16x16,则会把它压缩到16x16象素–这个属性在运行时是不可访问的要注意的是一旦把多个控件组合起来创建为一个ActiveX控件之后,单个的成员控件的属性、方法和事件不再能被用户访问到17属性(续)如果想访问它们,必须通过添加自己定义的ActiveX控件的属性、方法和事件,并且把这些自定义的特征和成员控件的特征联系在一起18自定义属性自定义属性可以通过属性过程或是ActiveX控件向导来创建19使用ActiveX控件接口向导使用外接程序管理器把ActiveX控件接口向导添加到外接程序菜单列表中从外接程序管理器对话框中选中“VB6ActiveXControlInterfaceWizard”注意加载行为复选框中的加载/卸载选项是必须被选中的现在从外接程序菜单中选中ActiveX控件接口向导就可启动向导了该向导首先显示一个开始窗口20标准属性、方法和事件21ActiveX控件接口向导22映射自定义成员到控件23接口向导产生的代码24代码Dimcnn1AsADODB.ConnectionDimrsAsADODB.RecordsetPrivateSubCommand1Click()Ifrs!Username=UserControl1.UsernameThenIfrs!Password=UserControl1.PasswordThenUserControl1.Caption=“TheUsernameandThePasswordMatchExitSubElseUserControl1.Caption=“InvalidPasswordUserControl1.Username=EmptyUserControl1.Password=EmptyEndIfEndIfEndSub25代码(续)PrivateSubFormLoad()Setcnn1=NewADODB.Connectioncnn1.Provider=“Microsoft.Jet.OLEDB.3.51cnn1.OpenC:\ProgramFiles\MicrosoftVisualStudio&_\VB98\userdata.mdbSetrs=NewADODB.RecordsetSetrs.ActiveConnection=cnn1rs.Open“userpass,,,,adCmdTableEndSub26登录窗口27属性页VisualBasic在设计时提供了一个“属性页”窗口,通过它可以让我们看到控件所有的属性单击状态条控件的属性窗口中的自定义属性,就会弹出属性页窗口28状态条控件的属性页窗口29创建属性页VisualBasic提供了一个属性页向导来帮助我们为控件添加属性页通过外接程序管理器加载“VB6PropertyPageWizard”就可以使用这个向导了向导的第一页显示的是“添加属性页”窗口,它允许我们添加想在用户控件中使用的属性页30属性页向导31添加属性窗口32完成后的属性页33运行时的属性页34属性值向导为每一个属性产生一个PropertyLet和一个PropertyGet方法–PropertyLet方法任何时候用户改变属性的值时被调用–PropertyGet方法任何时候用户试图获得属性的值时被调用PublicPropertyGetUser_Password()AsStringUser_Password=Txt_Password(1).TextEndProperty35属性值(续)PublicPropertyLetUser_Password(ByValNew_User_PasswordAsString)Txt_Password(1).Text()=New_User_PasswordPropertyChangedUser_PasswordEndPropertyPropertyChangedPropertyName–PropertyName一个代表将要修改的属性的名字的字符串–PropertyChanged的唯一作用就是告诉客户端,应用程序ActiveX属性被修改了36PropertyBag对象用来在控件被撤销或重新创建时保存控件的属性的值自定义属性通过使用ReadProperties和WriteProperties事件来读取或写入PropertyBag对象这两个事件都以PropertyBag为参数37保存属性值WriteProperties事件–储存变动的属性值–这个事件是用来存储PropertyBag对象中的每个属性–语法:Subobject_WriteProperties(PropbagAsPropertyBag)–Object:用户控件的名称–Propbag:将要向它填写数据的PropertyBag类型的对象38保存属性值(续)在WriteProperties事件中,使用到PropertyBag对象的WriteProperty方法这个方法要求指定属性的名字、属性当前值和缺省值语法:object.WriteProperty(Name,Value,DefaultValue)Object:用户控件的名字39保存属性值(续)PrivateSubUserControl_WriteProperties(PropbagAsPropertyBag)PropBag.WriteProperty(“BorderStyle”,UserControl.BorderStyle,0)EndSub40获取属性值ReadProperties事件:–在控件被加载时触发–这样就可以通过它从PropertyBag对象中获取属性的有关信息–语法:Subobject_ReadProperties(PropbagAsPropertyBag)Object:用户控件的名字41获取属性值(续)在ReadProperties事件中使用到PropertyBag对象的ReadProperty方法它要求指定属性的名称和缺省值指定缺省值的原因是为了防止出现属性没有被保存的情况语法:object.ReadProperty(Name[,DefaultValue])42获取属性值(续)示例:PrivateSubUserControl_ReadProperties(PropBagAsPropertyBag)UserControl.BorderStyle=_PropBag.ReadProperty(“BorderStyle”,0)EndSub43InitProperties事件InitProperties在第一次创建控件的实例时发生。在这个事件中可以设置属性的初始值这里我们同样可以使用WriteProperties和ReadProperties事件中提供的缺省值已映射的属性已经被相应的成员控件初始化44InitProperties事件(续)只需要初始化那些没有映射到成员控件的属性语法:Subobject_InitProperties()object:用户控件的名称示例:DimbstyleAsBooleanPrivateSubUserControl_InitProperties()bstyle=0EndSub45使用ActiveX控件第一步是把ActiveX控件工程编译为一个“ocx”文件第二步是把这个控件加入到VisualBasic工具栏中,通过使用“工程”菜单中的“部件(component)”对话框来实现从对话框中选中这个控件并把它加入到VisualBasic工具栏中46工具栏中的用户控件47作为数据源的ActiveX控件只要在ActiveX控件中编写用于访问数据
本文标题:基于VB的桌面系统开发方案_T6
链接地址:https://www.777doc.com/doc-2572631 .html