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

VB如何在VB中使用Delphi的控件

HTML文档下载 WORD文档下载 PDF文档下载
VB如何在VB中使用Delphi的控件
作者:南京南自总厂开发中心 张玉洲
南京理工大学98研 王静
----   用过Delphi的编程爱好者们都知道,Delphi中Visual Component Library(VCL)中具有大量的组件,尤其是第三方设计的VCL,如Ahm系列,LMD系列,VenusPro等,在程序中适当的使用它们会让你的程序在界面上或者功能上增色不少,这让许多VB迷们馋的掉口水,因为毕竟免费的并且功能强大的ActiveX控件太少了,本文就是为那些到处找控件的VB迷写的。

----   为方便讲述,以Delphi4 中Samples 标签下的ColorGrid组件为例,描述如何将ColorGrid导出成ActiveX控件。

---- 1、打开delphi4,运行File- >New,弹出NewItems对话框,点取"ActiveX"标签,选择ActivexControl,选择"OK"

---- 2、在出现的ActiveX Control Wizard的对话框中,有如下选择:

---- VCL Class Name:选择要导出的或继承的VCL组件(注意非TwinControl继承的VCL不再列表中,之后再讨论),选择TColorGrid

---- New Activex Name:要导出的ActiveX控件名,取默认值ColorGridX即可

---- Implementation Unit:实现单元,取缺省名称

---- Project Name:创建的工程名,取缺省名称

---- Thread Model:线程模式,详看Delphi帮助,这里取默认值Apartment(单线程)

---- Include Design-Time License:是否包含使用许可信息

---- Include About Box:是否包含"About"对话框

---- Include Version Informaion:是否包含版本信息

---- 单击"OK",此时Delphi为我们创建了三个文件:

---- 库文件  ColorGridXControl1

---- 实现单元 ColorGridImpl1

---- 类型文件 ColorGridXControl1_TLB

---- 3、选择菜单Run->Register ActiveX Server,会出现注册成功的信息:

"Successfully Registered ActiveX Server,
'...\ColorGridControl1.ocx'"

---- 这里的ColorGridXControl1.ocx就是你所需要的颜色选取控件。
---- 现用VB6对其进行测试:

---- 1、新建一VB6工程,选取菜单"工程->部件",在出现的对话框中选中ColorGridXControl1 Library,选"确定"。

---- 2、在窗体Form1上放置控件ColorGridX,取默认名称"ColorGridX1"。

---- 3、如何利用它的属性和方法:以获得选取颜色为例,在它的OnClick事件中添加监视ColorGridX1,发现其属性Object返回对Delphi控件的引用,ForegroundColor属性值代表选中的颜色,虽然在"ColorGridX1.Object."后没有代码提示,但仍然可以用ColorGridX1.Object.ForegroundColor可得到颜色值。

---- 如果你想完善这个控件,在键入"ColorGridX1."后直接得到ForegroundColor的属性提示,那就必须手工在Delphi中为ColorGridX填加属性/方法,步骤如下:

---- 1、选中实现单元ColorGridImpl1,选菜单"Edit->Add To Interface",在出现的对话框中的Declaration填写"Property ForegroundColor:integer",选"OK",这时Delphi自动为你填加了两个过程框架:

procedure TColorGridX.Set_
ForeColor(Value: Integer);
function TColorGridX.Get_
ForeColor: Integer;
2、在Get_ForeColor中添加代码
result:=FDelphiControl.ForegroundColor;
由于ColorGrid的ForegroundColor
属性为只读,Set_ForeColor过程不用写了。

---- 3、编译执行,Run->Register ActiveX Server,会出现注册成功的信息。再到VB中,会发现控件ColorGridX新增了ForeColor属性,代表选中的颜色值。
---- 依此类推,可以增加其它有用的属性供VB等显式调用。用这种办法,可以把大多数由TWinControl继承下来的组件导出,那么非TWinControl的组件以及没有列出的组件怎么导出呢?且看下文。

----   前面提到创建ActiveX控件时,在ActiveX Control Wizard的对话框的VCLClassName下拉列表中找不到想导出的VCL组件,这是因为该组件不是由TwinControl继承下来的,属"Windowless"那一种,这时我们可以用ActiceForm的形式把它导出来,以第三方控件TColorPickerButton为例:

---- 1、选菜单"File->New",在出现的"New Items"对话框中选择"ActiveX"标签,选中ActiveXForm,选择"OK"

---- 2、在出现的"ActiveForm Wizard"的"New ActiveX Name"中填写输出的控件名"ColorPicker",选择"OK"

---- 3、在Delphi为我们创建的窗体上放置TColorPickerButton组件,名为"ColorPickerButton1",将窗体调整到合适大小,选菜单"Edit->Add To Interface",为它添加属性:Property SelectColor:integer,选择"OK"

---- 4、在Delphi提供的框架中写下类似代码:

---- 读取颜色:

function TColorPicker.Get_
SelectColor: Integer;
begin
result:=ColorPickerButton1.
SelectionColor;
end;
设置颜色:
procedure TColorPicker.Set_
SelectColor(Value: Integer);
begin
ColorPickerButton1.SelectionColor:=Value;
end;

---- 5、编译执行,Run->Register ActiveX Server,会得到注册成功的消息。
---- 6、用前面讲述的方法在VB6下实验,获得成功。

---- 关于添加属性的两点说明:

---- 1、原形为"Property {属性/方法名}:数值类型",其中数值类型有:WordBool、WideString、Integer等

---- 2、如果出现"SafeCall function Requires a HResult return type"的错误提示,说明你添加的属性/方法名已经存在,换个名字即可。

----   至此,我们已经成功导出了GridColor(属TWinControl继承类)和ColorPicker(属"Windowless"),写此文仅为抛砖引玉,还有许多功能强大的"For Delphi"的第三方控件的我们可以转化,提醒一点,并不是所有的VCL组件都能转成ActiveX,如Delphi的通用对话对话框。现在我们可以制作自己的ActiveX控件而不受限制了,最大的优点在于:强大&免费!现在,你也能利用自己导出的ActiveX控件用VB写出漂亮的程序来了,而且不用担心注册号之类的困绕! ^_^

SDCC 2013中国软件开发者大会成功落幕 新浪微博宋琦:PHP在微博优化中的“大显身手” 8月份浏览器份额:IE浏览器PC端出现反弹 移动端跌出前五 如何让Ruby项目速度提升10倍 跨平台进行到底:Facebook发布Unity SDK 云薪资管理初创公司ZenPayroll:年处理薪资超1亿美元,获多位知名CEO力挺 Twitter开源Summingbird:近原生编码下整合批处理与流处理 亚马逊推Matchbook 欲将顽固纸质书读者拉向电子书 Broadcom为可穿戴设备推新开发平台WICED 再战江湖 New Kodak还牛不牛? 郭理靖:公、私有云架构异同点与难点 美化代码的15个代码语法高亮工具 你所不知道的虚拟化和云计算 [开源推荐]Effeckt.css项目:CSS交互动画应用集锦 针对Google Glass应用的四大UX设计原则及典型应用 Google收了摩托罗拉,微软收了诺记,黑莓又将花落谁家? 十亿月PV网站秘诀:Reddit自失败中总结的25条经验 粉碎5个NoSQL流言:各司其职,NoSQL的出现比关系型更早 豌豆荚发力移动游戏平台,推出SDK 2.0 BlackBerry Jam Asia 2013即将在香港隆重召开,免费门票限量提供 小米发布会高潮迭起:米3、电视、Hugo大牛 谷歌放在Windows上的特洛伊木马:Chrome Apps应用平台 解析:Google基于数据驱动的招聘面试程序 决战“缓存”之巅:微软 vs. 亚马逊 雪中送炭:十大前沿移动应用开发工具 高通智能手表Toq都用到了哪些技术? 研发周报:修改一行SQL代码 性能提升了100倍 2013年NoSQL就业趋势分析 鲜为人知的静态、命令式编程语言——Nimrod 高性能Web应用打造攻略:扩展过程中20个最大的绊脚石 开源项目Marathon:让你的数据中心像谷歌一样运行 在线的各位高手,请问哪里可以下到SYBASE11.9.2安装程序? EJB-QL问题,怎么使用模糊查询LIKE? 请进 为什么我装了声卡驱动程序后,只能听到声音,却说不了话? rh9中用户目录下的.profile为什么不起作用? 我是专学PL/SQL编程的,但是我觉得这个不像是真正意义的编程! 大家进来看看吧! VC6下如何向Oracle中添加和读取BLOB型的数据? 一个关于Delphi6和Delphi7的问题 请问怎么知道C# MSDN 里的每一个类,每一个方法是做什么用的? 问题挺多的?请不吝赐教!都是小问题! 输入光标的移动问题 菜鸟请教:请问如何打包成jar和jad文件? 关于Oracle存储大量二进制数据的问题, 有武汉的朋友么! 加我qq 7095682 看完《美丽人生》 帮帮我 一条菜虫问一个很菜的问题? 当数据库中没有图片时候该怎么办 关于时间掩码? 问题挺多的?请不吝赐教!都是小问题! Turbo c一定要安装在win98下吗 如何修改存储器参数,我的表会越来越大,原来用默认参数 看了下面的帖子后我自己的一点感受 我怎样定位我的涉及DataReader的表格? 如何制做半透明窗体,上面的控件也要能控制是否透明。 我要转行了,也许CODEING只是爱好,要把它做为职业,惨,,, 请问大家能不能推荐一本关于PHOTOSHOP 7.0 DREAMWEAVE MX 的书籍 一个简单的图像序列化存储 EDIT1.TEXT从用户接受的内容如何放进ARR 设计数据库时这样的情况应该如何处理 CFileFind::FindFile()的查找路径是怎么确定的? 很菜的问题 关于red hat9的小问题 不知是程序写多了还是失恋的缘故!我头上有一块地方不长头发了,医生说是斑秃!不知程序员里有斑秃的吗? 一IT美女的悲惨遭遇◎! .net2003的编译器如何为类添加消息映射啊???? JAVA的文本编辑,实现修改和排版 Jmai发送邮件问题? 高分求c++ test 我成功配置了一备用数据库,与主库连上了,可是主库坏了,我怎么打不开备用库啊? (SDK)怎样用SendMessage函数反选一个checkButton control(checked->unchecked)呢? 求救,为什么关于VB的帮助的事例看不到? 有拒绝爱情的吗?我还在念大学 做一个不是很大的网站,是用类好,还是用模块的好? 如何对本地机的共享文件夹设置密码 一个讨厌的QQ木马网站如何防治,最好有人能黑了它! 谁写得有能随机生成数字和字母的函数,借来用用? 快速排序的问题。求救 使用 CDatabase 读写 excel 文件的问题。 水园的朋友们,你们好!!!学校的网页!!! how can I show the correct word? 有人说,母爱是涓涓细流,时时滋润着我们的心田:有人说,() they are twenty pounds all()填一个单词. 名胜古迹描写求一个写名胜古迹的文章,不要和其他人重复的文章(不要,例如:土冢..../虎丘./宝带桥./朱自清...)要抒情的文章,较好背的! 成语,南柯一()什么? 三年级写名胜古迹的内容 手摇电阻表多少钱啊 所谓的西伯利亚 v2 工包到底如何……想入此耳机 但是原装价格确实比较高 在TAOBAO上看到 工包大概都是300出头 没有声卡 包装等 卖家的说法都是有渠道 能弄到耳机 避开中间费用 所以价格很 手摇电阻表能电人吗? 西伯利亚v2好用吗? 手摇绝缘电阻表如何测试正常与否? executive compensation是什么意思 俄罗斯耄耋老汉赤手空拳勇战熊 被扔下德国驳斥美财政部批评 称德经济不存在伊朗推出首艘观光潜艇 完全由伊朗专家德国老人中奖1300万欧元 自称通过日本色情业历史(图)外媒:中国要美解释对华监听行为美媒:非洲或取代中国成为下一个世界工美媒:中国海军借反海盗行动获远洋经验美国毒贩修隧道铺轻轨快速运毒 通往墨湖南岳阳三姐弟上学途中遭绑架杀害 嫌苏格兰女法医揭秘连环凶杀案 数十桩悬小米魅族深耕线下市场,实体店大升级你客厅采光是如何决定了你家财气的你知道库里左脚踝受伤缺席训练 明日对阵老鹰名宿点评巴西铁腰:踢中卫可延长卢卡斯长株潭6月底前居民健康卡全覆盖国内汽柴油价格暂不调整长株潭城铁禁捕开始“民告官”案件相对集中管辖郴州试点最高罚3万元研讨“雷锋精神与创新”狼的诱惑终结版我的宝贝娇妻天风剑圣娘子怕怕命妖儿的传奇艳遇兄弟恋·我的大学魔刀丽影我们,我们·春光乍现战皇欲艳传汉代宫廷艳史射雕之全真第八子万绿湖游船旅游万绿湖旅游福源寺旅游农夫山泉生产基地旅游京北第一草原旅游大嶝小镇旅游菏泽天香公园旅游古今园旅游百花园旅游观花楼旅游曹州牡丹园旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘