Delphi ActiveX Form的使用实例

Delphi ActiveX Form的使用实例

By knityster

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  Form

Delphi提供了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);

begin

  ShowMessage(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控件。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值