Delphi快速开发OCX步骤

合集下载

ocx控件开发过程

ocx控件开发过程

目录1. 参考资料: (2)2. 控件制作过程: (2)3.控件进行打包并进行数据鉴名 (3)4. 写html,完成程序 (5)1 / 51.参考资料:(1)利用VC6.0的向导创建一个ocx控件的示例(2)vc6<实用>开发activex并发布全攻略(二)(初级篇)网址:/ibznphone/article/details/8066322 2. 控件制作过程:(1) 打开vc6.0,新建一个MFC ActiveXControlWizard项目:(2) 在项目中添加自定义方法sayhello(3)对项目进行测试打开vc的工具->ActiveX Control Test Container菜单。

选择MyActivex控件,然后再选择Control->InvokeMethods选项:可以看到返回值是“hello!”,系统sayhello函数是可以使用的。

注:最后在html加载控件需要classid,此控件classid为7F8BB7A3-A741-4E53-A620-5442A789D7B5。

3.控件进行打包并进行数据鉴名(1) 控件制作完毕并不能直接使用,而是需要注册,手动注册的方法不必赘述,我参考本文3 / 5列的第二篇参考资料用makeCAB工具包进行处理。

下图为各种证书文件和cab打包文件生成后的情景。

(2) 使用makeCAB工具包中的Code Signing Wizard签署CAB文件细节就不写了,详细在参考资料2,后面的个图为签名成功的截图。

4. 写html,完成程序下面为html代码:<HTML><HEAD><META NAME="GENERA TOR" Content="Microsoft Visual Studio 6.0"><TITLE></TITLE><script language="JavaScript">function button1_click(){var object = card.sayhello();alert(object);}</script></HEAD><BODY><P><INPUT id=button1 type=button value=Button name=button1 onClick="button1_click()"><div style="display:none"><OBJECT id="card" classid="clsid:7F8BB7A3-A741-4E53-A620-5442A789D7B5" CODEBASE="hello.cab"></OBJECT></div></P></BODY></HTML>5 / 5。

Delphi编写COM+简介(转)

Delphi编写COM+简介(转)

软件重用是业界追求的目标,人们一直希望能够像搭积木一样随意出配应用程序,组件对象就充当了积木的角色。

所谓组件对象,实际上就是预定义好的、能完成一定功能的服务或接口。

问题是,这些组件对象如何与应用程序、如何与其他组件对象共存并相互通信和交互?这就需要制定?个规范,让这些组件对象按统一的标准方式工作。

COM是个二进制规范,它与源代码无关。

这样,即使COM对象由不同的编程语言创建,运行在不同的进程空间和不同的操作系统平台,这些对象也能相互通信。

COM既是规范,也是实现,它以COM库(OLE32.dll和贴OLEAut32.dll)的形式提供了访问COM 对象核心功能的标准接口以及一组API函数,这些API函数用于创建和管理COM对象。

COM本质上仍然是客户服务器模式。

客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。

服务器根据客户的请求创建并管理COM对象。

客户和服务器这两种角色并不是绝对的。

组件对象与一般意义上的对象既相似也有区别。

一般意义上的对象是一种把数据和操纵数据的方法封装在一起的数据类型的实例,而组件对象则使用接口(Interface)而不是方法来描述自己并提供服务。

所谓接口,其精确定义是中于对象的一组语义上相关的功能||实际上是一个纯虚类,真正实现接口的是接口对象)(InterfaceObject)。

一个COM对象可以只有一个接口,例如Wndows95/98外壳扩展;也可以有许多接口,例如ActiveX控件一般就有多个接口,客户可以从很多方面来操纵ActiveX控件。

接口是客户与服务器通信的唯一途径。

如果一个组件对象有多个接口,则通过一个接口不能直接访问其他接口。

但是,COM允许客户调用COM库中的QueryInterface()去查询组件对象所支持的其他接口。

从这个意义上讲,组件对象有点像接口对象的经纪人。

在调用QueryInterface()后,如果组件对象正好支持要查询的接口,则QueryInterface()将返回该接口的指针。

OCX控件编写

OCX控件编写

OCX控件新建->项目->MFCActiveX完成后编译器自动添加四个类。

型如:一.事件的添加方法:1.常用事件右键Ctrl类->添加->添加事件->常用事件(Click事件为例)在其他程序调用控件时在控件事件中就可以添加Click事件。

在点击新建的对话框中的控件时就会执行Click事件函数。

如下图2.自定义方法右键.lib类的第一个节点->添加方法添加后在其他程序调用控件时就可以给控件添加变量并调用方法。

二.添加属性以背景色为例,右键Lib类的第一个节点,添加属性,选择常用属性中的BackColor属性(当然也可以自定义属性):在Listcpp中手动添加属性页代码:在OnDraw手动添加:其中上图圈出部分为手动添加的代码,用于当控件被调用时打开改控件的颜色属性面板改变控件的颜色。

而COLORREF col=TranslateColor(GetBackColor);这行代码实现了获取下图颜色面板的颜色并返回给col;如何在新程序中添加控件并实时改变控件的GDI?方法:右键xxxlib文件的第一节点添加方法;完成后在xxxCtrl.cpp文件会添加该函数,例如:void Cocx004Ctrl::myfun1(DOUBLE parag){AFX_MANAGE_STATE(AfxGetStaticModuleState());if(parag>250){parag=0;}CDC*dc=GetDC();CRect rec;GetClientRect(&rec);CBrush bru;CPen pen;pen.CreatePen(PS_SOLID,4,RGB(100,parag,100));dc->SelectObject(&pen);bru.CreateSolidBrush(RGB(parag,100,100));dc->SelectObject(&bru);dc->MoveTo(rec.left,rec.top);dc->LineTo(rec.right,rec.bottom);dc->Ellipse(&rec);ReleaseDC(dc);//TODO:在此添加调度处理程序代码}以上代码实现了控件的简单绘图注:默认属性中除颜色属性外还有字体等属性,这儿未整理。

Delphi 培训(二)控件的开发

Delphi 培训(二)控件的开发

组件的结构
• • 可见性:Private、Protected、 Published(属性窗口可见)、Public 属性(Property),属性类型包括 – 简单类型(字符串、浮点数、整数、 字符等)、枚举、集合 – 对象,必须有自己的属性编辑器 – 数组,必须有自己的属性编辑器 方法(Method) 事件(Event):OnXXXX 流属性:持续化 拥有关系(Owner):Owner释放时,被 Owner者会被同时Free 父子关系(Parent)
创建控件
• 利用Delphi生成框架代码
– Component New VCL Component – 提高生产力,提高正确性,规范化
• 增加方法或编写需要重载的方法
– Override – Wndproc – Message
VCL框架说明
• TObject——万类之源 • TPersistent完成控件的持续化处理,即能够重新加载和 保存控件、控件之间相互赋值的能力 • TComponent,VCL所有组件的父类,只要从此继承,就 可以被“摆放”到窗口上,可以通过它封装一些数据操 作的对象给用户“可视化”编程使用 • TControl,可视控件的基类,这类控件都是可以在窗口 上被用户看到 • TGraphControl,图形控件,无用户输入,不占用 Windows句柄资源,如Label控件、SpeedButton等控件 • TWinControl,可视化句柄控件,有焦点,用户可输入, 占用Windows句柄资源,封装的Windows标准控件都继 承自该类,如Button、Edit、ListView等
控件 2010-11
Delphi 培训(二)
通过本课程,你将掌握——
• Windows是如何通过消息机制来运作的, Delphi是如何完成消息分发,程序运作机制是 怎样的,知道如何利用消息编写控件 • 了解Delphi VCL的框架,知道该用什么控件来 完成什么样的功能,如果自己要编写控件,该 从哪里去继承 • 能够通过Delphi编写一个简单的控件,能够使 用属性编辑器,知道怎么样去封装控件,以便 达到重用目的 • 了解一些简单的OTA机制,能够简单地控制 Delphi开发环境

Delphi控件开发教程

Delphi控件开发教程

Delphi控件开发浅入深出(一)有人说过“不会开发控件的Delphi程序员不是真正的程序员”。

Delphi正是由于高度的可扩展性和大量的第三方控件的支持才能吸引无数程序员挑剔的目光。

即使是由于工作需要使用其他开发工具的开发者也常常怀念和Delphi度过的日日夜夜。

接触Delphi已经一年多了,从当初对着Delphi组件面板上上百个控件不知所措,到现在已经可以根据需要开发一些有一定难度的控件,其中走过的路是十分艰辛的,所以特此写下这篇文章,将自己的经验留给后来者,也算是献给“同门师弟”的一份厚礼吧!需要说明的一点是:在写这篇文章之前我假设读者已经对面向对象的基本知识有一定的了解,所以对于文章中面向对象相关的概念将不再展开讲述。

一、牛刀小试-TURLLabel控件我们从一个能够添加超链接的标签控件开始我们的控件开发之旅吧!既然是Label我们就从Tlabel派生这个控件吧(其实从TcustomLabel派生最好,不过出于简单的目的我们这里先从Tlabel派生)!1、选择“File”->“New”->“Component”,将弹出如下的对话框:在Ancestor type中选择Tlabel,ClassName中填入TURLLabel(名字可以任意取,但是要以T 开头,否则的话会出现注册控件时候的问题)。

这里Ancestor type代表控件的基类,TURLLabel 代表控件的名称。

2、超链接的视觉效果是带下划线的文字,所以我们覆盖父类的构造函数,在构造函数里修改控件的字体属性。

constructor TUrlLabel.Create(AOwner:TComponent);begininherited Create(AOwner);Cursor:=crHandPoint;Font.Style:= [fsUnderline];end;代码解释:(1)inherited Create(AOwner);这句的意思是执行父类的构造函数。

Delphi组件开发教程指南

Delphi组件开发教程指南

Delphi组件开发教程指南一、组件开发概述在开讲之前,首先,我假设你了解什么是面向对象,什么是类。

如果不了解的话,建议先去了解一下相关知识!在Delphi中,组件,我们可以将它理解为一个个的封装好了的功能对象库,使用这个库,就只用简单的几句代码,甚至仅仅简单的设置几个属性就能实现某些功能,我们可以将组件想象成日常生活中使用的某些工具,比如说收音机,我们不必了解其内部构造,只用在播放器上点一个收听按钮就能收听广播。

其实这不仅仅是Delphi组件,Delphi的中的各种对象库都是如此,比如TStingList,只用简单几句代码就能实现一些功能,组件与对象库本质相同,唯一不同的就是组件通过Delphi的IDE接口注册到了IDE中,可以进行可视化的设计,而其他的对象库,需要我们手动创建,然后调用!上面简单阐述了一下Delphi的组件的某些特性以及与其他对象库的一些区别。

下面,咱在说说Delphi的组件的构造层次,说到这个类的层次,有一个非常有名的Delphi对象层次图的(但是我不晓得在什么地方了,有兴趣的可以自己搜搜看,不看也不影响下面的讲解说明)。

上面说了,Delphi的组件其实也是一个对象库,也就是一个类,在Delphi中所有对象的基类都是TObject,组件的最最最基类也是TObject,这里有一个来源于网络的不完整的类结构图这个结构中组件的类层次用黑色粗体标记出来了,也就是TObject---------->TPersistent------------>TComponent------------->TControlTControl又继续分支TPersistent这个类,这个类是一个可持续化的对象库,只要从这个类继承下来的,都自动具备了串行化的功能,可以非常方便的读入与写入到流,这个特性就方便了组件中的属性信息能非常方便的记录到窗体资源文件。

TComponent这个就是所有Delphi组件的基类,所有想要注册到IDE直接进行可视化设计的对象库,都要从这个类继承。

Delphi安装卸载OCX控件的方法

Delphi安装卸载OCX控件的方法

/kf/201112/115123.html打开Delphi,关闭所有项目。

1. 安装OCX控件点击菜单项:Component -> Import ActiveX Control…进入如下界面:然后点击按钮“Add..”,弹出如下界面选择Ocx文件:注意:如果是DLL文件,则可能不会出现,需要将文件类型切换为所有。

选中目标文件后,该Ocx或者DLL对应的OCX控件会自动添加到列表中。

点击按钮“Install…”,弹出如下对话框,提示将控件安装到哪个控件包,系统默认是dclusr.dpk,即Delphi 默认的用户自定义控件包,选择默认值即可。

点击按钮“OK”后,即弹出如下dclusr.dpk的编辑界面,通常系统还会提示是否继续编译dclusr.dpk,选择“Yes”。

如果正常编译完成,则Ocx控件会被添加到Delphi IDE 控件栏的ActiveX页面。

1. 卸载OCX控件点击菜单项:Component -> Import ActiveX Control…界面同第1步,此略。

选中需要移除的OCX控件后,点击按钮“Remove”,系统会弹出确认对话框,点击“Yes”后,即可以移除该OCX在系统中的注册信息,理论上,将该控件拖放到窗体中会出现异常信息。

但是在用户的自定义控件包中尚存留文件,需要在空白的Delphi环境中打开自定义控件包文件,该文件通常在如下路径可以找到:c:\borland\delphi6\LIB\dclusr.dpk打开该文件后,会弹出如下界面:在上述界面中,选中需要移除的文件(可能不止一个)并点击按钮“Remove”。

然后点击按钮“Compile”对该控件包重新编译。

如果编译正常的话,会提示该控件已经移除,且会从Delphi IDE控件栏的ActiveX页面中消失。

【完】摘自 xt_chaoji的专栏。

delphi教程

delphi教程

Delphi教程什么是Delphi?Delphi是一种编程语言和集成开发环境(IDE),用于开发跨平台的Windows应用程序。

它是由Embarcadero Technologies公司开发的,首次发布于1995年。

Delphi基于Object Pascal语言,具有强大的开发工具和丰富的类库,使开发人员能够快速构建可靠和强大的应用程序。

Delphi的特点Delphi具有许多令人称赞的特点,这些特点使其成为许多开发人员首选的开发工具。

1. 面向对象编程(OOP)Delphi是一个面向对象的编程语言,支持封装、继承和多态等OOP概念。

面向对象编程使得代码更具可重用性和可维护性,开发人员可以更加高效地编写和组织代码。

2. 可视化开发Delphi使用可视化开发工具,如窗体设计器和组件库,使开发人员能够通过拖放和设置属性的方式创建用户界面。

这种可视化开发方式对于快速原型设计和用户界面调整非常有帮助。

3. 强大的集成开发环境(IDE)Delphi提供了一套强大的集成开发环境,其中包括代码编辑器、调试器、编译器、版本控制和用户界面设计工具等。

这些工具使开发人员能够在一个集成的环境中完成所有开发任务,提高了开发效率。

4. 多平台支持Delphi支持跨平台开发,可以在Windows操作系统上开发应用程序,也可以将应用程序移植到其他平台,如iOS和Android。

这种多平台支持使得开发人员可以更好地达到更广泛的用户群体。

Delphi的应用领域Delphi适用于各种类型的应用程序开发,从桌面应用程序到互联网应用程序,都可以使用Delphi进行开发。

1. 桌面应用程序Delphi可以用于开发各种类型的桌面应用程序,如图形用户界面(GUI)应用程序、数据库应用程序、科学计算应用程序等。

它提供了丰富的组件库和可视化开发工具,使开发人员能够轻松构建功能强大的桌面应用程序。

2. 互联网应用程序Delphi也可以用于开发互联网、Web和移动应用程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Delphi快速开发OCX步骤
首先要弄明白你要写的OC X是用在客户端还是用在服务器端
假如用在客户端:
1、创建
打开delphi 7,选择菜单“new”->“other”->“activex”->“active form”->输入项目名称,系统自动给你创建了3个文件,一个是项目文件,一个是form的单元文件,还有一个后缀带TLB 的文件。

这三个文件中的你只需要更改form的单元文件,项目文件一般不需要写什么,TLB文件有系统自动维护。

2、增加接口函数
所谓接口函数就是调用OCX的程序可以直接调用的函数,如果你要写的函数不提供外部函数可以按常规声明就可以。

但要声明接口函数则必须按步骤声明,有两种途径,
其一:选择form单元文件,然后点击“edit”->“add to interface”,弹出一个对话框,输入要声明的函数,如:function fun:integer;
其二:选择form单位文件,然后点击“view”->“Type Library”,弹出一个对话框,然后点击工具栏中“add a interface”可以增加函数或过程。

说明:在这里注意几个地方,
第一,一定要选form文件才可以,否则相应的菜单都是不可用的;
第二、声明函数或过程的参数类型要注意string->BSTR(第二种途径)或WideString(第一种途径)。

增加属性也函数类同。

3、调试
我是用html调试的,所以可用在delphi种配置run的参数“run”->“parametes”,弹出一对话框,在“host application”中输入C:\Program Files\Internet Explorer\IEXPLORE.EXE,在“parametes”中http://192.168.6.9/my.htm,这样就可以调试delphi代码了
4、发布
在没有build前,可以“project”->“web deployment”中配置(主要输入ocx的地址和web 服务器的url),然后可以“web deploy”发布,其实就是生成了一个htm文件,不过该文件里包含了调用方法而已。

但是delphi好像至运行执行一次,发布后这两个菜单就不可用
了,甚至刚开始我不知道,直接编译了,编译后该菜单也不可用了。

说明:如果没有用“web deploy”发布,而想在网页中调用的,就要知道该ocx的GUID,可以在TLB文件中找,CLASS_XXX后面的就是,这一点也需要注意。

5、数字签名
要想网页能够顺利使用ocx,就需要数字签名,否则IE直接就给干掉了,当然IE安全级调低除外。

关于生成测试数字签名的方法,网上很多。

我想要说得是,测试数字证书只能用在win2000系统,用在XP,特别是打了补丁的XP,根本不行。

另外也可以参考《使用Delphi快速开发ActiveX控件》这篇文章
如果用在服务器端:
其实应该是COM组件了吧,asp的调用方式是<% set obj=Server.CreateObject("DelphiCom.Test2") %> 1、创建打开delphi 7,选择菜单“new”->“other”->“activex”->“active libray”生成一个项目,然后再“new”->“other”->“activex”->“automation object”,然后参照上面增加接口函数,就可以。

不过编译出来是个dll,但是是可以注册的dll。

“automation object”也可以换成“com object”,但两者是有区别的,具体可以网上查询。

相关文档
最新文档