李红岩,张忠华
哈尔滨医科大学大庆校区医学信息学系,黑龙江大庆163319
在多媒体课件制作领域,Authorware一直占据着重要的统治地位,该软件以其功能强大,扩展性强,编程简单而深受课件制作人员的喜爱[1]。对于高级课件开发人员来说,将Authorware课件与数据库相结合,开发更加复杂的课件也是一种常用技术。但就Authorware而言,其数据库应用能力相当有限,不足以应付各种复杂的数据库应用需求。所以,利用外来ActiveX控件提高Authorware课件的数据库应用能力就成为首选方法。在可以插入的ActiveX控件当中,Forms 2.0是目前较好的一款,利用它,Authorware可以开发出类似于其他高级语言窗体的界面,使Authorware的数据库应用能力上了一个新的台阶。
Forms 2.0控件是微软开发的一类ActiveX控件,在Authorware环境中可以查得Forms 2.0控件包含用于表单窗体开发用的各种标准控件共14种(如表1所示),是专为各种开发语言设计的用于某一功能的独立组件,将控件嵌入开发语言后,可以扩充某一编程语言的功能与应用范围,间接延伸了编程开发语言的应用领域,实现了高效率的代码重用[2]。Forms威者2.0控件一般在安装Windows XP系统时自动安装,其主文件为FM20.DLL,表明这个文件是一个动态链接库文件,存放于系统Windowssystem32文件夹下。在Authorware 7.0中调用Forms 2.0中的各个控件,需要注册才能使用。如果在播放课件的计算机上指定文件夹下没有FM20.DLL文件,应先安装FM20.DLL(以前系统安装过VS、VB等语言和Office软件,此控件就已安装)。
表1 Microsoft Forms 2.0控件一览表
ActiveX控件必须在系统中进行注册才能使用,注册的方法主要有以下3种途径:一是用Regsvr 32.exe程序对ActiveX控件进行注册;二是用安装程序进行注册;三是利用Authorware系统函数进行注册[3]。
为方便用户使用,开发人员应在课件中对fm 20.dll控件实现自动注册与注册操作。Authorware提供了以下3条函数可供使用:
1.2.1 ActiveXControlQuery(CLASSID)函数
用于查询ActiveX控件是否注册,每种ActiveX控件均有一个系统内的专用的CLASSID,当参数CLASSID为“{8BD21D30-EC42-11CE-9E0D-00AA006002F3}”时,可查询Froms 2.0控件是否注册,如已注册返回-1,否则返回0。
1.2.2 ActiveXControlRegister(FileName)函数
用于注册ActiveX控件,将参数FileName换成“fm20.dll”,可实现对msForms2.0控件的自动注册。
1.2.3 ActiveXControlUnRegister(FileName)函数用于注销ActiveX控件,将参数FileName换成“fm20.dll”,可对msForms2.0控件进行自动注销。
开发人员在Authorware 7.0中可以方便地使用Forms 2.0各控件的属性和方法。设置ActiveX控件属性的函数语法格式为:
SetSpriteProperty(@"SpriteIconTitle",#Property,value)
其中SpriteIconTitle表示ActiveX控件名称,Property表示ActiveX控件属性,value表示设置的值。
如果要使用控件的事件,则可使用CallSprite函数,其格式为:
CallSprite(@"SpriteIconTitle",#method[,argument...])
其中的method表示使用的方法,如有参数可用逗号隔开[4]。
在Authorware环境中,要实现对数据库的操作,应该用到开放数据库互连(open database connectivity,ODBC)。ODBC是微软公司WOSA(开放服务结构)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组访问数据库的标准API[5]。它使用一种强大而灵活的数据库访问标准,使用分层体系结构实现对数据库的操作,通过驱动程序提供了良好的数据库独立性[6]。目前标准的关系数据库均全面支持ODBC驱动,用户可在不依赖DBMS的情况下,通过ODBC,直接使用SQL语句操作数据库,完成数据库的各种应用。在Authorware中,访问数据库是通过SQL实现的。用SQL语言书写的查询操作可以通过应用程序传送给ODBC系统,再由ODBC系统将查询的结果传送给应用程序[7]。结果是,即使用户没有在当前计算机上安装相关数据库管理系统,仍能正常使用数据库文件,进行各种数据库应用。
使用ODBC的第一步要配置数据源。配置数据源的方法有两种:一种是在系统中直接进入“管理工具”中的“数据源(ODBC)”,在面板中进行数据源的配置。这种方法灵活性不佳,不利于课件的自动使用,需在每台机器上进行人工操作,略显繁琐;第二种方法是通过Authorware的函数面板选择tMSDSN.u32文件中的tMsDBRegister函数,将其载入,再在计算图标中编写代码,实现ODBC的自动配置。代码格式为:
其中,各项参数如表2所示。
表2 tMsDBRegister()函数各参数项配置及使用方法
完成ODBC配置以后,应用数据源时还要经过打开数据源,执行SQL语句和关闭数据源等操作。相关操作需要用到ODBC.u32文件的ODBCOpen、ODBCExecute、ODBCClose三个函数,实现ODBC的打开、数据操作与ODBC的关闭[8]等必要的数据库操作。使用Authorware的函数面板载入ODBC.u32文件的ODBCOpen、ODBCExecute、ODBCClose三个函数。
打开ODBC的程序代码为:ODBCHandle:=ODB COpen(WindowHandle,“ODBC错误”,“Stu1”,,),而关闭ODBC的程序代码是:ODBCClose(ODBCHandle)。
在上述的知识基础之上,就可以在Authorware中对Forms 2.0控件进行应用了。以信息系统分析与设计课件课后练习题为例,在流程线上加入了Label和4个RadioButton控件,Label控件用于显示题干内容,4个RadioButton控件用于显示备选答案,这4个控件在使用时只能多选一。按图1创建流程。
图1 主流程线图标设计图
程序查询设计时应使用SQL语言中的Select语句,SQL是Structured Query Language的英文缩写,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言,成为关系数据库的标准语言[9]。标准的SQL语言共有9条语句,涵盖了数据库的所有操作。Select命令是最常用的查询命令,不仅能够实现选择和投影操作,还可以通过聚集函数[10](Count,sum,avg,max,min)实现统计操作。只是Authorware没有那么强大的命令与之配套使用,所以操作必须使用数组来保存查询结果。程序的设计思路是:为实现逐条记录查询,需预先根据记录的数量,先期定义足够多元素的数组用来保存查询结果,用循环命令对每条记录的每个字段的数据单独查询,并将结果保存到数组的相应元素中,当需要显示下一条或上一条记录时,只需改变数组的下标变量即可,具体代码如下所示:
nn:=ODBCExecute(ODBCHandle,"select count(*)from选择题库")—取得记录个数
data:=Array(,nn,7)
couname:=Array(,7)
couname[1]:="id"
couname[2]:="题干"
couname[3]:="A"
couname[4]:="B"
couname[5]:="C"
couname[6]:="D"
couname[7]:="答案"
repeat with i:=1 to nn
recid:=i
repeat with j:=1 to 7
sqlstring:="select"^couname[j]^"from选择题库where id="^String(recid)
data[i,j]:=ODBCExecute(ODBCHandle,sqlstring)
end repeat
end repeat
—将结果保存到数组元素中
n:=1
SetSpriteProperty(@"题干",#Caption,String(data[n,1])^"."^data[n,2])
SetSpriteProperty(@"A",#Caption,data[n,3])
SetSpriteProperty(@"B",#Caption,data[n,4])
SetSpriteProperty(@"C",#Caption,data[n,5])
SetSpriteProperty(@"D",#Caption,data[n,6])
—显示第一题内容及备选答案
jg:=""
图2 程序运行效果图
以上是一个逐条显示选择题并允许用户操作练习的课件实例,用到的控件比较有限,但有较大的代表性。各控件属性可在选择ActiveX控件图标时,选择属性面板中的“选项”按钮来查看,在选项窗口中会有Property、Method、Events和CallString等页的内容供使用和设置,有些属性可能在Property中没有列出,但可以在CallString中查到并应用,如上例中的ComboBox控件中的ListIndex属性就是如此。该文中涉及到的数据库文件需与课件放在同一文件夹下,一旦有了数据库文件,在播放课件的计算机上不需安装ACCESS数据库管理系统。以上方法在Windows 7、Windows XP和Authorware 7.0环境中调试实现。当然在设计思想和技巧方面可能还存在一定的修改余地,请同仁们批评指正。
[1]李若瑾,王丽萍.Authorware 7.0实例教程[M].2版.北京:电子工业出版社,2010:1-5
[2]京辉热点工作室.Authorware 5入门与提高[M].北京:人民邮电出版社,2000:276-280
[3]苏贵斌,谭巍,马季骕.C/S架构Authorware应用程序中ActiveX控件的实现[J].内蒙古大学学报:自然科学版,2004,35(6):693-696
[4]张淮中.Authorware中的ActiveX控件的使用[J].微电子学与计算机,2000,17(2):28-30
[5]孙志雷.在Authorware中如何实现对数据库的操作[J].电脑知识与技术,2007,4(21):633-634
[6]李志伟.基于ODBC的数据库系统应用程序的移植[J].计算机工程与设计,2009,30(12):2985
[7]邓朝晖,李发英,李景福.Authorware对数据库的操作[J].科学技术与工程,2006,6(2):242-244
[8]郭新房,倪宝童,王健,等.Authorware 7.0多媒体制作基础教程与案例实践[M].北京:清华大学出版社,2007:265-266
[9]王珊,陈红.数据库系统原理教程[M].北京:清华大学出版社,2010:66-67
[10]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006:250