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