基于Authorware课件的具有导航功能的ActiveX控件的设计和实现
随着计算机的普及,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控件
在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)
基于Authorware课件的具有导航功能的ActiveX控件的设计和实现相关推荐
- 基于MFC的ActiveX控件开发
转自:http://www.cnblogs.com/lidabo/archive/2012/12/04/2800921.html ActiveX 控件是基于组件对象模型 (COM) 的可重用软件组件, ...
- 基于VS2013的ActiveX控件实现
1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... Activ ...
- mfc随记:基于vs2010创建MFC ActiveX控件并测试
一.新建一个空项目 以管理员打开vs2010,选择新建一个mfc activeX控件,填写项目名称和路径,其他无需修改,直接默认一直下一步即可 二. 添加测试方法 在底部tab栏切换到类视图,右键添加 ...
- C++基于ATL工程编写ActiveX控件
开发环境:VS2010 开发工程:C++ATL项目 开发目的:创建ActiveX实现js调用 步骤: 1. 创建一个ATL工程 应用程序类型选择动态链接库(DLL),勾选支持COM+1.0, ...
- OLE、OCX和ActiveX控件之间的比较
OLE(Object Linking and Embedding,对象连接与嵌入) 一.过去的OLE和今天的OLE 最初的OLE含义是指在程序之间链接和嵌入对象数据,它提供了建立混合文档的手段(资深W ...
- 常用的Activex 控件
1. Flash Player ActiveX Control 6.0.47.0 与FLASH 6.0配套的浏览器端动画播放插件 download.pchome. ...
- vc mysql控件_VC++使用ActiveX控件连接和操作数据库
VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...
- ActiveX控件和它的容器
1.COM基础 2.ActiveX控件及实现 3.ActiveX控件容器及实现 4.总结 1.COM基础 COM是一种组件开发技术, 它实际上是一种在二进制层上兼容的软件开发方法的规范. COM技术是 ...
- COM组件开发实践(七)---多线程ActiveX控件和自动调整ActiveX控件大小(上)
声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改而来,因此同样遵循Code Project Open L ...
最新文章
- C指针原理(3)-ATT汇编
- linux系统安装细节及磁盘分区划分
- 最长平台(信息学奥赛一本通-T1116)
- Node.js_1.1
- linux 改变 asm磁盘组 权限,DBCA时出现ASM磁盘组权限问题ORA-27303
- android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解
- 三丰三坐标编程基本步骤_日常皮肤护理的基本三步骤,问题皮肤不要作
- PCAN busoff问题解决方案
- 为什么你该培养多维度竞争力?
- 【mediacodec】MediaRecorder--MediaCodec
- 项目管理中的冲突管理
- RED5学习(二)——第一个red5项目
- 小秘谈币:炒币资深玩家所遇到的交易恐惧
- 等差数列java_java简单的编程(等差数列)
- 在WINDOWS 下删除EISA配置的隐藏分区
- 域名购买amp;备案amp;解析
- plsql备份还原oracle数据库,(已实践)PLSQL本地还原Oracle数据库dmp文件
- Linux如何给服务器增加白名单
- 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版
- 如何生成简单的BAT脚本
热门文章
- wx.login报40029
- 计算机视觉-目标检测(一):从 R-CNN 到 Faster R-CNN
- 全球及中国激光防护镜行业投资机会分析研究及企业经营战略建议报告2022-2027年版
- 打开PPT提示服务器暂时不可用,解决lync2013共享PPT出现“显示演示文稿时遇到问题,请重试”...
- Oracle删除索引 判断,Oracle索引(index)的分类、建立与删除
- 微信HOOK 4.实时消息获取
- 射频功率放大器的基本原理、分类、工作状态设计方法以及发展趋势
- 简易人事管理系统(pyqt5+mysql)
- java简体字繁体字互相转换(附jar包下载资源~)
- 服务器托管机房机柜租用的费用都有哪些