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

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写出漂亮的程序来了,而且不用担心注册号之类的困绕! ^_^

九个相当有吸引力的WebGL演示 巨人网络朱永明谈运营:游戏就是社会的缩影 Dragon Forged创始人:不想当空军的开发者,不是好程序员 创业者应该怎样走出idea迷宫? TIOBE 2013年8月编程语言排行榜:Java领衔称霸 Gartner新报告:为改善风险管理,云服务合同需要更透明 没有银弹:探讨 Java 8 新增特性的优缺点 SDCC 2013议题更新 Pinterest架构实践、推荐系统、微信应用... 拥有82944个处理器的超级计算机 40分钟才能模拟一秒人脑活动 剑指IE10 最新测试版Chrome增加更多触摸屏功能 理性对待“云”——冲向“云”之前你需考虑的事 为Ruby On Rails开发者准备的5款IDE 一位开发人员的生日愿望清单 当“硅”已走到尽头,我们又该用什么去维系摩尔定律? 高端大气上档次 8位iOS顶级女程序媛 谁都可以做开发者:微软推出Windows Phone Web工具 Mozilla正式发布Firefox 23 新增混合内容拦截 网络监控功能 14条建议,使你的IT职业生涯更上一层楼 依托微信的电商产品实践——SDCC 2013讲师潘凡专访 IBM将向Google、英伟达等授权Power架构技术 人脑研究将推动下一代网络革命?从大爆炸到大收缩 H3C携手F5将“空转”数据中心变为“分布式数据中心” W3C小组发布Web存储API推荐标准 开发者必备的6款源码搜索引擎 闪亮登场:开发者制作图形图表所需的11款JS工具包 来自两位技术大牛的博弈:HBase或将制霸NoSQL? 应用改变世界 2013英特尔&#174;创新应用大赛火热开启 看13位CEO、创始人和高管如何提高工作效率 对首次购买智能手机用户而言,苹果吸引力并不大 Amazon Appstore面向Web应用开放 开发者可添加应用内付费功能 CSC收购成功转型的大数据初创公司InfoChimps 如何在英文字符集的客户端访问服务器为中文的数据库? 那4M是不是让诺基亚给偷了?! 如何调用ResetPrinter函数设置默认打印机 listview使用的问题 delphi的打包问题 请大家推荐一个短信网关 调查:当你身边响起神圣的国歌时,你会不会不由自主站起来,手放到胸前,跟着节奏一起唱起来?(有感而发) 请问如何调用.chm的帮助文件? 如何调用系统默认打印机的属性! 请教新手问题~~~麻烦哪为大侠给解释解释~谢~ 如何用struts实现阴阳色列表? 怎么用vb建立一个数据库呀?注意,不是一个表,是一个数据库! 如何调用系统默认打印机的属性! 一个很老很过时的数码相机。 郁闷,超级简单题目 初学ASP,请教学习心得 我的机器怎么老死机?? 两级表单动态联接?急,急,急!!!!!????? ---见了鬼了,Jre不好用!!!--- 寻求把中文字符串转换为十六进制的串的ORACLE函数? 电力学院惊魂 一條語句 數據庫日誌就寫滿了 怎样获得系统的字体!急!谢谢了! 谁有用java做的聊天系统程序(当作业)分不够可再给 在CB中如何动态的管理窗体 如何调用系统默认打印机的属性! API动态调用问题(很奇观) 好久没有发帖子了,现在心情奇好,兄弟们来接分! 在CB中如何动态的管理窗体 求C#网络编程书籍下载~ 简单问题,在线等待。可以在加分。 请教一题目! thanks sdany java 中能不能实现一个数字键盘 关于重定位 菜菜问题:让VB画出sin(x)和log(x)的函数图象怎么做?刚学VB的,x可以取任意的值! thanks sdy 模拟鼠标键???? 弱智问题,请原谅 我需要帮助~~~~!!!!! 请教:用LoadImage()载入的光标资源,当光标尺寸大于32*32时,显示不正常? cls 怎么用??? 请问<%=type2(RS("qi_type2"))%> 是什么意思? 招ASP程序员,工作地点杭州. ORACLE9i中的storage怎么不起作用了? 评评<<离散数学及其应用>>.我有些题目不会做呀.比如和费马小定理有关的.呵呵 谁能告诉我程序员考试是每年的什么时候啊?? 声音设备问题? 关于字符串输出 利用VB写SQL语句的问题(实现删除功能) 太岁灭城 晋中鬼事之二 (书雅) 二元一次方程组难题若方程组3x+5y=m+2 2x+3y=m的解x,y的和为2,求m^2-2m+1 三国时期的赵子龙是怎样死的?原因是什么? Garlic 大蒜有复数吗 一道关于二元一次方程组的问题!两个物体在周长等于400cm的圆上运动,如果同向运动,那么它们每隔20s相遇一次;如果相向运动,那么它们每隔10s相遇一次.求每个物体的速度.如果设两物体中移 一张长方形纸,宽是16厘米,长是宽的4倍,这个长方形的周长是多少厘米? garlic是什么意思 金属盒气压计为什么设计成波纹状? 什么叫波纹玻璃 失乐园,英语怎么写 最近不知是孩子上课没有听懂,还是课后作业太难,老是说题不会做? 波纹可以说成是怎么样的 请问“失乐园”的英文是什么? ABAC形的成语 论证 不想当元帅的士兵不是好士兵 唐伯虎的《桃花庵歌》的全译是什么? 写几个ABAC形的成语 如何理解拿破仑的不想当元帅的士兵不是好士兵? 唐寅的桃花庵歌赏析正常赏析+除了表现他超脱避世的方面,还能不能表现出他还是无法摆脱仕途的幻想之类的呢?他人笑我太疯癫,我笑他人看不穿真的是他看透了一切吗?还是他也看不穿呐?请 日环食太阳在哪边 新三国典韦哪集死的 日全食旁边光环叫什么 日环食时可以观察到得太阳大气层的太阳活动是什么日环食时明亮的部分太阳大气层的太阳活动是什么?日珥,耀斑,黑子还是太阳风暴?请说明理由,我估计搞清楚这个问题得先知道日环食时看 三国典韦怎么死的 日全食时为什么会有光环套住.就是圆的周围为什么会有亮光.圆环套住.按理说 是整个太阳被月亮遮住 应该 都没光的 怎么还有个圆环.就是被遮住的地区都没光的啊.还有太阳被遮住应该会挺 六年级上册英语书65页 let's check 在三国演义里,典韦是第几回死的? 水处理中树脂主要去除什么东西 上课都听得懂 这是为什么 三国演义中典韦在第几回死的?那回叫什么? 数学的本质是什么 辩论:不想当元帅的士兵不是好士兵正方:支持这个观点.反方:不支持这个观点正方反方的观点我都要,并说说两方所存在的弱点和较好辩论的地方.越多越好,讲好的有加分. 三国里典韦怎么死的 什么是数学本质 对不想当元帅的士兵不是好士兵的看法 求2010年世界杯主题曲《飘扬的旗帜(Wavin’Flag)》歌词及翻译?1楼,应该不是这个吧,听着不像 数学的本质是自由如何理解? It is clear that hamburgers are the most popular fast food with the high and average income groups之类with 可以用among 代替吗,有什么区别 英语翻译(All)]We patiently waitFor some other day(Fefe Dobson and Esthero)Thats too far away so right now we say[01:53.28](All)When I get olderI will be stronger]They'll call me freedomJust like a wavin flag(And then it goes back x3)Ahhho ahhho a 数学的规律是什么?数学的本质是什么? GROUPS怎么样 求英语达人翻译K'naand的 数学本质数学的本质? 身强力壮怎么造句 wavin flag中文是什么意思 I left school early yesterday ____ the weather got worse in the afternoon【填介词、副词或连词】 与“不想当元帅的士兵不是好士兵”相似的名言 室内设计上 九厘板外凸15mm是什么意思 easier said than done中的said和done为什么要用过去分词 有关 不想当元帅的士兵不是好士兵 的名言警句 简析《西风颂》 我想要一滴水,没想到您给我整个海洋;我想要一片云,没想到您给我整个蓝天;是哪首歌的词? 700字作文从 不想当元帅的士兵不是好士兵 说起 麻烦哪位帮我分析下西风颂第一段的修辞手法呢?. 滋润脊髓神经的液体叫什么? 三国演义赵云是怎么死的? garlic(大蒜)是可数名词还是不可数名词? afternoon是什么意思 三国中赵云是怎么死的?看了“见龙卸甲”发现子龙是战死的,但和书中写的不一样.哪个才对? garlic clove是什么? 天空中那美丽的(),常常引得我驻足观赏给“假”字换个偏旁,组成另外个字····谢谢 浙江今日起实时发布县级市AQI指数 北京着手“一日游”综合整治方案 拟建奥巴马叫停国安局对国际货币基金组织与广西岑溪炮竹厂爆炸致7死19伤 事故卫计委:加强医院内部治安管理 保障诊外交部:“东伊运”是中国最直接最现实韩劳工诉日企再获胜 获赔2.3亿韩元到2017年德国医疗保险账户将亏空1黎巴嫩支持召开叙利亚问题第二次日内瓦黎巴嫩支持召开叙利亚问题第二次日内瓦杭州火车东站地裂女子被卡 建设方称系杭州10岁女童遭“淫魔”猥亵 家长怒广西岑溪炮竹厂爆炸 已致7死19伤海军三大舰队西太平洋演习落幕 今后将北京局地达严重污染程度 “蓝天”只能蒙古国高校新增汉语教学点叙问题联合特使称日内瓦会议有望于数周刘奇葆会见朝鲜劳动新闻代表团以色列轰炸加沙致3人死亡印度烟花厂爆炸至少8人死亡浙江金华婺城区发生一起安全事故 致2杨幂刘恺威大婚罗德曼为金正恩庆生“合家欢”刮起邵氏电影风“国考”公开调剂补充面试人选本报代表队12胜9负帅哥担心照片不好看再跳摔倒了去年土地出让金超730亿同比增加五成近期目标:推动长三角区域2017年P一定要敢穿一定要不怕冷千万别错过!本周六 天一阁晒镇馆之宝真的年轻时我是个大美人!春运“头班车”昨夜开往贵阳91辆车出了事故基本排除真菌感染和环境污染专家倾向认温州下水道再次爆炸挡道老古树找到了好去处轨道交通1号线接驳换乘方案确定绍兴有家足浴厂想请你做形象代言人这里总有你需要的信息一车9个同事去上班三人遇难上百人想买箍桶足浴店想请老葛做代言人
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘