版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、delphi 编写activex控件(ocx控件)的知识和样例 delphi 编写activex控件(ocx控件)的学问和样例 delphi 编写activex控件(ocx控件)的学问和样例 分类: delphi com编程技术 2021-09-26 14:13 427人阅读 评论(0) 保藏 举报 delphipascalwindowsimportinternet编程 名目(?)+ 一、activex应用状况简介: activex控件也就是一般所说的ocx控件,它是 activex技术的一部分。activex是微软公司推出的基于组件对象模型com的技术,包括对windows 32位应用编程接
2、口(win32 api)和组件对象模型的一系列扩充和增加,目标是把计算机桌面环境与因特网环境集成起来,同时爱护在windows技术中现有的开发投资。微软的 activex技术根本上就是修改过的ocx技术,使它能够跨越internet,主要是使用来传递控件。 activex控件可以被集成到许多支持activex的应用当中去,或者直接用来扩展应用的功能,这些支持activex的应用包括c+ builder、delphi、visual dbase、 visual basic、visual c+、internet explorer、netscape navigator等。activex控件还可以使用在
3、因特网上,在网页上使用它来发布信息、处理与用户的交互,但是需要使用支持activex的扫瞄器才能阅读这些网页。目前已经开发出来的activex控件越来越多,由于activex控件具有很好的特性,我们可以在编程的时候选择使用合适的控件来加快自己的应用开发。可以不夸张地说,activex控件是windows平台编程必不行少的法宝。 使用activex控件是相对比较简洁的。但是,开发activex控件并不是一件简洁的事情,必需要熟识而不只是了解activex技术才能开发出好的activex控件。而com、ole等activex技术对于一般的程序员来说,是比较简单难懂的。所以,activex控件的开发
4、者一般都是“老鸟”级别的程序员。 但是假如您有了inprise公司的borland delphi,那又另当别论了。delphi作为windows平台上最优秀的程序开发工具之一,为activex控件的开发供应了强有力的支持,让您轻松地开发activex控件。delphi的开发者仅仅需要了解一些activex控件的简洁学问,就可以使用delphi供应的工具来快速开发自己的 activex控件。本文具体介绍了利用delphi所供应的工具来快速开发activex控件的技巧。 二、activex控件的相关学问 要开发activex控件,我们先得简洁了解一下activex控件的一些相关学问。在delphi
5、中,一个activex控件由如下几个部分组成: vcl(可视化构件库)控件、属性、方法、大事,以及一个或者多个相关的类型库,其中每个部分都有各自的作用。 delphi 编写activex控件(ocx控件)的学问和样例 现在对每个部分介绍如下: 1、vcl构件 在delphi中,一个activex控件是由一个或者多个vcl构件经过包装以后得到的。所以,要使用delphi来开发activex控件,必需先得开发出或者选择要进行包装的vcl构件。也正是由于这个缘由,我们可以将delphi里大量优秀的vcl构件包装成activex控件,从而可以在别的不能够直接使用vcl构件的开发工具(如visual b
6、asic、visual c+)里也能够使用到这些控件啦! 但是,在delphi里可以用来做activex控件的vcl构件必需是twincontrol的后代。假如想用一个tgraphicontrol的子类做activex控件,在大多数状况下只需要把它的基类变为tcustomcontrol即可。有的vcl构件是被注册成非activex控件的,例如editcontrol,这些控件也不能做activex控件。 2、类型库 类型库包含了控件的类型定义信息,供应了比接口更多的具体信息,是控件向它的宿主程序供应服务信息的一种途径。类型库的目的是为其他应用编程工具供应关于它包含的构件对象的信息。开发activ
7、ex控件时,delphi把类型库信息存入一个.tlb文件中及一个对应的pascal文件(.tlb文件的pascal语言版本),编译时类型库将作为资源链入dll或者exe等中。 类型库的元素包括: (1)类型库信息:包括类型库的总体信息和特征、当前类型库引用的其他类型库; (2)构件类:代表整个activex控件,包含了供应给客户应用的接口; (3)接口属性和方法、大事; (4)枚举类型:一种用作数据类型的相关常量,可以用在类型库的其他地方定义属性和方法。 delphi供应了一个类型库编辑器,用于观看或修改类型库,可以使用它来增加、修改、删除类型库的各种元素。类型库的界面上可以看到,左边是一个树
8、形结构,各种元素的成员作为子节点消失;右边是依据左边所选中的元素类型显示不同的页签,可以对该元素的一些属性进行编辑。 delphi 编写activex控件(ocx控件)的学问和样例 3、属性、方法和大事 vcl构件的属性、方法和大事自然就变成为activex控件的属性、方法和大事。控件的属性,例如颜色、标签等;控件的方法是恳求控件执行某些动作;大事则是控件给宿主程序的一个通知,发生了一些事情。 4、属性页 activex控件所带的属性页可以让控件的使用者查看和修改控件的属性。您可以把几个属性捆绑在一个属性页上,也可以只为一个属性供应一个属性页。 三、快速开发activex控件 下面就让我们来使
9、用delphi详细做一个activex控件。 假设我们现在面临的问题是,在使用visual c+(vc)开发一个应用的时候,需要使用一个grid控件来处理界面的事情,而使用vc所供应的flexgrid控件又很麻烦,发觉delphi里的 tstringgrid构件特别合适。但是tstringgrid是delphi里的vcl构件,又不能直接被vc使用,怎么办呢?不用愁,我们只要把 tstringgrid包装成为vc可以使用的activex控件就可以解决这个问题了。 delphi为activex控件的开发供应了两个向导: 1、activex控件向导可以让你把一个vcl构件包装成为一个activex控
10、件。下面将会使用到这个向导。 2、activeform向导则可以把几个vcl构件包装成为一个activex控件或者开发一个完整的activex应用。 四、开发实例: 在delphi当中把tstringgrid包装成一个activex控件的主要步骤: 1、 点击【file】【new】【other】菜单项,打开【new items】,选择【activex】; 2、 选择【activex library】选项卡,点击ok,创建工程。 3、 点击【file】【new】【other】菜单项,打开【new items】,选择【activex】; delphi 编写activex控件(ocx控件)的学问和样
11、例 4、 选择【activex control】选项卡,点击ok,打开【activex control wizard】窗口; 5、 在【vcl class name】组合框中选择 vcl 类(如tstringgrid),单击ok; 6、 添加代码; 7、 运行程序,生成ocx文件。 8、在delphi中单击【component】【import activex control】菜单项,打开【import activex】窗口,在窗口中点击【add】,然后选择ocx文件,然后单击install按钮安装组件。假如胜利,在activex组件页中将显示该组件。 1、首先,要启动activex控件向导,创
12、建activex项目 首先,要启动activex控件向导,选择file菜单里的new命令,在弹出的对话框里选择activex页签,然后双击activex control图标即可。向导中的第一个域要求选择一个要进行包装的vcl构件,点击选择tstringgrid。其他几个域取缺省值即可,假如需要包含版本信息等其他信息,也可以选上。点击ok按钮,向导将生成一个delphi的activex控件开发项目 stringgridxcontrol1,包括以下几个的文件: 1. 一个activex项目文件(dpr后缀名),包含了启动、初始化一个activex控件所需要的代码。通常是不需要修改这个文件的。 2.
13、 一个类型库文件(tlb后缀名),定义和实现了activex控件向外所供应的接口、属性、方法和大事。delphi特地为这个文件供应 了一个pascal版本的文件(tlb扩展名),而且自动维护这两个文件的全都性。 3. 一个activex实现的文件(pas扩展名),使用了delphi activex框架(dax)定义和实现了这个activex控件,详细实现类型库里定义的接口。这个文件是我们常常需要修改的。dax是delphi对activex控件的com规约的实现方式。 4. 假如选择了包括一个“关于”对话框的话,还有一个对应的对话框实现文件。 delphi的activex控件向导依据所包装的vc
14、l构件的属性、方法和大事生成了activex控件相应的属性、方法和大事。但是它没有把 vcl构件使用非ole类型(如集合、数组等)的属性、方法和大事转换过去。例如,tstringgrid的options属性是集合类型的, rowheights是数组类型的,在控件向导所生成的属性中就没有这些属性。但是有时候偏偏这些属性、方法和大事是很重要的,这时就需要手工添加一些属性、方法和大事! delphi 编写activex控件(ocx控件)的学问和样例 2、在activex控件中添加一个属性和实现的方法: 现在为这个activex控件添加一个browselect属性,这个属性原来是tstringgrid
15、的options属性的子属性,掌握grid是否处于行选中状态。在stringgridxcontrol1项目里打开activex实现文件stringgridimp1.pas,选择【edit】菜单里的【add to interface】命令(留意:只有打开了实现文件,这个命令才能使用),delphi将弹出增加接口对话框。在对话框里的interface项选择properties/methods-istringgridx,然后在declaration里写入browselect属性的声明(假如你选中了对话框里的syntax helper选项,delphi将随时提示你应当输入的内容):property b
16、rowselect:wordbool;点击ok后,这个属性的相关信息将自动加入到控件的实现文件、类型库文件和对应的pascal文件中。由于控件的接口是双向的,所以在pascal文件里使用了读和写两个方法来实现控件的属性。 1、delphi自动在类型库里加入了以下声明: property browselect: wordbool read get_browselect write set_browselect; 这说明白:对于browselect这个属性,有一个读方法get_browselect,一个写方法set_browselect。delphi自动在控件的实现文件里加入了对browselec
17、t属性的读和写访问方法的声明和实现: function get_browselect: wordbool; safecall; procedure set_browselect(value: wordbool); safecall; 这时候这两个方法的实现体是空的,必需得自己填入详细实现的代码: 2、在实现文件中编写代码 function tstringgridx.get_browselect: wordbool; begin /以下代码由自己依据需要编写,获得现在是否处于行选中状态 with fdelphicontrol do result := gorowselect in options
18、 ; end; procedure tstringgridx.set_browselect(value: wordbool); begin /以下代码由自己依据需要编写,设置行选中状态 delphi 编写activex控件(ocx控件)的学问和样例 with fdelphicontrol do begin if value then options := options + gorowselect else options := options - gorowselect; end; end; 3、生成activex控件(ocx控件) 这时候,使用类型库编辑器来查看类型库,可以看到新增加的br
19、owselect属性。好了,做好了前面这些工作以后,选择project菜单的build stringgridxcontrol1命令即可生成我们所需要的activex控件。在项目的名目下,我们可以找到 stringgridxcontrol1.ocx这个文件,这个就是我们的activex控件啦! 4、把activex控件(ocx控件)注册到系统中 1、在delphi中单击【component】【import activex control】菜单项,打开【import activex】窗口,在窗口中点击【add】,然后选择ocx文件,然后单击install按钮安装组件。假如胜利,在activex组件
20、页中将显示该组件。 2、 把它拷贝到windows 9x的system名目或者windows nt/2000的system32名目里面。在dos命令行状态中,运行命令:regsvr32.exe c:winntsystem32alasunsmscon.ocx (regsvr32 stringgridxcontrol1.ocx)在系统中注册这个stringgridx控件。 3、在delphi中,打开创建该activex控件的工程(*.dpr)文件,然后选择run-register activex server. 留意,以上第2种方法和第3种方法操作只是向windows消息系统注册了该activex控件,但是并没有将其添加到delphi的vcl库中。还无法在其它程序中调用。我们还需要 delphi 编写activex控件(ocx控件)的学问和样例 进行第1中方法中的操作。假如已经注册完毕就可以在import activex中查找,假如没有就需要点击【add】充文件的路径添加。 五、小结 类似的我们还可以往act
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 闽南科技学院《工程测试技术》2025-2026学年期末试卷
- 高中试题语文卷子及答案
- 福州职业技术学院《道路勘测设计》2025-2026学年期末试卷
- 稀土真空热还原工成果转化模拟考核试卷含答案
- 市场营销策划公司年度工作总结报告
- 木材检验员安全检查评优考核试卷含答案
- 异丁烯装置操作工安全宣教强化考核试卷含答案
- 平台管理员成果转化水平考核试卷含答案
- 房地产投资策略解析-房地产顾问
- 2026年兰州市九年级(初三)二诊模拟考试历史+道德与法治试卷(含答案)
- 2026年部编版道德与法治五年级下册全册教案(含教学计划)
- 2026年浙江工商职业技术学院单招职业技能测试题库附答案详解
- 2026年金华职业技术学院单招职业适应性测试题库及参考答案详解1套
- 2026年注册土木工程师(水利水电工程水工结构专业知识考试上)试题及答案
- 2025贝特瑞新材料集团股份有限公司招聘5人历年真题汇编带答案解析
- 2026年咨询工程师咨询实务考前重点知识考点总结记忆笔记
- 2026全国肿瘤防治周宣传:健康生活筑基科学防癌护航
- 电动单梁吊车施工方案
- 初中必背名著导读考点梳理(12本)
- 黑热病防疫知识培训课件
- 5.《雷雨(节选)》课件+2025-2026学年统编版高一语文必修下册
评论
0/150
提交评论