李紅巖,李 萌,寧梓淯
哈爾濱醫科大學大慶校區,黑龍江 大慶 163319
作為一款多媒體開發軟件平臺,Authorware以其易學易用、功能強大、交互功能較好的優點而具有了較高的人氣指數,在多媒體研發領域一直占據著重要的一席之地,也令許多多媒體開發人員在其他軟件版本更疊速度很高的今天仍對Authorware 7保持眷戀。在數據庫應用方面,Authorware雖不能直接訪問數據庫,卻可以通過Microsoft的開放數據庫互聯即ODBC(open database connective)實現數據庫操作[1],數據交換完全基于ODBC技術規范[2]。但Authorware在數據庫應用方面的表現卻存在很多問題,功能相對簡單,存在局限性,這是制約Authorware向更加復雜應用方向發展的一個技術瓶頸。在這方面很多開發人員也做了很多努力。筆者在研究他人成果的基礎上,結合自己的開發經驗,認為ActiveX控件技術為Authorware提供了強大的生命力。用其他語言開發ActiveX控件,并為Authorware所用是一種較為經濟和實用的有效途徑。
ActiveX是Microsoft的元素軟件標準。簡單地說,ActiveX技術是一種共享程序數據和功能的技術,它由微軟提出并大力推廣,并已成為事實上的標準[3]。ActiveX是一組基于組件模型(component object model,COM)的技術,其目標是提供一種與操作系統平臺無關的、可在應用程序之間相互訪問對象的機制。ActiveX技術的優點是可以靈活、高效地插入到應用程序中,方便實現代碼重用[4]。
ActiveX控件的開發真正實現了語言無關性,各種開發語言只要具備ActiveX控件的開發功能均能制作符合要求的ActiveX控件,如VC++、VB、Delphi等。不過制作出的ActiveX控件需要經過系統注冊,才可以在其他軟件中被正常調用。
Visual Basic是微軟公司的一款開發語言,功能完善,具有較強的數據庫應用能力,屬全編譯系統工具,可以制作OCX類型的和DLL類型的ActiveX控件,開發者只要按數據庫應用需求設計控件的界面和代碼即可。該文以OCX類控件為例。
VB的數據庫應用是建立在ADO控件基礎上完成的。ActiveX數據對象(activeX data object,ADO)是應用層的編程接口,ActiveX數據對象ADO封裝并實現了OLE DB的所有功能,它通過OLE DB提供的COM接口訪問數據,可訪問各種類型的數據源,既適合于 SQL Server、Oracle、Access等數據庫應用程序,也適合于Excel電子表格、文本文件和郵件服務器[5],具有較好的靈活性與實用性。
VB提供的Adodc控件,實際上是將ADO的Connection、Command、RecordSet、Error、Parameter 和 Field對象及功能結合在一個可視化的控件中,使用該控件操作數據庫時,不用編寫許多代碼,可以直接完成[6]。應用時,由于Adodc控件不是內部標準控件,所以不直接存在于工具箱中,需手工添加。使用“工程”→“部件”命令,在窗口中勾選“Microsoft ADO Data Control”項,單擊確定按鈕后可在工具箱中看到Adodc控件。Adodc控件在應用時需在其“屬性頁”中設置連接字符或數據源、指定數據源后才能用其他控件綁定數據源進行數據庫應用。
VB 中的 Label、TextBox、ListBox、ComboBox、Check Box、Image、Picture等內部標準控件可以綁定到窗體上任意一個ADO數據控件上,要完成綁定需要設置綁定控件的兩個主要屬性:DataSource和DataField,可以在屬性窗口中找到它[7]。
在VB的新建項目中選擇“ActiveX控件”項,可在對象窗口中設計具體的控件對象與代碼。該例設計一個選擇題控件,將數據庫中的題目順序顯示、答題和查看答案。首先將控件大小調整好,并在控件上按3.1中的方法添加Adodc控件。在添加的Adodc1對象上單擊右鍵,選擇“屬性頁”,出現屬性頁窗口,選取ODBC數據源名稱(在Authorware中預先設定)和記錄源,具體各項使用與含義請參閱有關VB書籍。Adodc對象設置完畢后,在控件窗體上添加各種需要的控件,并在各自的屬性窗口中用DataSource屬性綁定數據源,用DataField屬性綁定字段,在相應按鈕的Click事件中添加代碼(如圖1所示),其中“答案”按鈕的代碼為:

圖1 設計環境與相應代碼界面圖

筆者同時也設計了用于試題維護的ActiveX控件,實現了對數據庫表中試題的增加、更新與刪除等操作,在VB中實現這樣的操作使用窗體控件與SQL語句將使應用變得非常簡單。
控件調試成功后,選擇“文件”菜單中的“生成XXX.OCX”命令,其中的XXX代表控件名稱,編譯完成后會在指定文件夾中生成相應的OCX文件。
在使用ActiveX控件之前,一定要對該控件進行系統注冊。注冊分為兩種:一種為手動注冊,一種在Authorware中用程序代碼自動注冊。多數情況下選擇自動注冊,手動注冊僅僅在調試時比較常用。Authorware提供了ActiveX控件注冊和撤消注冊兩個函數,語法格式如下:
ActiveXControlRegister(″FileName″),其中的 File Name應包含文件路徑和文件名。
ActiveXControlUnRegister(″FileName″)為撤消ActiveX 控件注冊[8]。
該例中的ActiveX控件choice.ocx注冊代碼為:
ActiveXControlRegister(FileLocation^″choice.ocx″);
在Authorware中應用ActiveX控件前必須保證控件已被注冊,所以為實現控件的自動運行,可在流程線上的ActiveX控件圖標前用計算圖標實現注冊,如果ActiveX控件被注冊,用戶可用“插入”→“控件”→“ActiveX”命令打開ActiveX Control對話框。先前制作的ActiveX控件會出現在對話框中,如圖2所示。選擇后確定就可以將此ActiveX控件添加到流程線上,同時顯示控件的屬性窗口,以供用戶設置。

圖2 添加ActiveX控件
完成ActiveX控件添加后就可以運行程序看到最終的運行效果,如圖3所示。

圖3 課件流程圖與運行效果圖
通過流程圖可以看出,在使用過程中先行在Authorware中實現數據庫連接,然后調用自制的ActiveX控件,“連接數據庫”圖標中的代碼如下:

dbType:="Microsoft Access Driver(*.mdb)"—表示使用access數據庫驅動

另外,試題庫維護模塊的運行效果如圖4所示。

圖4 題庫維護控件的運行效果界面圖
ActiveX技術是基于COM的組件技術,可以在網絡中實現資源的共享與信息的通訊,為解決Authorware的功能擴展提供了一條簡便的技術途徑。目前COM組件技術已經得到了很大的發展,已經滲透到Internet各種軟件中去,包括一些基本的協議軟件[9]。文中所用實例采用 VB6開發,數據庫采用ACCESS,課件打包后,在Windows 2000、Windows XP 和Windows 7等操作系統中正常運行。
制作ActiveX的同時,用戶也可以根據需要定制相關的控件屬性與事件,Authorware同樣為ActiveX控件的這些屬性和事件的調用提供了GetSprite Property、SetSpriteProperty 和 CallSprite 函數[10]。當然,在Authorware實際應用數據庫的過程中還會有種種的不完善,需更好地去解決,但AxtiveX技術利用了高級語言的標準化控件工具所提供的良好數據庫開發環境,結合Authorware的自身特點,實現了較強的數據庫應用能力,這些無疑是擴展Authorware數據庫應用能力的一種有效手段。
[1]蘇旺輝,田麗娜,霍錦霞,等.利用ODBC接口加強Authorware題庫系統的開發[J].甘肅科學學報,2008,20(2):156-158
[2]李紅巖.基于數據庫的Authorware動態開發技術與應用[J].中國醫學教育技術,2008,22(3):294-295
[3]李媛.ActiveX 控件的應用[J].電腦開發與應用,2011,24(4):56-58
[4]臺安,胡懷瑾,李懷成.基于ActiveX組件技術的VFP在Web中的應用[J].計算機與現代化,2010,(4):98-102
[5]王祥瑞,黃國華.ADO數據庫訪問技術[J].長春大學學報:自然科學版,2010,20(1):62-63
[6]蔣加伏,張林峰.Visual Basic程序設計教程[M].北京:北京郵電大學出版社,2009:291-293
[7]王曉敏,徐曉敏.Visual Basic程序設計[M].2版.北京:中國鐵道出版社,2008:246
[8]郭新房,倪寶童,王健,等.Authorware 7.0 多媒體制作基礎教程與案例實踐[M].北京:清華大學出版社,2007:252-253
[9]張盛,盧建華,盧欣華.COM 組件技術研究[J].科技信息,2008,(26):11-12
[10]施澤權,胡鑒新.淺淡ActiveX控件在Authorware中的應用[J].中國科技信息,2008,(8):111