您的位置:首页 > 其它

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

2011-04-04 11:17 946 查看
随着计算机的普及,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@[code]“SpriteIconTitle”
,
#property
,
value
)[/code]
该函数用于设置ActiveX控件的属性,第一个参数SpriteIconTitle是ActiveX控件的名称,property是控件的属性名,value是属性的值。

2. result := GetSpriteProperty(IconID@“SpriteIconTitle”, [code]#property
)[/code]
该函数用于读取ActiveX控件的属性值,返回值(result)是ActiveX控件的property属性的属性值,第一个参数SpriteIconTitle是ActiveX控件的名称,property是控件的属性名称。

3. result := CallSprite([code]IconID@
''
SpriteIconTitle
'',
#method
[,
argument
...])[/code]
该函数用于调用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控件

在Authorware中新建一个文件,在其中插入ActiveX控件“ActiveDaoHang”控件,命名该ActiveX控件图标为“Daohang”,后面插入一个计算图标,打开计算图标对ActiveX控件“ActiveDaoHang”进行初始化,如程序清单5。
程序清单5:
SetSpriteProperty(@"DaoHang", #IniFileName, "E://Group.ini")
通过程序清单5,课件初始化“ActiveDaoHang”控件,插入一个交互图标,在交互图标中添加一个计算图标,命名为OnChange,修改计算图标“OnChange”的“交互”类型为“事件”,选择发送“图标导航”的事件“OnChange”,这样就将单击TRzGroupItem的事件传递给了计算图标“OnChange”,打开计算图标“OnChange”添加Authorware代码实现导航,如程序清单6。
程序清单6:
Link := GetSpriteProperty(@"DaoHang", #Link)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐