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

利用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技术是一项很有前途的技术。它在不同的编程语言之间架起了一座桥梁,方便了编程者,扩展了各种编程语言的开发程序的能力。
初学编程者必知的五个网站 大数据基准测试专题论坛:基准测试是一把尚未完成的尺子 大数据应用(下):应用驱动技术,DaaS创造价值 大数据研究与发展专题论坛:大数据在各领域中的应用及发展策略 雅虎新目标:欲收购照片分享网站Imgur 移动开发工具访谈《近匠》第01期:七牛云存储—BaaS进化论 ShareSDK:A轮融资到位!将推社会化评论SDK 70美元,你也能用Raspberry Pi做个专属iBeacon基站 7个鲜为人知却超实用的PHP函数 从管理远程式团队和分布式团队中所获得的宝贵经验 Netflix开源数据流管理器Suro Google新创意:天花板加麦克风 人脑植芯片 苹果获弯曲屏新专利 可给手机弄个大波浪卷 真正的跨平台硬件测试:3DMark已打通PC、iOS、Android 将Chrome浏览器变成终端工具 【开源推荐】AllJoyn:打造全球物联网的通用开源框架 21张图带你走进Google数据中心 Snapchat C轮融资5000万美元 投资方是Coatue Management 又一个被谷歌寄生的平台,Chrome应用启动器现来到OS X上 雷军遇上刘德华:创业、艺术、移动互联网 为了抗衡Android,传微软开始考虑WP和WinRT免费 维护代码库的五个精华实践 微软发布安全补丁 IE11.0.2随之而来 Qt 5.2正式版发布 全面支持移动平台 如何节约手游制作成本?揭秘CocoStudio编辑器强悍功能 市场竞争白热化:三大云服务商上演双十二“三国杀” UCloud联手盛科实现SDN硬件应用 AWS,还有多远? Instagram推新私信功能Direct:支持照片、视频和文本信息 微软CEO鲍尔默最后一次受访:我的正确决定远远大于过错 中国创新碰撞硅谷思潮, 2013云世界大会定义云时代 刚刚学习ASP,请问在哪里可以下载ASP的资料!!!!! swing中哪个类可以用作ToolBar中的按钮? 要能显示图象的 template 怎样更改trichedit鼠标指针样式? 我正在寻求仿XP菜单的源代码或控件,不知道哪位高手有????(email:zhem8@yeah.net) 关于创建不规则窗口的问题,请一定帮忙。谢谢!我只有100分了~~~~~~~~~~~~~~! 用cdonts发邮件时为什么把附件发到了内容当中,都是乱码,应该怎么改? Coledatetime同oracle8中的date类型相同吗? 关于操作系统 怎样拦截某个控件的消息? 请问怎么不加lib档又可以编译做好的dll?? 请问DivX的使用 请问有谁研究过USB接口的驱动????? 简单问题:怎么给我满意的答复加分呢? 救命啊。。。 9行程序崩溃WIN2000/xp 太、太、太好了!连帮助都是中文的,还可以继承、多线程,盗版比正版还提前发布。 关于C++的构造函数的问题 初学java网络编程的问题 KYLIX如何连接ORACLE? 有全套的ERP源代码出售 俺的机子装了Linux现在想改装WindowNT,用NT分区格式化后,咋一启动就显示LI,然后就不动了。 我安装了win2000和redhat Linux7.2,要启动盘才能进入Linux,怎样能在启动时选择进入 pb6.5 + personal oracle 815 连接数据库数据库出错!!! 哪位用VC编写XML处理程序的大侠: 100分求购密码登陆jsp程序 vb如何让我Happy 请教:关于ODBC的密码? 使用log函数,应该import那个库 请问关于数据库存储过程调试的问题,急! 关于CPROPERTYSHEET 的一些小问题!! windows message的疑问? 这是什么问题啊!提示:select error:Data-conversion resulted in overflow. socket 一对多的问题 请教有关typedef的问题(菜鸟问题) 基于对话框的应用程序怎么操作数据库? Sybase数据库备份 谁有正版dotnet下载的ftp站点?有分啊!!! 公司的头交了一个任务给我,让我解决以前公司做的三层结构的效率问题,还请大家帮忙发表下意见,谢谢 如何得到当前的记录位置? 请问如何实现以下的数据分离(很简单的问题) 若干个思考 请问这句语句的执行过程是怎样的? 串口通信 应用程序在失去焦点时如和使之继续工作? HELP! 链接错误,救命啊!!!//LINK ERROR Can you help me ? 程序打包时如何配置 BDE 那块? 寻求帮助,熟悉类的朋友请进 在vb中怎样调用winsock的api函数?如调用ntohl函数。请各位大侠帮忙!谢谢! 我想做一个多层结构的数据库查询程序,请问sybase提供的中间键有什么 硫酸亚铁晶体制备三草酸合铁(3)酸钾,产率多少算高产率硫酸亚铁晶体制备三草酸合铁(3)酸钾,产率多少算高产率 既与盐酸又与氢氧化钠反应的金属单质 feso4·7h2o谁知道?feso4·7h2o式量是多少 在稀硫酸中,KMnO4和H2O2能发生氧化还原反应: 氧化反应:H2O2--2e==2H+ +O2↑还原反应:MnO4-+5e-+8H+=Mn2+ +4H2O(1)写出该氧化还原反应的化学方程式?(2)氧化剂?被氧化元素?(3)若有0.5molH2O2参加 哪种金属单质和氢气反应生成氢氧化钠 南半球面朝北方,对着北极点,地球自转,地球是按顺时针旋转自传呢,还是逆时针? 浓盐酸酸化过的KMNO4与H2O2反应,H2O2具有还原性吗? NaOH与可以与那些非金属单质反应 FeSO4·7H2O的相对原子质量为多少? 现有①KMnO4 ②H2 ③O2 ④Cl2 ⑤CO ⑥Al 六种物质,从氧化性,还原性的角度分类,若将常用的氧化剂放入甲中,常用的还原剂放入乙中.则:1.甲中有________;一种有_________.(填序号)2.由Fe—ⅰ—Fe3O4,Fe2 铁在什么样的水里会生锈 地球是何时,怎样开始自转?顺时针还是逆时针? 亚铁离子 溶液 是否稳定若不稳定,比如铁与盐酸反应后的溶液是浅绿色的,是否马上变成黄色? 请问铁遇水会生锈,那么铁锅中放入水炖肉,水会变成锈水吗? FeSO4·7H2O与酒精能反应吗 合成三草酸合铁过程中滴完过氧化氢为什么还要煮沸溶液 把一定铁粉放入氯化铁溶液中,完全反应后,所得溶液中铁离子和亚铁离子的浓度相等.则已反应的铁离子和未反应铁离子的物质的量之比是多少 铁放在水里会生锈吗?A,会 B,不会 三草酸合铁酸钾在双氧水过量的条件下加热会生成什么? 化学rt深红色固体. 将适量铁粉放入三氯化铁溶液中 完全反应后 溶液中铁离子和亚铁离子浓度相等 则已A2:3 B.3:2 C1:2 D 1:1则已反应的铁离子和未反应的铁离子的物质的量之比是? 三草酸合铁酸钾用途和意义 重结晶时,为什么溶剂不能太多,也不能太少?如何正确控制剂量. 将铜片放入0.1mol/L的氯化铁溶液中,反应后取出铜片,溶液中铁离子与亚铁离子浓度之比为2:3则铜离子与铁离子的物质的量之比为? 铁碰水会生锈么?我的手链是铁的、戴着整天会碰到水 我怕会生锈 、 请问会么? 我用乙醇作溶剂对2-氯烟酸粗品进行重结晶,冷却后晶体不易析出怎么办啊 浓盐水和饱和食盐水有区别吗 三草酸合铁酸钾的用途有哪些? 重结晶所用的溶剂为什么不能太多也不能太少如何正确控制溶剂量 含有亚铁离子的溶液是什么颜色? 为什么铁遇到水会生锈呢?有谁能告诉我为什么铁遇到水会生锈 三乙二酸合铁酸钾中三价铁离子与草酸根的配比怎么测定 三草酸合铁酸钾的保存 什么单质与NaOH反应 三草酸合铁酸钾的用途要具体点 氢氧化钠和金属单质反应 【电能转化为内能、化学能】的例子要比较典型的 内能和化学能属于一次能源吗 硝酸钾溶液中混有少量硫酸铜,如果只允许用一种试剂除去硫酸铜则这种试剂可以选用( ),反应的化学方程式是( ) 光可以转化为:电能、内能、化学能 , VL硫酸铁溶液中含有a克硫酸根离子,取此溶液0.5VL,用水稀释到2VL,则稀释后溶液中铁离子的物质量浓度? 除去硝酸钾溶液中混有的少量硫酸铜有两种方法:1)如果只用一种试剂除去硫酸铜,应选用适量 (写化学式);(2)如果用两种试剂来除去硫酸铜,则应选用适量 和 (写化学式). 空调内机出风口滴水,床在空调下面,睡觉时滴水滴到眼睛里了,这水有害、有腐蚀性吗?要不要到医院去看下眼睛?谢谢指教 下列能的转化中,属于化学能转化为内能的是()A.植物吸收太阳光进行光合作用B.电动机带动水泵抽水C.摩擦生热D.燃料燃烧时放热 欲去除硝酸钾中的硫酸铜 用两种试剂 地球自转自西向东,顺时针还是逆时针? 关于化学能和内能内能和化学能的含义和区别``光合作用将光能转化为化学能还是内能?`为什么`? 氯化钾溶液中混有少量的硫酸铜,可加什么试剂除去硫酸铜? NaOH与可以与哪些非金属单质反应硅酸钠跟CO2怎么反应啊 如何检测原煤中面煤的含量 天梭机械表防水50米能戴着洗澡吗 能和NAOH反应的金属有哪些 物质中铁含量怎么测试我们现在又一个物质,里面含铁约在30%左右.要测定其中的铁含量,准确度要在0.01%左右.关键是铁的存在状态不确定.请问用什么办法测定,ICP,原子吸收,比色法,或其他办法, 什么水有腐蚀性?为什么? 萝卜泡在盐水里为什么会缩小 以硫酸亚铁制三草酸合铁酸钾的好处 全能水对身体有没有腐蚀性? 如何生成FeSO4·7H2O?同题 设计实验鉴别水和食盐水(不能用尝) 影响注入水腐蚀性的主要原因 地球自转是顺时针还是逆时针?快
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘