适用于Authorware课件的导航功能的ActiveX控件的设计和实现

  • 格式:doc
  • 大小:44.00 KB
  • 文档页数:6

基于Authorware课件的具有导航功能的ActiveX控件的设计和实现

贺大喜

摘要: Authorware是Macromedia公司推出的、功能强大的多媒体制作软件,它广泛应用于教学课件的制作上。本文根据Authorware自身的缺点,讲述了如何利用Delphi设计具有Authorware课件导航功能的ActiveX控件。

关键字:ActiveX; Authorware; Delphi;

引言

随着计算机的普及,Authorware已经步入了校园、企业和部队。由于Authorware有多媒体制作的优势,以及制作简单,Authorware受到学校教师、企业和部队培训人员的高度关注,每年都有很多优秀的Authorware课件面世。Authorware给课件设计者提供了8种默认的导航按钮,如果要设计出美观漂亮的导航工具来,则必须通过其它的途径。本文结合Authorware能够和ActiveX控件进行交互的特点,介绍如何运用Delphi2007设计具有导航功能的ActiveX控件。

一. ActiveX控件简介

ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。ActiveX控件是一个可以在Windows、Mac操作系统中运行的程序,是一种可以重用的软件组件,通过使用 ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。一个ActiveX控件可由不同语言的开发工具开发,比较常用的开发工具有Delphi、VC、VB、VC#和PowerBuilder等。 二. Authorware与ActiveX控件之间的交互

Authorware提供了SetSpriteProperty、 GetSpriteProperty和CallSprite三个函数与ActiveX控件进行交互。

1. SetSpriteProperty(IconID@“SpriteIconTitle”, #property, value)

该函数用于设置ActiveX控件的属性,第一个参数SpriteIconTitle是ActiveX控件的名称,property是控件的属性名,value是属性的值。

2. result := GetSpriteProperty(IconID@“SpriteIconTitle”, #property)

该函数用于读取ActiveX控件的属性值,返回值(result)是ActiveX控件的property属性的属性值,第一个参数SpriteIconTitle是ActiveX控件的名称,property是控件的属性名称。

3. result := CallSprite(IconID@''SpriteIconTitle'', #method [, argument...])

该函数用于调用ActiveX控件的方法,第一个参数SpriteIconTitle是该ActiveX控件的名称,method是该控件的方法,argument是该方法的参数,如果该方法有返回值,则result就是其返回值。

Authorware通过这三个函数控制ActiveX控件。

三. 具有导航功能的ActiveX控件的设计

Delphi是Windows平台下著名的快速应用程序开发工具,它的前身是基于DOS时代盛行一时的“Borland Turbo Pascal”,最早的版本由美国Borland公司于1995年开发,主创者为Anders Hejlsberg,经过数年的发展,此开发工具先转移到CodeGear公司,目前已转移至Embarcadero公司旗下,Delphi2007就是CodeGear公司于2007年推出的Delphi开发工具。

在Authorware中很难实现具有导航功能的Outlook视图、Category视图和树视图。Delphi开发环境不仅提供了很多标准控件,而且也支持第三方控件,Raise控件组就是Delphi支持的第三方控件中比较著名的界面控件,下面将讲述如何通过Raise控件组中TRzGroupBar控件来创建界面美观的具有导航功能的Category视图。

先通过Delphi2007的新建向导创建一个空的ActiveX Library工程,将工程保存为“Daohang”,再通过新建向导创建一个ActiveX Form,修改该ActiveX Form名称为“ActiveDaoHang”,这时就创建了一个ActiveX控件,同时也定义了两个个接口“IActiveDaoHang”和“IActiveDaoHangEvents”,其中“IActiveDaoHang”是定义ActiveX控件的属性和方法的接口,“IActiveDaoHangEvents”是定义Active -X控件的事件的接口,目前该控件没有任何导航的功能。在ActiveX Form中添加一个TRzGroupBar控件,设置TRzGroupBar的属性“style”为“gbsCategory

-View”,“Name”为“GroupBar”。

3.1 ActiveX控件的初始化

要设计一个灵活的ActiveX控件,在调用ActiveX控件之初,对其进行设置,就要给控件定义属性和方法;在控件完成某项具体操作后,要通知外部程序,就要给控件定义事件。在Delphi2007中,控件的属性定义和方法定义,是通过对“IActiveDaoHang”接口添加属性和方法实现的,本文设计一种通过配置文件来初始化ActiveX控件,INI文件是Windows平台下常用的配置文件,TrzGroupBar可以创建多个“TRzGroup”控件,每个“TRzGroup”控件表示一个一级目录,每个“TRzGroup”控件中可以创建若干个“TRzGroupItem”,每个“TRzGroupItem”可以通过属性“IndentLevel”来分级,可以创建多级目录。下面设计如何通过INI文件来创建导航目录。

程序清单1:

procedure CreateGroupBar(GroupBar : TRzGroupBar; IniFile : String);

var

Ini : TIniFile;

Group : TRzGroup;

Item : TRzGroupItem;

Count, i, j, tCount : integer;

s : String;

begin

try

Ini := TIniFile.Create(IniFile);

Count := Ini.ReadInteger('System', 'Count', 0);

for i := 1 to Count do

begin

s := Format('Group%d', [i]);

Group := TRzGroup.Create(GroupBar);

GroupBar.AddGroup(Group);

Group.Caption := Ini.ReadString(s, 'GroupName', '');

tCount := Ini.ReadInteger(s, 'Count', 0);

for j := 1 to tCount do begin

Item := Group.Items.Add;

Item.Caption := Ini.ReadString(s, Format('Item%d', [j]), '');

end;

end;

finally

FreeAndNil(Ini);

end;

end;

通过程序清单1,可以通过Ini文件创建Category视图,要在控件运行之初进行设置,必须给接口“IActiveDaoHang”添加属性“IniFileName”,该属性为只写属性,保存后Delphi2007自动在类TActiveDaoHang中添加设置属性过程“Set_IniFileName”,然后手动添加私有成员“FIniFileName”,并在设置属性过程中添加代码,如程序清单2。

程序清单2:

procedure TActiveDaoHang.Set_IniFileName(const Value: WideString);

begin

FIniFileName := Value;

CreateGroupBar(RzGroupBar1, FIniFileName);

end;

控件通过属性“IniFileName”就可以对其进行初始化。

3.2 ActiveX控件的导航功能设计

当用点击ActiveX控件中的TRzGroupItem项时,TRzGroupItem的单击事件将被激活,产生“OnClick”事件,在该事件函数中实现更新导航信息,并且通知主程序读取ActiveX控件的导航信息。在接口“IActiveDaoHang”接口中添加只读字符串属性“Link”,在接口“IActiveDaoHangEvents”中添加事件“OnChange”,在类TActiveDaoHang中添加FLinkString私有成员。在类成员函数Get_Link中添加代码实现接口属性“Link”,如程序清单3。

程序清单3:

function TActiveDaoHang.Get_Link: WideString;

begin

Result := FLinkString;

end; 下面在类TActiveDaoHang中添加私有成员过程 OnClickItem,OnClickItem的实现代码如程序清单4。

procedure TActiveDaoHang.OnClickItem(Sender : TObject);

var

Item : TRzGroupItem;

Group : TRzGroup;

Ini : TIniFile;

begin

Item := Sender as TRzGroupItem;

Group := Item.Group;

try

Ini := TIniFile.Create(FIniFileName);

FLinkString := Ini.ReadString(Group.Caption, Item.Caption, '');

if FEvents <> Nil then

FEvents.OnChange;

finally

FreeAndNil(Ini);

end;

end;

通过程序清单4,ActiveX控件就可以通过单击TRzGroupItem事件来进行导航。

3.3 编译和注册ActiveX控件

保存所有的工程文件,编译后的文件为“DaoHang.ocx”,然后通过控制台命令“Regsvr32 DaoHang.ocx”安装到Windows平台下。

四. Authorware课件中嵌入导航ActiveX控件