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

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

微软Ralph Haupter:WP8即将在中国上市 开发者黄金时代来临 Paul Graham:Y Combinator创始人成长轨迹 我们需要强密码吗? 为了改变?英特尔CEO宣布将于明年5月辞职 传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 移动周报:小聪明赚大钱 游戏SEO如何耍鸡贼? 创翼全国 六城联动——2012移动互联网应用创新大赛开放日 全国六城联动沙龙 爱丽丝+福尔摩斯 Game Insight解谜游戏玩出新花样 Windows Phone 8 SDK大升级:部分功能兼容WP7 信息大图《愤怒的小鸟》发家史 Intel预测:10年之后你的手机是48核的 消息推送惹怒用户:应用开发者请别太过分 创新工场:我们如何孵化未来? iOS越狱比例下降:国内移动开发环境怎么了? 响应式图像技术与资源分享 看Twitter如何应对大选:少些Ruby 多些Java 软件开发中常见的十大系统瓶颈 [CTO俱乐部87期]三人行架构分享:开源是背后的支柱 推荐5款超实用的.NET性能分析工具 OpenStack基金会主席Alan Clark访华 欢迎提问 程序员的十大烦恼 兼顾性能和兼容体验:HTML5时代的浏览器全面测试 Lisp的本质 大家发表些看法! 各位 帮帮忙,关于答复文档的 如何获取手机中的短消息发送结果状态报告,需要懂一点手机短信的朋友 有没有办法去掉jre1.4下向JTextField输入中文时弹出来的那个恶心的输入窗口? 将web工程加到sourcesafe的问题,十万火急,帮忙解决一定给分,分数不够可以其他方式给。 在sqlserver中有字段类型为image,如何往该字段放图象?200分 基础问题 NT ,when boot ,can not find system 关于internet上的控件打包??????????????? 请各位高手帮忙解决!谢谢!! 谁能告诉我那几个网络论坛比较好 如何实现socket 的多线程 高手请这边来瞧瞧 如何在ODBC应用程序中使用CListView? excelapplication控件???教教我吧,我不知道为什么?很简单的。 关于internet上的控件打包??????????????? 谁知道autovuex.ocx 控件(可以显示CAD等图形)哪儿有下载??拒绝up 大家都用VC吧,这个怎么实现? 能否用变量的内容说明对象 在 广州那边招DELPHI程序员的公司多不多呀! 请问在网页里,图片在装载完前,显示的区域是一个小方框再扩成一个图像,是怎么做的? 如何在ODBC应用程序中使用CListView? 关于获取list控件值的问题!在线等候!谢谢! 请帮忙提供一点怎样学习Delphi的知识! fireworks4.0英文版关于动画的制作? 求租西三环,紫竹院,首师大,航天桥,花园村附近的一居,价位在1000左右 WORD问题 谁知道autovuex.ocx 控件(可以显示CAD等图形)哪儿有下载??拒绝up ●●●最恶心内容,谁看了谁吐,不信,试试看?! 如何从文本文件中读取数据? 怎样建立一个局域网? 高分那里有JBuilder7下载, 提供者都有分(每人5-20分) 请问如何让dbgrid支持多选? 桌面设置小问题? 调用embed 方法播放avi文件需要客户端安装相应软件么? 高分求教两个webbrowser控件问题。 哪里有1.4版的sun.*包的原码? 为什么我打印出来是乱码?打印预览是正确的中文。 因为我是初学者,问了很多问题,都没解决,但是分已经发完,所以请ERP2帮我把分拿回给我,并没有做弊? 测试工具 在 *.xsl 里关于条件语句的问题 问一个菜鸟问题,在线等候 请问如何结贴? =======================国际足联致中国足协的感谢信======================= 如何选取CListView(report格式) 中的一个值? 鉴定论文的高手请进 如何显示数据库里的JPG图片文件 请高手赐教:小弟是一局域网的网管,很想效仿那些提供免费主页空间的网站,随时可以申请主页空间,当场开通,并提供FTP上载服务。 怎样在pb8中用 sqlca.过程名 这样的格式调用oracle中包的过程??送100分 以前的女朋友问我的一个问题,我不会,希望各位大虾帮助解决!!!!!!!!!!!!! 如何选取CListView(report格式) 中的一个值? 从一副扑克牌中取出两张王牌,最少摸出多少张牌.才能保证其中有3张牌的花色相同?为什么?从一副扑克牌中取出两张王牌,最少摸出多少张牌.才能保证其中有3张牌的花色相同?请写出具体步骤 “贪婪者总是愚蠢的”怎么理解 一个圆柱形水桶,里面装有半桶水,倒出三分之二后,还剩7.8立方分米,已知桶的高5分米,求水桶的底面积.算式 一份稿件480个字,甲单独打需6分钟,乙单独打需要8分钟,如果甲、乙两人合打这份稿件,需多长时间? 彩钢板是压出形状之后喷的漆还是彩色板在压型 贪婪者总是愚蠢的 怎样理解 打一份稿件,第一天打了这份稿件的百分之25,第二天打了这份稿件的3分之2,第二天比第一天多打了2万字.这份稿件一共多少字? 商务沟通作业,用英语回答.写成小作文形式1.Describe the three main challenges of presentations that you do not face when writing a report.2.Give ten suggestions for becoming a more confident speaker.3.How to hold your audience's attent 人为是么总是那么贪婪啊 得到的东西部懂得珍惜 要等到失去才知道去珍惜 在一个底面直径20厘米的圆柱形容器中装有水,将一个底面直径10厘米的圆柱铁锤放下水中,当铁锤从圆柱形容器中取出后,水面下降1厘米,求铁锤的高. 人们为什么需要学商务沟通 我心中的和平 作文 不要战争类的好么.尼玛 - - 现在不是战争年代好么 我们和平的很阿~要不通过利比亚来写和平也okey。 你理想中的和平是怎样的?请以“我心中的和平世界”为题作文,要求想象合理,内容充实.不少于600字. 17少年闰土的生字要拼音 小孩上课爱讲话怎么办 星期天小胖从家步行去图书馆,早上8:35出发,中途休息5分钟,到上午9:00的时候小胖离图书馆还有1千米.已知小胖步行的平均速度是75米/分,那么小胖家离图书馆有多远? 畅想世博的作文600 孩子上课老爱讲话怎么办? 作文 我心中的和平要求:我心中的和平是什么样的?请用两个或两个以上的片段描述出来,并采用烘托的手法,如,描写青山绿水炊烟,300字左右就行了,急啊啊 一页,两页,我如饥饿的瘦狼,贪婪地吞读下去,我很快乐,也很惧怕,这种窃读的滋味!句中快乐和惧怕各指什么? 王芳和李莉同时摘樱桃,王芳平均每小时采摘8kg,李丽平均每小时摘7kg.采摘结束后王芳从她采摘的樱桃中取出了0.25kg给了李丽,这时两人的樱桃一样多.他们采摘用了多少时间?找出它们的量并按 作文 我心中的和平 怎么写 《狼》表现狼阴险狡诈、贪婪的句子?阴险狡诈、贪婪的句子要分开答, 王芳和李丽同时菜摘樱桃,王芳平均每小时采8Kg,李丽平均每个时乎人7Kg,采摘结束后王芳从她采摘的樱桃中取出0.25Kg给李丽,这时两人的樱桃一样多,她们采摘用了多少时间?(解方程) 我心中的和平作文 《狼》中,体现狼贪婪的句子,还有体现狼虚弱本质的句子七年下语文,长春版〈狼〉这是两个句子 我们要在别人贪婪的时候恐惧,在别人恐惧的时候贪婪:) 这句话什么含义? 少年闰土这一课中有哪些生字? 《狼》中表现狼贪婪凶狠的句子 请问恐怖片《撕裂人》里面的那首英文歌曲叫什么名字 少年闰土课文的生字我要的是现在五年级的 科学24小时生字注音词语解释 问个美国恐怖电影的名字,情节大约是一个很恶心的大虫子,只能在沙土里快速运动,把一个人逼死在电线杆上后来把羊群杀了,然后杀了一个老头,只剩个头还在地上,后来把一堆医生夫妇拖进沙 17少年闰土生字组词至少要5个组词扭 胯 厨 套 猥 畜 窜 求100生字 注音并组词好的话二十分全归你喽! 贪婪的意思营业员营业员营业员眼 小玲打一份1080字的稿件,前3分钟打了180个字,照这样计算,她再用12分钟能打完吗 用贪婪、堕落、点缀造句今天要 陈店小学的导游词作文450字 底面半径为10厘米的圆柱形容器,它的高是底面半径为12厘米的圆锥形容器高的2倍.若把装满水的圆锥形容器里的水全部倒入圆柱形容器中,水深比圆柱高的二分之一,少13厘米圆锥的高多少?用算 一项工程,甲单独做要10天完成,乙单独做要15天完成,两人合作2天后,还剩下40米没修.工程全长多少米? 圆柱体知道容积底面积\半径怎么算? 三分钟的英语演讲要准备大概多少字的稿子?同题 一项工程,甲单独做要10天完成,乙单独做要15天完成,两人合作两天后,还有40.工程全长多少米 一个底面直径是10厘米的圆柱形水桶里装有水,把一个底面半径是2.5厘米的圆锥形铁块从水中拿出,圆锥形铁块数学的体积是多少? 拿出后水面下降了一厘米。 底面半径为10厘米的圆柱形容器,它的高是底面半径为12厘米的圆锥形容器高的2倍.若把装满水的圆锥形容器里 为什么吗,妈妈爱孩子 一个底面半径为10厘米的圆柱形水桶中装有水,把一个底面半径为5厘米的圆锥形铁块浸没在水中后,水面上升了2厘米,且水没有溢出.铁件高是多少厘米 一个圆柱形容器,底面半径12厘米,高是20厘米,里面装有10厘米深的水.把一个圆锥形零件放入容器中,完全浸没在水中,水面上升到13厘米.这个圆锥形零件的体积是多少? 关于不同英语国家的问候方式有哪些啊?最好是论文形式, 圆柱形水桶的底面半径为2分米,装了半桶水,投入一块半径为12厘米高5分米的圆锥形铁块,浸没在水中后,水面升高多少分米 一副扑克牌(拿出两张王牌)一次至少拿出几张,才能保证至少有2张是同颜色的!【【【【【 同颜色的 】】】】】 不是 × 同花色 × 小孩为什么爱哭 一个圆柱体底面半径扩大5倍,高不变,他的侧面积扩大()倍,体积扩大()倍 一副扑克牌(取出两张王牌),一次至少拿出几张,才能保证四种花色都有?列式 一个圆锥形容器的高是9厘米,底面半径是6厘米.求:如果把这个容器装满水后,再将水全部倒入一个等底的长一个圆锥形容器的高是9厘米,底面半径是6厘米。求:如果把这个容器装满水后,再 一个圆柱体的底面半径是2厘米,高是5厘米,它的侧面积是(),体积是()?加一个表面积 从一副扑克牌中取出两张王牌,还剩下52张.最少摸出多少张牌,才能保证其中至少有两种花色的纸牌?为什么 一个圆锥形容器高是9厘米,装满水后将水全部倒入一个等底的长方体容器里,这时水面高多少厘米? 某技术方案年设计生产能力为10万台,年固定成本为1200万元,产品单台销售价格为900元,单台产品变动为560元,单台产品营业税金及附加为120元.试求:(1)盈亏平衡点的产销量;(2)用生产能力利用
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘