李紅巖,李 萌,寧梓淯
哈爾濱醫(yī)科大學(xué)大慶校區(qū),黑龍江 大慶 163319
作為一款多媒體開發(fā)軟件平臺,Authorware以其易學(xué)易用、功能強大、交互功能較好的優(yōu)點而具有了較高的人氣指數(shù),在多媒體研發(fā)領(lǐng)域一直占據(jù)著重要的一席之地,也令許多多媒體開發(fā)人員在其他軟件版本更疊速度很高的今天仍對Authorware 7保持眷戀。在數(shù)據(jù)庫應(yīng)用方面,Authorware雖不能直接訪問數(shù)據(jù)庫,卻可以通過Microsoft的開放數(shù)據(jù)庫互聯(lián)即ODBC(open database connective)實現(xiàn)數(shù)據(jù)庫操作[1],數(shù)據(jù)交換完全基于ODBC技術(shù)規(guī)范[2]。但Authorware在數(shù)據(jù)庫應(yīng)用方面的表現(xiàn)卻存在很多問題,功能相對簡單,存在局限性,這是制約Authorware向更加復(fù)雜應(yīng)用方向發(fā)展的一個技術(shù)瓶頸。在這方面很多開發(fā)人員也做了很多努力。筆者在研究他人成果的基礎(chǔ)上,結(jié)合自己的開發(fā)經(jīng)驗,認(rèn)為ActiveX控件技術(shù)為Authorware提供了強大的生命力。用其他語言開發(fā)ActiveX控件,并為Authorware所用是一種較為經(jīng)濟和實用的有效途徑。
ActiveX是Microsoft的元素軟件標(biāo)準(zhǔn)。簡單地說,ActiveX技術(shù)是一種共享程序數(shù)據(jù)和功能的技術(shù),它由微軟提出并大力推廣,并已成為事實上的標(biāo)準(zhǔn)[3]。ActiveX是一組基于組件模型(component object model,COM)的技術(shù),其目標(biāo)是提供一種與操作系統(tǒng)平臺無關(guān)的、可在應(yīng)用程序之間相互訪問對象的機制。ActiveX技術(shù)的優(yōu)點是可以靈活、高效地插入到應(yīng)用程序中,方便實現(xiàn)代碼重用[4]。
ActiveX控件的開發(fā)真正實現(xiàn)了語言無關(guān)性,各種開發(fā)語言只要具備ActiveX控件的開發(fā)功能均能制作符合要求的ActiveX控件,如VC++、VB、Delphi等。不過制作出的ActiveX控件需要經(jīng)過系統(tǒng)注冊,才可以在其他軟件中被正常調(diào)用。
Visual Basic是微軟公司的一款開發(fā)語言,功能完善,具有較強的數(shù)據(jù)庫應(yīng)用能力,屬全編譯系統(tǒng)工具,可以制作OCX類型的和DLL類型的ActiveX控件,開發(fā)者只要按數(shù)據(jù)庫應(yīng)用需求設(shè)計控件的界面和代碼即可。該文以O(shè)CX類控件為例。
VB的數(shù)據(jù)庫應(yīng)用是建立在ADO控件基礎(chǔ)上完成的。ActiveX數(shù)據(jù)對象(activeX data object,ADO)是應(yīng)用層的編程接口,ActiveX數(shù)據(jù)對象ADO封裝并實現(xiàn)了OLE DB的所有功能,它通過OLE DB提供的COM接口訪問數(shù)據(jù),可訪問各種類型的數(shù)據(jù)源,既適合于 SQL Server、Oracle、Access等數(shù)據(jù)庫應(yīng)用程序,也適合于Excel電子表格、文本文件和郵件服務(wù)器[5],具有較好的靈活性與實用性。
VB提供的Adodc控件,實際上是將ADO的Connection、Command、RecordSet、Error、Parameter 和 Field對象及功能結(jié)合在一個可視化的控件中,使用該控件操作數(shù)據(jù)庫時,不用編寫許多代碼,可以直接完成[6]。應(yīng)用時,由于Adodc控件不是內(nèi)部標(biāo)準(zhǔn)控件,所以不直接存在于工具箱中,需手工添加。使用“工程”→“部件”命令,在窗口中勾選“Microsoft ADO Data Control”項,單擊確定按鈕后可在工具箱中看到Adodc控件。Adodc控件在應(yīng)用時需在其“屬性頁”中設(shè)置連接字符或數(shù)據(jù)源、指定數(shù)據(jù)源后才能用其他控件綁定數(shù)據(jù)源進行數(shù)據(jù)庫應(yīng)用。
VB 中的 Label、TextBox、ListBox、ComboBox、Check Box、Image、Picture等內(nèi)部標(biāo)準(zhǔn)控件可以綁定到窗體上任意一個ADO數(shù)據(jù)控件上,要完成綁定需要設(shè)置綁定控件的兩個主要屬性:DataSource和DataField,可以在屬性窗口中找到它[7]。
在VB的新建項目中選擇“ActiveX控件”項,可在對象窗口中設(shè)計具體的控件對象與代碼。該例設(shè)計一個選擇題控件,將數(shù)據(jù)庫中的題目順序顯示、答題和查看答案。首先將控件大小調(diào)整好,并在控件上按3.1中的方法添加Adodc控件。在添加的Adodc1對象上單擊右鍵,選擇“屬性頁”,出現(xiàn)屬性頁窗口,選取ODBC數(shù)據(jù)源名稱(在Authorware中預(yù)先設(shè)定)和記錄源,具體各項使用與含義請參閱有關(guān)VB書籍。Adodc對象設(shè)置完畢后,在控件窗體上添加各種需要的控件,并在各自的屬性窗口中用DataSource屬性綁定數(shù)據(jù)源,用DataField屬性綁定字段,在相應(yīng)按鈕的Click事件中添加代碼(如圖1所示),其中“答案”按鈕的代碼為:
圖1 設(shè)計環(huán)境與相應(yīng)代碼界面圖
筆者同時也設(shè)計了用于試題維護的ActiveX控件,實現(xiàn)了對數(shù)據(jù)庫表中試題的增加、更新與刪除等操作,在VB中實現(xiàn)這樣的操作使用窗體控件與SQL語句將使應(yīng)用變得非常簡單。
控件調(diào)試成功后,選擇“文件”菜單中的“生成XXX.OCX”命令,其中的XXX代表控件名稱,編譯完成后會在指定文件夾中生成相應(yīng)的OCX文件。
在使用ActiveX控件之前,一定要對該控件進行系統(tǒng)注冊。注冊分為兩種:一種為手動注冊,一種在Authorware中用程序代碼自動注冊。多數(shù)情況下選擇自動注冊,手動注冊僅僅在調(diào)試時比較常用。Authorware提供了ActiveX控件注冊和撤消注冊兩個函數(shù),語法格式如下:
ActiveXControlRegister(″FileName″),其中的 File Name應(yīng)包含文件路徑和文件名。
ActiveXControlUnRegister(″FileName″)為撤消ActiveX 控件注冊[8]。
該例中的ActiveX控件choice.ocx注冊代碼為:
ActiveXControlRegister(FileLocation^″choice.ocx″);
在Authorware中應(yīng)用ActiveX控件前必須保證控件已被注冊,所以為實現(xiàn)控件的自動運行,可在流程線上的ActiveX控件圖標(biāo)前用計算圖標(biāo)實現(xiàn)注冊,如果ActiveX控件被注冊,用戶可用“插入”→“控件”→“ActiveX”命令打開ActiveX Control對話框。先前制作的ActiveX控件會出現(xiàn)在對話框中,如圖2所示。選擇后確定就可以將此ActiveX控件添加到流程線上,同時顯示控件的屬性窗口,以供用戶設(shè)置。
圖2 添加ActiveX控件
完成ActiveX控件添加后就可以運行程序看到最終的運行效果,如圖3所示。
圖3 課件流程圖與運行效果圖
通過流程圖可以看出,在使用過程中先行在Authorware中實現(xiàn)數(shù)據(jù)庫連接,然后調(diào)用自制的ActiveX控件,“連接數(shù)據(jù)庫”圖標(biāo)中的代碼如下:
dbType:="Microsoft Access Driver(*.mdb)"—表示使用access數(shù)據(jù)庫驅(qū)動
另外,試題庫維護模塊的運行效果如圖4所示。
圖4 題庫維護控件的運行效果界面圖
ActiveX技術(shù)是基于COM的組件技術(shù),可以在網(wǎng)絡(luò)中實現(xiàn)資源的共享與信息的通訊,為解決Authorware的功能擴展提供了一條簡便的技術(shù)途徑。目前COM組件技術(shù)已經(jīng)得到了很大的發(fā)展,已經(jīng)滲透到Internet各種軟件中去,包括一些基本的協(xié)議軟件[9]。文中所用實例采用 VB6開發(fā),數(shù)據(jù)庫采用ACCESS,課件打包后,在Windows 2000、Windows XP 和Windows 7等操作系統(tǒng)中正常運行。
制作ActiveX的同時,用戶也可以根據(jù)需要定制相關(guān)的控件屬性與事件,Authorware同樣為ActiveX控件的這些屬性和事件的調(diào)用提供了GetSprite Property、SetSpriteProperty 和 CallSprite 函數(shù)[10]。當(dāng)然,在Authorware實際應(yīng)用數(shù)據(jù)庫的過程中還會有種種的不完善,需更好地去解決,但AxtiveX技術(shù)利用了高級語言的標(biāo)準(zhǔn)化控件工具所提供的良好數(shù)據(jù)庫開發(fā)環(huán)境,結(jié)合Authorware的自身特點,實現(xiàn)了較強的數(shù)據(jù)庫應(yīng)用能力,這些無疑是擴展Authorware數(shù)據(jù)庫應(yīng)用能力的一種有效手段。
[1]蘇旺輝,田麗娜,霍錦霞,等.利用ODBC接口加強Authorware題庫系統(tǒng)的開發(fā)[J].甘肅科學(xué)學(xué)報,2008,20(2):156-158
[2]李紅巖.基于數(shù)據(jù)庫的Authorware動態(tài)開發(fā)技術(shù)與應(yīng)用[J].中國醫(yī)學(xué)教育技術(shù),2008,22(3):294-295
[3]李媛.ActiveX 控件的應(yīng)用[J].電腦開發(fā)與應(yīng)用,2011,24(4):56-58
[4]臺安,胡懷瑾,李懷成.基于ActiveX組件技術(shù)的VFP在Web中的應(yīng)用[J].計算機與現(xiàn)代化,2010,(4):98-102
[5]王祥瑞,黃國華.ADO數(shù)據(jù)庫訪問技術(shù)[J].長春大學(xué)學(xué)報:自然科學(xué)版,2010,20(1):62-63
[6]蔣加伏,張林峰.Visual Basic程序設(shè)計教程[M].北京:北京郵電大學(xué)出版社,2009:291-293
[7]王曉敏,徐曉敏.Visual Basic程序設(shè)計[M].2版.北京:中國鐵道出版社,2008:246
[8]郭新房,倪寶童,王健,等.Authorware 7.0 多媒體制作基礎(chǔ)教程與案例實踐[M].北京:清華大學(xué)出版社,2007:252-253
[9]張盛,盧建華,盧欣華.COM 組件技術(shù)研究[J].科技信息,2008,(26):11-12
[10]施澤權(quán),胡鑒新.淺淡ActiveX控件在Authorware中的應(yīng)用[J].中國科技信息,2008,(8):111