李紅巖,張忠華
哈爾濱醫科大學大慶校區醫學信息學系,黑龍江大慶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