说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用VB5开发ActiveX控件

HTML文档下载 WORD文档下载 PDF文档下载
利用VB5开发ActiveX控件

我们可以利用Visual C++ 4.0来开发自己的ActiveX控件,但是开发比较复杂。微软新发表的Visual Basic 5.0是一个极好的开发工具。过去我们使用VB4就已经觉得相当不错,新的VB5则在技术上变得更加完善,现在一般的程序员也能利用VB5开发各种ActiveX程序,包括Active.EXE,Active.DLL,Active Control以及Active Document。

一、利用VB5开发ActiveX控件的实例

假设我们要设计这样一个控件,它包含一个Label控件和一个Picture控件,但在同一时间两者只显示一个:即当Label显示时,它显示的是图像的文件名,Picture不显示;当Picture显示时,它显示的是图像的内容,Label不显示。通过鼠标的单击操作在两者之间切换。这个控件的好处是在显示包含有图像的文本文件时简洁明了,能充分地利用显示区域。

制作这个控件我们需要使用VB中的常用控件Label和Picture,要给它赋予一个Caption的属性,还要自己编制一个Click事件的过程函数。具体的开发过程如下。

1.运行VB5,在File菜单中选择New Project建立一个新的项目,这时会弹出一个New Pro ject对话框,与VB4只有一种项目类型不同的是,VB5的项目类型有很多种,在此我们选择ActiveX Control类型。

这时在Project Explorer窗口出现了一个Project1的项目,其中的User Controls中已包含有一个User Control1的控件。可以在Properties窗口里去修改User Control1的有关属性,如Name等。

为了调试的方便,我们可以在File菜单中选Add a Project,建立一个Standard Exe类型的Project和刚才的Project1一起形成一个Project Group,本文中省略相关步骤。

2.双击Project Explorer窗口中User Control1把它激活,然后从工具箱中把Label控和Picture控件添加到设计窗口当中。在进行控件设计时,Resize事件是一个相当重要的事件,它既发生在窗体设计时,也可以在程序运行时被执行,以控制控件的大小,我们把以下程序段加入到User Control1的代码窗口当中:

Private Sub UserControl-Resize()

Label1.Move 0,0, Scale Width, ScaleHeight

Picture1.Move 0,0, Scale Width, ScaleHeight

End Sub

3.然后我们要给这个ActiveX控件加一个Caption属性。打开Tools菜单,单击AddProce dure,在随后出现的对话框中设置Name为Caption,单击Property和Public项后再单击OK。

在代码窗口中加入以下有关代码:

Public Property Get Caption() As String

Caption=Label11.Caption

End Property

Public Property Let Caption(ByVal NewCaption As String)

Label1.Caption=NewCaption

PropertyChanged "Caption"

End Property

Private Sub UserControl-InitProperties()

Caption=Extender.Name

End Sub

Private Sub UserControl-ReadProperties(ProBag As PropertyBag)

Caption=PropBag.ReadProperty("Caption", Extender.Name)

Set Picture1.Picture=LoadPicture(Caption)

End Sub

Private Sub UserControl-WriteProperties(PropBag as PropertyBag)

PropBag.WriteProperty "Caption",Caption,Extender.Name

End Sub

4.有了控件的属性,下面我们就要为这个控件编写事件过程,本文的例子较为简单,只写一个Click事件过程。

先激活User Control1的代码窗口,为了避免变量名称及事件名称与其他事件过程或是子程序的名称发生冲突,我们把以下代码加入到Declarations当中去:

Option Explicit

Public Event Click()

然后选择Label1,加入以下代码:

Private Sub Label1-Click()

Label1.Visible=False

Picture1.Visible=True

RaiseEvent Click

End Sub

再选择Picture1,加入以下代码:

Private Sub Picture1-Click()

Picture1.Visible=False

Label1.Visible=True

RaiseEvent Click

End Sub

这样,我们就已经编制好了一个简单的ActiveX控件,可以在其他支持ActiveX技术的软件当中使用这个控件了。使用这个控件时,先给它赋予Caption属性,即输入图形文件的完整的文件名,它就显示这个文件名,当鼠标单击它时,它就把图形内容显示出来,以后再单击时,则依次在这两者之间切换。

  二、ActiveX控件的运用

运用ActiveX控件的第一步是编译当前的项目以生成OCX文件。打开File菜单,选择Make User Control1.ocx项,经过编译之后,在当前目录下就生成文件User Control1.ocx,为了使用的方便,我们最好把这个文件拷贝到WIN95\SYSTEM目录下。

1.ActiveX控件在VB5中的运用

我们生成的ActiveX控件可以在VB5程序设计中像其他常用控件一样使用,例如:

(1)打开File菜单,选择建立一个新的Standard.Exe类型的Project。

(2)打开Project菜单,单击Component,在随后弹出的对话框中的Control项中找到我们刚才编制的User Control1控件,选中并单击OK。

(3)在工具箱里可以看到已多了一个新的ActiveX控件,这时就可以像使用其他控件一样地使用它了。但不要忘记设置好控件的Caption属性。

2.ActiveX控件在Visual FoxPro 5.0中的运用

在VB5中编写的ActiveX控件也可以在其他支持ActiveX技术的软件当中使用。同样是微软公司产品的Visual FoxPro在其新发表的5.0版本中开始支持ActiveX技术。Visual FoxPro在数据库技术方面功能十分强大,但进行某些界面的程序设计时,不能使人感到得心应手。

利用ActiveX技术,我们可以把两者的长处结合起来,在两者之间取长补短。假如我们要在Visual FoxPro中使用刚才编制的User Control1控件,具体过程如下。

(1)在Tools菜单中选Option项。在随后弹出的对话框中,选Control项,再在其中选ActiveX Control,然后在列表框中找到我们刚才编写的User Control1控件,选中并单击OK。

(2)在File菜单中选择建立一个New From。

(3)打开Form Control Toolbox,这时一般出现的是一些常用控件,如Label, Textbox等。我们单击其中的View Classes图标,选择ActiveX Control项,就可以看到包括User Contr ol1控件在内的诸多ActiveX控件。

(4)单击User Control1控件放置在窗体设计器中,并在Properties窗口里设置好其Caption属性,就可以像使用其他常用控件那样使用我们自己编制的ActiveX控件了。 从以上实例可以看到,ActiveX技术是一项很有前途的技术。它在不同的编程语言之间架起了一座桥梁,方便了编程者,扩展了各种编程语言的开发程序的能力。
TUP第31期报名已满 向主讲人《浪潮之巅》吴军提问征集 对话Spark核心作者Ion Stoica:我的编程之路从2KB内存开始 埃洛普出局?微软董事会称Mulally、Satya有望是下任CEO 百度开源平台上线,聚合百度开源项目 盘点TOP500:值得关注的超算,及当下趋势 【BDTC讲师】Tachyon作者:大数据存储以及处理框架经验分享 进一步称霸中国:低端设备让Android在中国每季获3%增长 低端设备撑起Windows Phone市场份额 研发周报:你的数据库准备好过冬了吗 JVM垃圾收集器使用调查:CMS最受欢迎 技术创业不能一味追求“骨感”,必要时丰富自己的5个途径 帷千动媒副总经理兰旭:整合现在,梳理未来! 11月份浏览器份额:IE继续上涨,Chrome仍不温不火 Windows 8令人担忧:8和8.1两版本份额目前仅有9.3% 一周消息树:微软还需更激进的手段——开放Windows Phone 【开源推荐】Genome.js:当DNA遇到开源 Go 1.2发布 着重语言特性的改进 微软资深IE专家邹颂兵:好产品才是竞争的关键 Web应用程序完全测试指南 Python正在取代R,成为数据科学界新宠 代号Threshold:微软将推Windows统一平台Threshold 日本任天堂掌机应用:《卢浮宫》革了谁的命? [TUP第31期]《浪潮之巅》吴军:硅谷3.0助力中国企业走向国际 SequoiaDB创始人:比MongoDB领先一到两年 打造企业级NoSQL数据库 [对话CTO]甲骨文熊光樑:全球研发模式开发出接地气产品 GitHub中国游记之长城——跨越那堵看不见的墙 IE11开发人员工具:UI响应工具详解 2013 Linux领域年终盘点 腾讯云俱乐部深圳站成功落幕 开创移动开发新篇章 解读云计算、大数据、物联网等九大IT技术发展趋势 苹果已证实收购Topsy或将涉足社交领域 我们单位要上ERP,作为公司分管微机这一块的我该准备些什么? 右键菜单问题 d7+ADO+SQL2000,如何判断SQL2000数据库中存在某个表? 想要去清华读研究生,大家帮忙出出意见!!!!!!!!!!!!!!!!!!!!!!!! 大价钱求解小问题 好硕的5460!!!! iwantsay 关于MSComm的output和Chr()函数的问题 好久没来这里了这里的朋友们还在吗? 如何在TreeView的节点中调用一个方法? 关于deploytools 一个有关代理文件操作的问题,困扰很久了!! 如何由资源ID得到资源的句柄 向oracle 中插入纪录,日期格式由问题,见内 查询问题 如何取消验证 关于asp打印的一些设置的请教 dbgrid显示不同小数位数问题 关于用nmudp实现传输!up也有分,:)) 我在WSAD5.0中创建的WAS 5.0Server 为什么总是启动出错???请各位高手指点!!! 关于Apache+mysql 100分求《设计模式-可复用面向对象软件的基础》电子书! 向oracle 中插入纪录,日期格式由问题,见内 在线等候 在企业管理器里附加了一数据库,显示为readonly,为什么!!!! 就要实习了,不知哪些公司比较乐意接受实习生呢 急!!请问如何在WEB自定义控件中响应事件? 本人最近写了一个服务器端文件管理的程序,基本的功能都已经实现,但是下载的功能还是不行,欢迎大家讨论实现。 奇怪的comboBox的数据绑定问题! 为什么不能把记录成批插入到表中? 在VC中操作access:update的where子句中用"and"组织成多个表达式时出错! 在线等候 怎么将数据库中的字段项动态的添加到COMBOX里面去。(我用的是DB2数据库) sql关于多个数据库的问题 散分了! 我也散点分吧 有些话不吐不快!看某不知来历的版主下台后发贴有感 不知道是怎么回事,难道是显示器坏了? 启动windowns2000报错"no language support detected",请问怎么解决? WIN ME下怎么调试 ASP? oracle 存储过程代码格式优化 大家看过《ASP.NET完全手册》这本书吗?为什么书中提供的与书想配的站点http://www.prosetech.com/CompleteReference/不可访问呢? 紧急求救:如何根据数据库中的值以红色字体显示datagrid中的满足条件特定列特定行? 能不能实现用NOTES databse打开一个website(公司内部的),同时这个database自动关闭?? 用pear的进来报个名,以后互相学习~ VB.NET的两个简单问题??? not enough free disk space on /tmp,这个问题如何解决,(100分) 急寻:中缀和后缀表达式互转的源代码。 请问这个页面如何实现的..... 简单问题,在线等待中... 百分求购事务处理!! 用ATL写了一个com组件,在客户端怎么调用它呢? 他的书包里有什么.英翻 英语好的同志们帮一下 汉翻英 1.谁在房间里.2.我是七年级的学生 3.他们的书包在书橱里4.你ide爸爸几点去上班?5.Lily和Lucy有一个大房间6.你想买一条蓝色的短裤吗?不,我不想7.他的叔叔认为记 chance和possibility用法有什么区别啊 我的大包翻英文 Angel-Ran什么意思就是在柯南吧里大家都说Angel-Ran 也不知道是什么意思 所以想问下 看看计算是不是出错了..正负号问题. 美国电影 桥上的大巴在等修桥工人放行车,车里有人预感桥要塌陷,结果真的桥塌了,什么电影?电影名字? 七子之歌 台湾 这首诗歌包含着怎样的感情? 如图,角A=角B=90度、AC=BD,求证:AD=BC fred什么意思 Fred Perry中文是什么意思?Fred Perry翻译成中文是什么意思来的?指教! 早恋小情人偷尝禁果 1男孩被判强奸坐日本明仁天皇夫妇将首次访印 前首相森泰国代孕黑市剥削孕母 酬劳低至5.8韩国有望于2015年实现医生对患者远中国3名实习生因多次伪造在留卡 在日日本明仁天皇夫妇将首次访印 前首相森学生用400年前地图合成3D游戏 重强风暴袭击欧洲多国 致海陆空交通全部尼泊尔大选首次准许“第三性”公民拥有网友质疑延迟退休因养老金缺口 南京人索马里政府称无人机击毙“青年党”高级英国大选流行玩自拍 各政党领袖争相与地煞星七星杀法攻略 七星地理位置分享投资一个女神需要多少钱?这里有一个账最奇葩的育儿陋习,看看你做了没?BANDAI 万代 海贼王 乔巴合体7家金融机构当通道 恒丰银行37亿碰美女人物抗性分析及种族升级抗性知多少7家金融机构当通道 恒丰银行37亿女子吃排卵药怀9胞胎 排卵药或被滥用时尚杂志大赏之母亲节特别放送
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘