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

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

R语言为Hadoop注入统计血脉 海外游戏市场:Google与“开心农场”谈破局 2014年2月操作系统份额:Windows仍在增长 Win 7以47.31%稳居第一 2014年2月份浏览器份额:IE 8仍全球最受欢迎,Firefox跌破18%大关 跨平台2D游戏引擎V-Play:3天开发一款原生游戏 Appery.io:无编程经验,自己也能DIY移动应用 SAP携手Xamarin和Service2Media 提供移动应用开发框架 8个超实用的jQuery技巧攻略 美国国防部战略:大规模、分布式,构建数字化防御体系 针对小白的Python入门教程——Python使用说明书 耗资460亿美元,天价Olympic上广受诟病的监控和4G LSI AIS ASIA首次登陆中国 探讨最新大数据技术 “iOS in the Car”问世 苹果发布集成汽车服务CarPlay Pinterest联合创始人Evan Sharp:视觉网站标配“网格布局”的设计过程 微软Xbox Live或登陆iOS和Android平台 TIOBE 2014年3月编程语言排行榜:F#直逼Top10 Atlassian面向企业客户推出Git Essentials工具 Mt.Gox破产,都是错误编程惹的祸 Jamo创始人揭底AWS,棱镜阴影下的云行业态势 成本、创新、可靠:游戏公司FunPlus选择AWS的三大理由 全透明、可折叠,平板电脑概念机是这样的 插件大集合!开源包管理器Alcatraz迎来Xcode 5更新 Q语言:新型的数据定义语言 非响应式手机网站页面的优化 高薪必备:Hadoop求职者的6大攻略 微软或将于四月发布“返璞归真”的Windows 8.1 Update 1 《近匠》第14期:LiveCode——全民开发工具 美团梁堰波:用SQL-on-Hadoop构建互联网数据仓库与商务智能系统 程序员游戏Style:亚特兰大极客使用机器学习玩转Flappy Bird Gleasy CTO薛珂:成立3年,企业用户2万+,移动办公蕴藏较大发展机遇 Unity Awards展区“点亮”Unity亚洲开发者大会 求教一个简单的问题。关于打包。 在线等。在线等 关于函数 ASP.NET中操作EXCEL,为何添加操作可象操作ACCESS一样没问题,而删除和更改操作却出错?100*n分for your answer 求助:如何调出linux下kppp源代码? www.clpclub.com是不是不能上了? 如何制作登陆窗口? 关于中大型网站如何应用软件工程的问题 求救高手,如何使双硬盘同步写 请问怎样在用户点击(s)后将用户点击的软件自动安装到用户(c)的机器上 请问如何用网站提供的搜索引擎,知道查找关键字,我用的是WebBrowser1,100分呀 tomacat的配置问题?急 学过严蔚敏的〈数据结构(C语言版)〉的请进! 开发过nokia上运行程序的朋友,请进来,本人遇到一个非常麻烦的问题,欢迎各位赐教. 如何从字符串中提取单词? 谁知道那里有longhorn下载??? 100分请教实现播放列表的思路? 有关图形化公交车线路的问题!! 关于网站软件工程的问题 我的sqlserver 2000 在安装的时竟然说什么不支持??? 免费ASP空间申请 有关用Firework作网页模板的问题-急! 大虾请指点~~!!~~ 如何固定游戏中的分辨率? 今天见到了蓝心MM,估计她是CSDN有史以来最PL的MM。 也来贴一篇!!!送给大学毕业几年的哥们!(转) 急:关于weblogic的控制台 ? 请问各位:哪里有好的javascript的教程? 小问题 请问在哪里可以找到监控局域网的网络流量的工具,不够再加? 免费ASP空间申请 白羊座的进来领分,水园里白羊座好像很少。。。。 ie无法编译jsp? 300分!求《程序员增值合订本》上册中的"完全掌握TCppWebBrowser控件"内容! Google搜索从入门到精通(散分) 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 由于工作需要,将要转到Linux平台,请问那位知道有什么好的SQL Client在Linux下? 你是怎么过的?CSDN无高人?:( 找asp.net入门经典!一定是C#写的!!!在线等! 菜鸟的关于DataGrid的问题 资源管理器中选中的多个文件怎样传给我的程序 什么是“三层数据库”和“嵌入式软件系统”? 什么是“三层数据库”和“嵌入式软件系统”? 类似"hello world"的简单问题,求教 免费ASP空间申请,支持ACCESS 事件的终止? 数据追加求教:谢谢您!!!! 请问InputBox在framework 类库里面有没有代替的阿? 为什么我写到文件中的字符总长度比我实际应该要写的多? 如何使dbctrlgrid多选,并使鼠标右击相当于鼠标左击 关于静态IP地址,急!!! 请问英语三级没过的人考四级好吗? 有十五字的拟人句用蜜蜂 发光强度(光度)的含义是什么? 问第四第六两个小题最准确的说法(关于符号2的意义),一定要确认准确. 除去括号中的少量杂质气体可用NaOH固体的是 ( )A.co2(co) B.o2(so2) C.H2(NH3) D.co2(hci)并说明下、 市场上什么样的纯牛奶最安全 有一首歌叫walking in the air,歌名什么意思?有谁能告诉我,on the air ,in the air ,on air ,in air都是什么意思啊?最好有例句,谢谢,追加 帮忙打出几个字3QRT 请问b选项和d选项. walking in the sky是谁唱的? 用“被”字造拟人句 高二生物D选项哪里错了 CaCO3 与 NaCO3那个热稳定性更好 (釜)字怎么发音拜托各位了 3Q 高二生物37的b选项为什么是错误的!无法理解T^T 1摩尔每升氯化钡溶液中各离子的浓度怎么算 我呆的地方比较冷.你们可知道那种电器发的光度.又高.又热.光度又远.知道的说一下. 世界上亮度最低的地方观赏星星最佳的地方,不受光污染,星星亮度最高 英语翻译I wait inside ,I was not myselfI was fool inside and eling form You stand outside ,your hand on my shoulderbut this moment that day between usI walk walk along no matter whether people know at allI walk walk along and keep my sad that in NaCO3 为什么是碳酸钙 显示屏是飞利浦190V的,发觉显示屏亮度太亮了,很刺眼,要怎么调暗一点, 氨的氧化反应为什么是放热反应 如何计算1mol/L氯化钡溶液中各离子的浓度? 明度与亮度的区别请问明度与亮度的具体区别是什么?据我所知,明度分为9阶,那具体的数值是什么?而亮度是0~255,具体的数值单位又是什么? c语言中解决一行电文中将第一个字母变成第26个字母,第i个字母变成第26-i+1个字母,非字母不变.要求编程序将密码译回原文,并输出密码和原文.A-Z a-zB-Y b-y. 1摩尔氯化钡含有3摩尔离子对吗? 光度,视亮度.各是什么,.它们各是什么定义.它、们之间好像可以互算的,怎么算,.越详细越好, 氧化镁为什么慢慢溶解于水中 锐利什么意思? 请问一下知道了分光度之类的要怎么计算呢 c#怎样生成 随机字母 锋利、锐利的反义词是什么?所要的答案要在词典上查得到的双音词,请说明哪一部词典. 化学反应工程的研究内容 怎样在那随机生成的22位数字加字母中,让字母只出现6个,其他的都是数字, (武器丶言语等)锋利;锐利这个是什么意思 [Co(en)2Cl2]Cl中心离子的电荷及配位数 英文字母是怎么产生的? 锐利是什么意思急!急! 化学命名[CO(en)2cl2]cl命名,中心离子,配位体那配位数是几阿 PINK的歌曲glitter in the air中文歌词就是她今年在格莱美上唱的那个歌 色彩锐利,锐利什么含义 化学反应工程开发中需要手机哪些数据?细致一点,答得好加分... 求生物必修一所涉及的所有染色用的试剂和产生的反应甲基绿吡罗红双缩脲试剂苏丹Ⅲ苏丹Ⅳ斐林试剂龙胆紫健那绿我写了一部分,请帮我补充完整 35字的拟人句列:家就像根,永远是树叶的家;家就像红布条,永远系着游子的心,家就像大衣一件,不会提高温度,但却给予人们连火炉都不能替代的温暖. 初三比较重要的化学方程式 英文字母是如何产生的? 7R 是什么意思? Pt(NH3)2Cl2的同分异构体,可溶于水,可治疗癌症结构简式是什么?为什么呢? 使用要后细菌抗药性提升怎么能算是自然选择的结果?是人造成的吧? 锋利是什么意思? “消光度”的定义是什么? 抗生药对病菌具有选择作用,使抗药性病菌的输了增加.这句话为什么错哟? 锋利的意思是什么如题 Pt(NH3)2Cl2 中心离子是Pt2+,配位体是NH3和Cl-,它有顺式和反式两种异构体.如图为什么cl-也是配位体而不提供孤电子对 皮革专用金属络合染料跟金属络合染料有什么区别 锋利无比是什么意思 “黑亮度”的定义 英语三级没过的人考四级好吗? 17题.详解. 什么是烛光亮度?定义是什么? 中国房地产商在澳投资“风生水起”浙商二代展开青春对话 宗馥莉称不努力调查指:中国20年“农转非”比例仅增第九届两岸经贸文化论坛在广西南宁闭幕浙江力推“国民共进” 促“国字号”“长三角“绿色制药”协同创新中心:让百教师因婆婆不拆迁调岗至拆迁部 称曾被跨国公司巨头和学者会聚上海探讨城市“马尼拉市长最快下月底赴香港道歉 或赔上海自贸区满月在即 创新运行框架基本韩正:上海自贸区将适时引入第三方评估安倍再次表示推进探讨行使集体自卫权阿根廷学者认为克里斯蒂娜连任机会渺茫学者称克里斯蒂娜连任机会渺茫 应加强阿根廷学者认为克里斯蒂娜连任机会渺茫中央气象台发霾黄色预警 京津等局地或阿根廷学者认为克里斯蒂娜连任机会渺茫伊拉克北部摩苏尔发生自杀式汽车炸弹袭印度东北部城市发生连环爆炸5人死亡“双年展专业户”卢昊:城市化进程使多浙台经贸合作平台发展规划首次发布“太极进银行”是一则“公益广告”2010年9月1日以后上户都可享受“中央档案馆公布日本战犯鹿毛繁太侵华罪牵线搭桥以商招商 引凤筑巢促蓉发展试点村级金融服务 架起便民利民之桥周仕强:他最好改个有川味的名字微博@“成都住房公积金” 快速响应有民生工程进展咋样 网上就能查中国经济正进入新阶段 新常态,新在哪国内成品油调价 年内第6次搁浅青年艺术家为您书写“共生缘”我省启动“智慧工商”建设中央档案馆公布日本战犯鹿毛繁太侵华罪太升路志愿者送清凉道德讲堂进社区 流动宣讲接地气两名加拿大籍公民因涉嫌窃取我国国家秘完善棚户区改造规划 加快配套建设金牌主持人青少年普法教育创新 “青羊实践”精彩四川隆发将向云南地震灾区献爱心海归大熊猫“苏琳”产下今年首对双胞胎
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘