




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi ActiveX控件使用实例1. ActiveX控件简介ActiveX控件也就是一般所说的OCX控件,它是ActiveX技术的一部分。ActiveX控件可以被集成到很多支持ActiveX的应用当中去,或者直接用来扩展应用的功能,这些支持ActiveX的应用包括C+ Builder、Delphi、Visual dBASE、 Visual Basic、Visual C+、Internet Explorer、Netscape Navigator等。简单的说,ActiveX技术可以使多种编译器中众多的控件得到互用,比如说:我可以将Delphi中的控件打包为ActiveX控件后然后加载到Visual C+中进行使用,这样在VC中也可以使用Delphi中的这些控件来实现相应的功能了。2. ActiveX控件相关知识在Delphi中,一个ActiveX控件由如下几个部分组成:VCL(可视化构件库)控件、属性、方法、事件,以及一个或者多个相关的类型库。2.1、VCL构件在Delphi中,一个ActiveX控件是由一个或者多个VCL构件经过包装以后得到的。所以,要使用Delphi来开发ActiveX控件,必须先得开发出或者选择要进行包装的VCL构件。也正是由于这个原因,我们可以将Delphi里大量优秀的VCL构件包装成ActiveX控件,从而可以在别的不能够直接使用VCL构件的开发工具(如Visual Basic、Visual C+)里也能够使用到这些控件啦!但是,在Delphi里可以用来做ActiveX控件的VCL构件必须是TWinControl的后代。如果想用一个TGraphiControl的子类做ActiveX控件,在大多数情况下只需要把它的基类变为TCustomControl即可。有的VCL构件是被注册成非ActiveX控件的,例如 EditControl,这些控件也不能做ActiveX控件。2.2、类型库类型库包含了控件的类型定义信息,提供了比接口更多的详细信息,是控件向它的宿主程序提供服务信息的一种途径。类型库的目的是为其他应用和编程工具提供关于它包含的构件对象的信息。开发ActiveX控件时,Delphi把类型库信息存入一个.TLB文件中及一个对应的Pascal文件.res(.TLB文件的Pascal语言版本),编译时类型库将作为资源链入DLL或者EXE中。类型库的元素包括:(1)类型库信息:包括类型库的总体信息和特征、当前类型库引用的其它类型库信息;(2)构件类:代表整个ActiveX控件,包含了提供给客户应用的接口;(3)接口属性和方法、事件;(4)枚举类型:一种用作数据类型的相关常量,可以用在类型库的其他地方定义属性和方法。图1 类型库编辑器Delphi提供了一个类型库编辑器,用于观察或修改类型库,见图1 (在Delphi中选择File-open,然后打开相应的.TLB文件,就会自动调用该类型库编辑器进行查看)。可以使用它来增加、修改、删除类型库的各种元素。从图1类型库的界面上可以看到,左边是一个树形结构,各种元素的成员作为子节点出现;右边是根据左边所选中的元素类型显示不同的页签,可以对该元素的一些属性进行编辑。2.3、属性、方法和事件在打包为ActiveX控件后,原有VCL构件的属性、方法和事件自然就变成为ActiveX控件的属性、方法和事件。控件的属性指颜色、标签等;控件的方法是请求控件执行某些动作;控件的事件则是控件给宿主程序的一个通知。2.4、属性页ActiveX控件所带的属性页可以让控件的使用者查看和修改控件的属性。您可以把几个属性捆绑在一个属性页上,也可以只为一个属性提供一个属性页。2.5、Active Form在Delphi中,ActiveForm是封装了Delphi Form的一种ActiveX控件。ActiveForm其实是一种标准的Delphi From(ActiveForm继承自TForm)。ActiveForm中可能会包含某些VCL或者ActiveX组件,包括用户自定义的组件。 就像“标准的”Windows应用程序一样,我们也可以向ActiveForm中添加代码以及对事件作出应答。唯一的区别是,ActiveForm的标题栏(title bar)在运行时是不可见的,只是在设计时才可见。3.Active Form实例下面我们以ActiveForm作为实例来说明Delphi中ActiveX控件的创建和使用。3.1 创建一个ActiveX FormDelphi提供了ActiveForm向导工具来增强ActiveForm的创建过程。该向导会创建一个ActiveX library项目来包含ActiveForm和一个可定制的激活的Form窗口。(该窗口是ActiveForm类型,而非TForm类型,虽然ActiveForm继承自TForm)要创建一个ActiveX控件(在本例中为ActiveForm控件),我们需要在Delphi中点击 File-New,然后选择ActiveX选项卡,接着双击ActiveForm图标即可。对于本例,如图2,点击OK接受默认的ActiveForm名称(New ActiveX Name)和执行单元名称(Implementation Unit)。这样向导就为我们自动创建了一个ActiveX Library 工程,一个类型库,一个Form窗口,一个执行单元以及一个包含了所有这些类型库说明信息的单元文件(.TLB文件)。图2 Active From创建向导3.2 添加一些简单的控件和代码一旦ActiveForm被创建,我们就可以从组件面板中向其内添加各种想要的控件。本例中,为简单起见,我们只添加一个文本框控件(TEdit:edt1)和一个按钮(TButton: btn1) 如图3:图3 Active Form包含的VCL控件图接下来,我们向按钮TButton的OnClick事件中添加如下代码:procedure TActiveFormX.btn1Click(Sender: TObject);beginShowMessage(edt1.text);end;3.3 Active Form 的部署和调用接下来,让我们看看我们创建的Active Form的效果,并且在其它应用程序中调用该Active Form。3.3.1 通过Web部署(Web Deploy) 预览Active Form的效果通过Web部署,我们可以通过浏览器快速查看我们创建的ActiveX控件的效果。不过之前我们必须对Web部署的相关属性进行相应设置。3.3.1.1 Web部署想要在网页中使用ActiveForm控件,你必须先设置Web部署属性。要部署ActiveForm项目,首先必须对Web部署属性进行适当的设置,然后还要编译项目。在Delphi中选择Project-Web Deployment Options,将打开如图4所示的Web部署属性对话框。部署一个简单的ActiveForm是非常简单的,你只需在Project标签页中输入相应的数据即可。(为简单起见,本例中其它选项的使用默认值)图4 Web部署属性设置示意图如图4, 为简单起见,我们将部署后的HTML(HTML Dir) 文件和OCX文件(Target Dir)设置为同一个目录,同时目标URL(Target URL )只需简单的输入./来表示使用当前目录。接着,选择Project -Web Deploy对该项目进行Web部署,那么Delphi就会在上述设置的部署目录中生成一个OCX文件和一个用于测试该ActiveForm的相应的HTML页面文件。3.3.1.2 预览效果现在,我们只需打开上述设置的Web部署目录中生成的相应的HTML文件即可查看该ActiveForm的运行效果了。图5 Active From Web部署效果展示图如图5,更改文本框中的内容后点击按钮,就会弹出一个包含你刚才在文本框中输入内容的消息框。3.3.2 ActiveForm的调用上面,我们已经通过Delphi自带的Web部署功能快速查看了我们刚创建的Active Form的演示效果。现在,我们将在其它项目中该ActiveForm控件。3.3.2.1 编译生成OCX文件如果你使用了上面提到的Web部署工具查看了该Active Form的运行效果,那么在Web部署的过程中,Delphi已经自动对该ActiveForm项目进行了编译,并且在如图4所示指定的Web部署目录中生成了相应的OCX文件。这里,我们生成的是ActiveFormProj1.ocx。如果你没有使用如上的Web部署工具查看该Active From的效果,你也可以简单的通过编译项目(Project-Compile * 或按Ctrl+F9)来创建该OCX文件。如果编译没有发生错误,那么在工程的根目录下你也可以发现该OCX文件(ActiveFormProj1.ocx).3.3.2.2 注册Active Form要想在其它项目中调用我们刚创建的Active Form,我们必须先将其注册到Windows消息系统中,然后还要将其添加到Delphi的VCL类库中,这样在其它项目中才能找到该Active Form控件并进相应的使用。图6 注册Active Form对话框点击Component-Import ActiveX Control, 将会打开Import ActiveX 对话框(如图6),点击Add后在弹出的文件选择对话框中定位并选中我们刚生成的Active Form控件ActiveFormProj1.ocx,点击”打开”后,Delphi将会自动载入该ActiveX控件。如图6所示的Import ActiveX对话框也进行了相应的改变。注意该操作只是向Windows消息系统注册了该ActiveX控件(ActiveFormProj1.ocx),我们还可以通过如下方法向Windows消息系统注册该ActiveX控件:? 在命令行(MS-DOS)下定位到ActiveFormProj1.ocx文件所在目录,然后使用“Regsvr32 ActiveFormProj1.ocx ”注册该ActiveX控件? 在Delphi中,打开创建该ActiveX控件的工程(*.dpr)文件,然后选择Run-Register ActiveX Server注意,以上操作只是向Windows消息系统注册了该ActiveX控件,但是并没有将其添加到Delphi的VCL库中。所以我们还无法在其它程序中对其调用。要想在其它程序中能调用该ActiveX控件,我们还需要进行如下设置和操作。那么,我们的ActiveX控件将会出现在Delphi的组件面板中,这样我们在其它程序中才能像使用其它VCL控件一样使用我们刚才创建的ActiveX控件(Active Form)。如图6,最上面显示了载入的ActiveX控件的名称、版本号和源文件路径。? Class names: 表示该ActiveX控件在Windows消息系统中的注册名称,默认为载入的Active Form的类名称,你可以根据需要进行更改。? Palette page: 表示将该ActiveX控件加载到Delphi组件面板中的哪个面板,默认为ActiveX面板。我们这里加载到默认面板Standard面板中。? Unit dir name: 表示将该ActiveX控件加载到哪个目录中,默认为.BorlandDelphi7Imports,最好放在Delphi的Search Path中,否则在使用中可能会发生无法找到文件错误。? Search path: 表示Delphi的查找目录。如果上述的Unit dir name:指定了其它的目录,在这里,我们也应该添加相应的目录。图7 控件添加位置选择对话框以上设置完成以后,我们点击Install按钮将该ActiveX控件添加到Delphi的VCL库。点击Install按钮后,会弹出如图7所示的Install对话框,让我们选择将该ActiveX控件添加到哪个包中。如图7,默认的选择是注册到已有包(Into existing package)“borlanddelphi7Libdclusr.dpk”中,我们也可以点击Browse.按钮选择其它已存在的包文件(*.dpk),或者切换到Into new package面板创建一个新的包文件(*.dpk); Descripiton表示对该包文件的说明。注意点击Install按钮将该ActiveX控件添加到Delphi的VCL库实质是:首先,将ActiveX控件的3个相关文件“ActiveFormProj1_TLB.dcr”、“ActiveFormProj1_TLB.dcu”、“ActiveFormProj1_TLB.pas”拷贝到Delphi安装目录下的Imports t文件夹(“BorlandDelphi7Imports”)中。如果文件已经存在,会给出“文件已存在,是否替换”的提示信息。其次,将控件信息添加到我们指定的包中,然后重新进行编译,使新加入到ActiveX控件出现在Delphi的组件面板中这里我们全部使用默认设置,将我们的Active Form控件添加到默认的”borlanddelphi7Libdclusr.dpk”文件中。设置完成以后,点击ok按钮。将会出现如图8所示的Package管理器,同时弹出如下信息对话框:“Package dclusr.bpl will be rebuilt, Contin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《英语口译》课程介绍与教学大纲
- 统编版小升初语文专项复习:修辞手法(有解析)
- 特是如何运作
- 统编版八年级语文下册名著梳理与整合【学生版】
- 荔枝吃法有哪些
- 老年人地震教育知识培训课件
- 赏析小说形象(知识清单)-2026年高考语文一轮复习原卷版
- 生于忧患死于安乐-中考语文复习古诗文专项讲义(原卷版)
- 老年人保护胃课件
- 生物工程及其安全伦理问题(有解析)-高二生物学浙科版作业
- 艺康servsafe培训课件
- TDT1067-2021不动产登记数据整合建库技术规范
- 加气站投诉处理管理制度
- 2025-2030年再生铝行业市场现状供需分析及投资评估规划分析研究报告
- Unit 3 Same or Different?Section A 课件 人教版英语八年级上册
- 智能仓储物流管理平台的设计与开发
- 2025上海戏剧学院辅导员考试试题及答案
- 中国热射病诊断与治疗指南(2025版)
- 眼科患者的体位管理
- 物流中级考试试题及答案
- 小学一年级100以内加减法练习题3000道
评论
0/150
提交评论