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

来源:互联网 发布:sql server有什么优势 编辑:程序博客网 时间:2024/06/07 15:41

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

. ActiveX控件简介

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

.  AuthorwareActiveX控件之间的交互

Authorware提供了SetSpriteProperty GetSpritePropertyCallSprite三个函数与ActiveX控件进行交互。

1. SetSpriteProperty(IconID@SpriteIconTitle, #property, value)
函数用于设置ActiveX控件的属性,第一个参数SpriteIconTitleActiveX控件的名称,property是控件的属性名,value是属性的值。
2. result := GetSpriteProperty(IconID@“SpriteIconTitle”, #property)
函数用于读取ActiveX控件的属性值,返回值(result)ActiveX控件的property属性的属性值,第一个参数SpriteIconTitleActiveX控件的名称,property是控件的属性名称。
3. result := CallSprite(IconID@''SpriteIconTitle'', #method [, argument...])

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

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

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

       DelphiWindows平台下著名的快速应用程序开发工具,它的前身是基于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中添加私有成员过程 OnClickItemOnClickItem的实现代码如程序清单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;

通过程序清单4ActiveX控件就可以通过单击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)

原创粉丝点击