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

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

VB如何在Visual Basic中实现异步执行程序 VB如何在开机时自动更换墙纸? 使回车具有 Tab 的功能-VB资料 输入时,自动转换成小写? -VB资料 显示多媒体信息 -VB资料 也谈Windows 下的自动存盘 -VB资料 一个小巧精致的CPU监视器 -VB资料 应用VB4.0实现工业控制的实时曲线和历史曲线 应用程序中实现关机功能-VB资料 萤幕抓取与萤幕保护程式 -VB资料 用VB5.0创建Windows快捷方式 用VB5.0收集键盘和鼠标信息 用VBA限制非注册软件使用时间 用VB编程检测当前电池使用情况 用VB编写定时关闭计算机的程序 用VB编写键盘拦截程序 用VB函数轻松访问系统注册表 用VB设计一个定时闹钟程序 用VB实现拖放功能 在VB中启动控制面板 在VB中异步执行程序 在Visual Basic中终止Windows 95 在关机或Logff前信息的拦截-VB资料 VB怎样捕捉窗体的鼠标? VB怎样存取注册表信息 VB怎样改变双击鼠标的时间间隔? VB怎样关闭一个正在运行的程序 VB怎样限制鼠标移动 ANI文件格式 -VB资料 AVI文件格式-VB资料 DBF文件转为MDB文件的方法 -VB资料 sql数据库连接问题:登录失败 问一个简单的DELETE问题 PostQuitMessage(0)和WM_QUIT oracle的存储过程能否返回一个记录集? 如何解除winXp Professional的IIS连接数限制? 类型转换问题? 马上登陆geniusbible.yeah.net网站 *大众调查*---程序员的作息时间 有没有办法让用VC7 build出来的exe文件在VC6下调试? 请问,如何让客户端自动下载安装并注册ActiveX控件(最好能给出详细步骤), 请来说说Rational Rose、PowerDesign、visio这三个软件的功能与异同 怎么在JBUilder7设置命令行??? 电话拨号问题请教 100分 怎样读取数据库中的二进制数据? 急啊~fread的第二个参数忽略回车,怎么办? 为什么photoshop的调色板里只有一种颜色,急,在线 redhat linux8.0中文版有没有中文的帮助文档 Linux Apache+PHP+MySQL的配置问题?? 马上登陆geniusbible.yeah.net网站 我问一个简单问题 各linux都什么优点 这段代吗怎么写? 分乃身外之物,顺便问一个问题。 在delphi中怎么样把字符串的前后空格去掉 有没有人用vss做版本控制的?? 摩托遇到怪事~~决定研究一下~~有兴趣看看拉~~ 求救:哪位有NotesSQL 2.06 email:frank@southsundin.com API ATCS10_SCO505版本,免费的类似TUXEDO消息中间件,欢迎大家使用!!! what is the MAPI? 一个关于子窗体的问题?请大家帮忙,在线等待! 如何做浮动窗体! 一个不是很难的问题。我却很难哟 请教关于访问Jbuilder7中数据库的问题(急) 突然想到的一个问题,请问大家在认真思考问题的时候都习惯做些什么动作? 在SDI程序中,如何在“框架类”中得到“文档类”的指针? 经常看到图片的上传到数据库,以及如何显示的问题,并且在另一个页面实现指定位置显示多个图片!我整理了,需要来登记! 招聘程序员!!!! 各位老大:请帮助!!!!! 请假两天要扣掉薪水的百分之几? JSP通过JDBC连接ORACLE的问题!!! 简单问题,vb得块注视是什么? 为什么mingw和DJGPP. 的主页总是上不去?? 五笔怎么装?装在什么目录下? 最远的距离 请教关于访问Jbuilder7中数据库的问题(急) JSP通过JDBC连接ORACLE的问题!!!!!!!!!!!!!!! 打印机状态,在线等待,万分火急 modelmaker6这东西是做什么的,那位前辈知道 NOTES在用久了之后,邮箱会变的巨大,几百MB,但即使我将邮件删除,其邮件文件还是那么大,怎么可以让它缩小? 我为程序中的职工设了一个序号,人数有多少序号就有多少。可以一眼就看出有多少人。可是当我在离职表中删除职工时。序号跟着被删除。删除 What's the quickest way to get from Shanghai Station to Pudong Airport?用by train回答,是一个完整的句子! 英语翻译I will confirm the price to have the samples delivered on Monday morning and then if its the same as before transfer you the funds via Western Union.我是做外贸的,这是一个新客户发来的邮件,他的意思是不是我周 问大家一道根据英语首字母填单词 初一下水平,请进!I'm sure he is a_____ to win the match速速回答,本人在线! 小生才学浅薄,特来求教.“祀”这个字怎么念啊,打拼音出来.3Q 英语翻译 为什么食品安全会成为社会热点 用哪些词语形容作家 外贸英语一句翻译See the FOB offer from seller for Libyan iron ore. I am directto theseller.谢谢,在线等 关于食品安全的手抄报用什么题目? Have trouble doing和Have difficult doing和Have problem diong 是同义词吗?它们可以互换吗?请各造一句话,打上句意, 对不起,我把你的字典忘在家里了.用英语怎么说 英语翻译The total amount of the liquidated damages under the agreement shall be limited to five percent (5%) of total contract amount and/or the amount of delayed partial shipment respectively of the goods delayed.The Seller shall guarantee that 红外探测器有哪几种类型,可以用来放宠物的有哪些? 英语翻译For that case we will submit your offer in your official letter pad onbehalf of you.onhehalf 显然是客人忘记打空格键了,我想的理解,这句话的意思是,那样的话,我们将代表您,用你方官方信纸发布 怎样在方格纸中做一个面积为5的正方形用勾股定理,谢 have difficult in doing 怎么用 翻译,他们没带英文字典.翻译,准备好去上学了吗? 求英语中对猪的昵称或爱称,或者猪的中性词.类似中文的“小猪”含有褒义的词. 红外探测器有几种类型?各自的类型有什么特点? “他看小说时常带字典”用英文怎么翻译 英语翻译We would like to place an initial order against the above items for one 40' container each with shipment,please quote us your rock bottom price on the basis of CIFC3 Vancouver B.C.,Canada with all details for the goods and transaction. What is the_____by train from shanghai to Beijing?A,fareB.feeC.moneyD.charge 七下英语,用适当的物主代词填空1•Is this ( )book,Jenny?No,(.)is in my bag.2.Is this Sam's bike?No,it's not ()3.Welcom to () school library! 英语翻译我们已收到你的询价,现答复如下: 如何在PPT中写化学方程式? 下列说法中,错误的是( ).A.化学反应必然伴随发生能量变化B.化学变化中的能量变化主要是由化学键变化引起的C.化学反应中能量变化的大小与反应物的质量多少无关D.能量变化是化学反应 汉字老婆的其他叫法? 如何在PPT上写化学方程式/要讲报告,请问怎么能在PPT上写上化学方程式. 求助一句外贸英语.THANKYOU COULD YOU SEND ME THROUGH A QUOTE INCLUDING SHIPPING COSTS ECT 是澳大利亚的城市吗? word里的横线怎么打? 怎样在PPT中编写化学方程式 下列说法错误的是A) 纯净的硫酸是纯净物,纯净的盐酸是混合物B) 浓硫酸的吸水性是物理性质,而脱水性是化学性质C) 紫色石蕊试液是盐酸变红色,澄清石灰水变蓝色D) 打开盛放浓盐酸的瓶盖子 人们常把汉字称为 请问,如何换水龙头,需要点什么工具? 英语翻译INSPECTION:Quality,Quantity and weight by SGS certified agency,at Seller's cost,at port of loading,and unloading port in buyer's account . 汉字中的偏旁部首的叫法 have a difficulty in doing something difficulty 是不可数的吗?in 可不可以省略? 下列说法错误的是下列说法错误的是A.取20℃的饱和蔗糖溶液200克和20克,设法各蒸去2克水再冷却到20℃,它们析出的蔗糖质量相等B.相同浓度下两种溶液的百分浓度相同,则两种物质的溶解度在 人类能否在火星居住 what goes all over the house but touch nothing 下列说法中错误的是分子式符合Cn(H2O)m的物质,都是糖类物质淀粉纤维素都是天然有机高分子化合物 如图,方格纸中每个小方格都是边长为1的正方形.(1)求图1中四边形ABCD的面积 (2)在图2方格如图,方格纸中每个小方格都是边长为1的正方形.(1)求图1中四边形ABCD的面积 (2)在图2方格纸中画一个格 What goes all over the house,but touches nothing?智力题 英语翻译Beneficiary's certificate certifying that one set of copy of documents having been sent to applicant by express within 5 days after shipment. 火星可以居住人类吗324``` what goes all around the house,but touches nothing?这是一个脑筋急转弯问题. 下列说法错误在哪(化学)某固体中加入稀盐酸,产生了无色气体,证明该固体一定含碳酸根.除了亚硫酸根,活泼金属,碳酸跟还有什么 如图 每个小正方形的边长为1,求四边形ABCD的面积我算得面积为12.5,求角B度数怎么求 what goes around the house and in the house,but never touches the house.英文智力题。肯定不是什么 air sun light ghost 要是这么简单我还上这儿干嘛? “红外成像”红外成像的定义,原理.最好还有当前世界的研究进展.这是我的一个课题,在现实中查书很麻烦,而且不全,“大知识分子”的教育.字数在1500左右就行 . 你对橡胶挺了解的,勐腊县关累镇地区的橡胶现在的价格 想知道:北京市 什刹海玩什么 在哪 英语翻译You will find the request.Test quantity:800 pieces for 4 different sizeBulk quantity:15/30/50 KPls give me your best price. 大量砍伐森林,主要影响水循环的哪个过程?还会导致哪些后果? 一句外贸英语Temporary duty reduction or exemption shall be granted to goods approved by the Customs as temporary import and export goods and to bonded goods imported by special permission after the importer or eexporter of the goods submits to 英语 阅读下面短文,在改写后的短文的空白处填入适当的词,使其意思完整.There was a traveler who was wet and cold because he had ridden in the rain.At last he reached a country inn(小酒店).The inn was so crowded wi 森林砍伐对气候的影响(只是对气候的,方面越多越好,如果是英文的就更好了) 把我会不会将我的字典忘在家里了?翻译成英语 亲爱的,我是你最后一个男人英语怎么说.如上,急,. 砍伐森林的原因和后果是什么,各五点最少原因和后果最起码都要五点最好更多,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘