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

利用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技术是一项很有前途的技术。它在不同的编程语言之间架起了一座桥梁,方便了编程者,扩展了各种编程语言的开发程序的能力。
微软:Windows Phone开发者可回复用户评价 不断缩水后的微博上市首日大涨19% 曾一度涨超40% Snapdragon LLVM编译器全新升级 支持骁龙64位处理器 EDP:基于Node.JS与NPM的企业级开发平台 想改变世界,先改变自己——知名Hacker、发明家Mitch Altman专访 《近匠》iHealth,健康大数据助力硬件“破壳” 一周消息树:如何做到每天写代码? 一周热点:微软SQL Server 2014三大新特性 《Make》创始人Dale Dougherty:全民创客 DevOps正在扼杀程序员? OpenStack新版本:新增近350个功能,修复Bug超2900个 【走近讲师】易欢欢:数据对接和后台是互联网金融的技术最难点 最火HTML5 JavaScript游戏引擎:国外篇(二) 挑战最强大脑——来自全球的14个编码社区 摩尔定律让位于贝索斯定律 InPaaS:新一代云计算应用平台 【技术博客推荐】樊哲谈机器学习算法与Mahout Scala 2.11.0发布 仅支持Java 8部分功能 诺基亚彻底“卖身” 变“微软移动” 10款高效简化移动开发过程的工具 《近匠》AppCan:打造成云生态的移动PaaS平台 WhatsApp壮举:活跃用户超五亿、日7亿幅照片和1亿个视频 如期而至,GCC 4.9.0正式版发布! 【走近讲师】孙昌勋:容联云通讯构筑通讯能力云平台生态圈 最新版本的Hive 0.13发布,增加ACID特性 开发中的“软”与“硬”:高画质移动游戏开发之道 从国际编码竞赛来看编程语言受众度 AMD迎接变革:加速OpenCL的未来 角逐Hadoop市场,Cloudera与Hortonworks竞争白热化 OpenStack将提供对Docker的支持 Facebook Q1财报:营收25.02亿美元、59%来自于移动 二个简单Access问题 关于计算学生人数??? 二个简单Access问题 二个简单Access问题 二个简单Access问题 JBUILDER 6 FOR LINUX 的注册码谁有啊 VB中如何判断打印机的状态(空闲还是脱机等)? 难道没有高手了吗?为解决在Win32上MPEG-1视频流播放延时问题再次悬赏6000元人民币 关于Exp时候的4031错误? JBUILDER 6 FOR LINUX 的注册码谁有啊 谁会用safileup上传下载文件? 关于OCX控件的两个问题 数据库更新不成功的问题!(菜鸟高分提问!) 求助:多线程访问数据库的问题 触发器?很简单的 紧急求助???狂加分!!! 不相上班,怎么办呀?各位有何高招? 学习ATL的建议!!! 请问: 多个javabean怎么相互调用?如。。。。 二个简单Access问题 qq号码集合之增强版 这样的查询该怎样实现呢? 求:谁有立方体旋转的程序?需要源代码!谢谢,万分焦急!!!谢谢,100分送!!! 怎样实现这样的界面? 关于多线程中操作数据库 给一个c#连接sybase数据库的例子,谢谢! c#datagrid 增加,删除,修改 工作急需,help!!!!!!!!!!!!! 请哪位高手帮小弟做一个井字棋游戏作业,救小弟一命,感激投地并送以高分,我的信箱见内! Exchange2000的怪问题,请高手指教。 三层中的问题? datawindow加计算域或line的程序加在哪? 请问各位收邮件的程序采用的是什么组件??!!因为CFPOP,JMAIL在收中文附件时都会出现乱码。参与有分。 求助EXCEL解密 !!大送分99分! 请教JAVA中读一个文件的时候 怎么锁住它 不让别的程序来写 在ASP页面中怎样获得域用户的信息? 求助: 移值C++出问题 谁能解救我于水火???怎样解决循环运算次数太大造成程序死机的问题? 谁有delphi或bcb的简单的画图程序的源码 二个简单Access问题 Access不支持位运算吗? qq号码集合之增强版 递归函数的工作原理! 二个简单Access问题 如何在声音控制中将“全部静音(M)”选中,实现系统静音?在线等候! 韩国变性艺人河莉秀以“性感之枪”姿态攻陷香港 如何用javascript在客户端清空<input type=file>的value值?50分! qq号码集合之增强版 二个简单Access问题 谁有《Inside the c++ object model》中文名《深度探索c++物件模型》的电子版。 谁有《Inside the c++ object model》中文名《深度探索c++物件模型》的电子版。 宇宙黑洞的秘密 谜语,what can you never hold with your right hand? 水域生态系统中有多种多样的生物,其中属于生产者的是:A鲫鱼 B浮游动物 C水藻 D淤泥 关于神秘的黑洞黑洞的产生,蠕虫洞,黑洞真的是时空隧道吗?或关于宇宙的知识!地球会毁灭吗? 手机短信谜语有高手来猜吗?何水无鱼,何山无石,何书无枝,何子无父.何女无夫,何城无市,按序每打一个字连成一句很浪漫的话 水 无机盐 泥沙 水草 藻类 细菌 浮游动物 太阳 鱼 其能源来自?生产者有哪些 消费者是?写出一条食物链 在我们的生活中,存在不少浪费资源和污染环境的现象.就你所见的,发挥想象,写一篇关于保护环境的文章.急 2.下列有关世界气温分布规律的表述中正确的是 A.从低纬度向南北两极逐渐降低 B.夏季,同2.下列有关世界气温分布规律的表述中正确的是 A.从低纬度向南北两极逐渐降低 B.夏季,同纬度的陆 某池塘生态系统的一条食物链:浮游植物→浮游动物→鱼→水鸟.假如水鸟只能依靠吃鱼增加体 索马里暖流的成因同上 南北两极气温趋势画画图也行, 高一生物(基因频率的计算)某植物种群中,AA个体占16%,aa个体占36%,该种群随机交配产生的后代中AA个体百分比,A基因频率和自交产生的后代中AA个体百分比、A基因频率的变化依次为:A增大,不 帮忙猜下谜语用心载着你,不舍上轻舟,已然不言中,双人日下行,飞鸟离鹅去,马口解猜疑.(每句猜一字,连成一句问候语.)主要准确. 60年来,祖国的成就与变化写作文用的材料! 如果在一个种群中,AA比例占1/3,Aa比例占2/3,已知道aa在幼龄阶段死亡,请问种群随即交配一带后,子代成熟个体种群中a的基因频率为( ) 索马里暖流形成原因? 祖国60年来变化(祖国以前的事与现在的成就)地下城与勇士有天界吗?如何去? 色盲基因出现的频率为7%,一个正常男性与一个无血缘关系的女性结婚,子代患色盲的可能性是A 7/200 B 7/400 C 8/400 D 13/400或 1/400 请猜下谜语,并告诉答案, 祖国变化、成就祖国的变化、成就,谢谢 初中地理课本上海预初地理课本绪论里有个图,是几个人在海边拉绳子的是什么人?---------------------------课本上有,应该是福建那一带的人 请教索马里暖流的成因已经知道索马里寒流的成因了,只是不明白暖流是怎么形成的,海水不是从高纬流向低纬吗?为什么是暖流呢? 有两种烃,它们均含碳92.3%,氢7.7%,A的密度为1.16克/升,B对氢气的相对密度为39,A可使高锰酸钾酸液褪色,B却不能.求它们的分子式,并说明是甚麼物质. 探究 培养液中酵母菌种群数量的变化人教版生物书 必修三 68-69页 实验请大家给我讲讲:酵母菌的数量变化应该满足什么规律,图像大致怎样? 请大家帮帮我猜下这个字谜 祖国60年来的变化军事:教育:政治: 请问:初中地理课本中“世界之最”的有 索马里那里为什么冬季是暖流,从高纬流向低纬的 高高个子身穿青,脸儿喜皇笑迎迎,结果好像中秋夜,圆儿里面藏星星. 什么鱼吃水中的绿藻?鱼池水中绿藻繁殖很快,想养些专以绿藻为生的鱼来遏制它, 生物在生存和发展中不断什么环境? 邹忌讽齐王纳谏1下列朗读停顿标注有误的一项是【 】A臣\诚知\不如徐公美.B群臣吏民\能面刺寡人\之过者,受\上赏.C四境之内\莫不\有求于王.D此\所谓\战胜于朝廷.2下列句中加点 种群的基因频率总是不断变化的,物种的基因频率总保持不变,这句话哪儿错了? 只有在新物种形成时,才发生基因频率的改变.这句话为什么错 《邹忌讽齐王纳谏》有几篇 自然选择可以定向改变种群的基因频率 因而可能导致新物种的形成这句话为什么是错的 种群基因频率的定向改变是形成新物种的前提基因频率怎么会定向改变那? 邹忌讽齐王纳谏 急⑴ 邹忌讽齐王纳谏选自《 》它是战国时游说之士的_____和______的汇编.⑵ 邹忌讽齐王纳谏的作者是______,_______时______国人. 一个种群中,控制一对相对性状的各种基因频率的改变说明物种在不断进化 考试时填厄加勒斯暖流好还是马达加斯加岛暖流好 进化,新物种产生和基因频率改变分别有什么关系 关于《邹忌讽齐王纳谏》在《邹忌讽齐王纳谏》中,邹忌从3各方面劝说.为什么要从3各方面劝说?有什么目的? 请问:地理中厄加勒斯暖流按性质分是什么洋流? 新物种形成的过程就是种群基因频率定向改变的过程对不对 怎样用手机gps 黑洞的秘密有谁可以解答? 历史的选择—纪念中国共产党成立90周年 手机上怎样才有GPS啊? 为什么莫桑比克暖流没有使沿岸成为热带雨林气候? 反映祖国取得新成就的新闻50~100字最好,最好是写奥运会的,好的追加悬赏越快越好,半小时内的我再增加悬赏20 手机gps如何定位 什么是黑洞神秘的黑洞 反应祖国取得新成就的新闻 山东教育出版社高中地理课本必修一主要是什么地理如题另外,那一册是人文地理呢? 三个暖流的区别厄家勒斯暖流,马达加斯加暖流,莫桑比克暖流地理位置相近,如何更细致区分呢? 2009年祖国取得了哪些成就谢! 从哪里可以买到湖南教育出版社的初中地理课本啊? 黑洞秘密黑洞 长什么样子?请听我说完 ... 如果把量子引力和爱因斯坦相对论结合 计算出来的方程式将会崩溃 如果这个崩溃的数字就存在我们现实中的自然世界呢? 那么想像一下黑洞是什么 那个 木是左边那一丿上有个数字3 现在都在呼吁低碳生活,但塑料似乎带来了很多的麻烦,塑料会不会淡出我们的生活?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘