李紅巖,張忠華
哈爾濱醫(yī)科大學(xué)大慶校區(qū)醫(yī)學(xué)信息學(xué)系,黑龍江 大慶 163319
在多媒體課件制作領(lǐng)域,Authorware一直占據(jù)著重要的統(tǒng)治地位,該軟件以其功能強(qiáng)大、擴(kuò)展性強(qiáng)、編程簡單而深受課件制作人員的喜歡[1]。對于高級課件開發(fā)人員來說,課件中的動態(tài)統(tǒng)計(jì)圖實(shí)現(xiàn)方法是一種常用技術(shù),然而在各類技術(shù)參考文獻(xiàn)中卻極少涉及。為解決Authorware課件中的動態(tài)統(tǒng)計(jì)圖問題,筆者在實(shí)際開發(fā)過程中,借鑒其他語言統(tǒng)計(jì)圖實(shí)現(xiàn)思路[2],經(jīng)過不斷實(shí)踐,總結(jié)出了一套比較實(shí)用的動態(tài)統(tǒng)計(jì)圖制作方法,基本可以滿足課件對統(tǒng)計(jì)圖的需要。此方法在Autho rware環(huán)境中采用msChart控件與數(shù)據(jù)庫相結(jié)合,實(shí)現(xiàn)了動態(tài)統(tǒng)計(jì)圖效果,特點(diǎn)是方便快捷,制作方法簡單,便于技術(shù)實(shí)現(xiàn)。
ActiveX控件是專為各種開發(fā)語言設(shè)計(jì)的用于某一功能的獨(dú)立組件[3],嵌入開發(fā)語言后,可以擴(kuò)充某一編程語言的功能與應(yīng)用范圍,間接延伸了編程開發(fā)語言的應(yīng)用領(lǐng)域,實(shí)現(xiàn)了高效率的代碼重用[4]。Author ware 7.0也可調(diào)用大量的ActiveX控件,msChart就是微軟的一種ActiveX控件,專門用于形成統(tǒng)計(jì)圖表,是實(shí)現(xiàn)動態(tài)統(tǒng)計(jì)圖的顯示主體。其主文件是mschart 20.ocx,存放于系統(tǒng)windowssystem 32文件夾下,在Author ware 7.0中調(diào)用msChart控件,需要注冊才能使用。如果在播放課件的計(jì)算機(jī)上的指定文件夾下沒有mschart 20.ocx文件,應(yīng)先安裝mschart 20.ocx(若之以前系統(tǒng)安裝過VS、VB等語言,則此控件就已被安裝)。
為方便用戶使用,應(yīng)在課件中對msChart控件實(shí)現(xiàn)自動注冊與注冊操作。Author ware提供了以下3條函數(shù)可供使用:
①ActiveX ControlQuery(CLASS ID)函數(shù):用于查詢ActiveX控件是否注冊,當(dāng)參數(shù)CLASS ID為“{3A2B370CBA0A-11D1-B137-0000F8753F5D}”時(shí),可查詢msChart控件是否注冊,如已注冊返回-1,否則返回0;
②ActiveXControlRegister(FileName)函數(shù):用于注冊ActiveX控件,將參數(shù)FileName換成“mscChart 20.ocx”,可實(shí)現(xiàn)對msChart控件的自動注冊;
③ActiveXControlUnRegister(FileName)函數(shù):用于注銷ActiveX控件,將參數(shù)FileName換成“msChart20.ocx”,可對msChart控件進(jìn)行自動注銷。
筆者在課件中寫了簡單的注冊程序,用于實(shí)現(xiàn)對msChart控件的自動添加與注冊操作,考慮到目前多數(shù)計(jì)算機(jī)將系統(tǒng)安裝在硬盤C分區(qū),該文暫將系統(tǒng)目錄設(shè)定為C:W indows,讀者可根據(jù)各自計(jì)算機(jī)的實(shí)際情況靈活掌握,代碼僅供參考。
—檢測指定文件夾下是否存在msChart 20.ocx控件文件,如果沒有,在出現(xiàn)的對話框中將系統(tǒng)安全設(shè)置為中級以下,然后復(fù)制文件到指定位置;
—檢測msChart控件是否注冊,如果沒有注冊,直接注冊。
當(dāng)需要課件退出時(shí),可在一個(gè)計(jì)算圖標(biāo)中加入代碼:ActiveXContro lUnRegister(“mschart 20.ocx”),將msChart控件注銷。
開發(fā)人員在Authorware 7.0中可以方便地使用msChart控件的各種屬性、事件和方法,msChart控件的主要屬性如表1所示[5]。
表1 msChart控件的主要屬性
在Authorware 7.0環(huán)境中,設(shè)置ActiveX控件屬性的函數(shù)語法格式為:
其中,SpriteIconTitle表示ActiveX控件名稱,Property表示ActiveX控件屬性,value表示設(shè)置的值。
msChart控件顯示統(tǒng)計(jì)圖時(shí),需將所用到的數(shù)據(jù)先行包含在數(shù)據(jù)網(wǎng)格中[6],用戶需要用ColumnCount和RowCount設(shè)置數(shù)據(jù)網(wǎng)格的列數(shù)與行數(shù),然后通過設(shè)置Row和Column的值,使用SetSpriteProperty函數(shù),為msChart控件數(shù)據(jù)網(wǎng)格的相應(yīng)Data屬性賦值。當(dāng)所有Data設(shè)置完成后,即可實(shí)現(xiàn)統(tǒng)計(jì)圖效果。要想實(shí)時(shí)改變統(tǒng)計(jì)圖形樣式,只需按表1設(shè)置相應(yīng)網(wǎng)格中的chartType屬性值。
一般情況下,要實(shí)現(xiàn)對數(shù)據(jù)庫的操作,必須用到開放數(shù)據(jù)庫互連(open database connectivity,ODBC)。是微軟公司W(wǎng)OSA(開放服務(wù)結(jié)構(gòu))中有關(guān)數(shù)據(jù)庫的一部分,它是一組規(guī)范;同時(shí),還提供了一組標(biāo)準(zhǔn)API函數(shù),支持SQL語言[7]。目前標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫均全面支持ODBC驅(qū)動,用戶可在不依賴DBMS的情況下,通過ODBC直接使用SQL語句操作數(shù)據(jù)庫,完成數(shù)據(jù)庫的各種應(yīng)用[8]。這樣的話,即使用戶沒有在當(dāng)前計(jì)算機(jī)上安裝相關(guān)數(shù)據(jù)庫管理系統(tǒng),仍能使用數(shù)據(jù)庫文件。
在Authorware中,要實(shí)現(xiàn)對數(shù)據(jù)庫的操作,同樣要用到ODBC,建立數(shù)據(jù)源。用戶可以在W indows下的管理工具中直接進(jìn)行ODBC配置,但這種方法不夠靈活,需要在每臺運(yùn)行課件的機(jī)器上手工完成。最好的方法還是通過函數(shù)面板選擇Autho rware的tM SDSN.u32文件中的 tM sDBRegister函數(shù),進(jìn)行函數(shù)載入,再用一個(gè)計(jì)算圖標(biāo),編寫代碼實(shí)現(xiàn)ODBC的自動配置。代碼如下所示:
完成ODBC配置以后,還需要使用Author ware的函數(shù)面板載入ODBC.u32文件的ODBCOpen、ODBC Execute、ODBCClose三個(gè)函數(shù),用于實(shí)現(xiàn)ODBC的打開、數(shù)據(jù)操作與ODBC的關(guān)閉[9]等必要的數(shù)據(jù)庫操作,打開ODBC的程序代碼為:ODBCHandle:=ODBCOpen(W indowHandle,“ODBC錯(cuò)誤”,“Stu1”,,),而關(guān)閉ODBC的程序代碼是:ODBCClose(ODBCHandle)。
數(shù)據(jù)庫操作依靠SQL語言來實(shí)現(xiàn)。標(biāo)準(zhǔn)的SQL語言共有9條語句,涵蓋了數(shù)據(jù)庫的所有操作。如果要用到查詢或統(tǒng)計(jì)功能,Select命令是最常用的,它不僅能夠?qū)崿F(xiàn)選擇和投影操作,還可以通過聚類函數(shù)[10](Count,sum,avg,max,min)實(shí)現(xiàn)統(tǒng)計(jì)操作,只是Authorware沒有那么強(qiáng)大的命令與之配套使用,所以操作起來略顯繁瑣。筆者的思路是預(yù)先根據(jù)記錄的數(shù)量,定義數(shù)組并通過RowCount和Column Count屬性確定msChart數(shù)據(jù)網(wǎng)格的行列大小,用循環(huán)命令對每條記錄的每個(gè)字段的數(shù)據(jù)單獨(dú)查詢,并將結(jié)果保存到數(shù)組的相應(yīng)元素中,將數(shù)組相關(guān)元素的值賦給msChart數(shù)據(jù)網(wǎng)格中相應(yīng)位置的Data屬性,具體賦值代碼保存在disp chart計(jì)算圖標(biāo)中,如下所示:
程序流程、程序運(yùn)行效果分別如圖1、圖2所示。
圖1 程序流程圖
圖2 程序運(yùn)行效果圖
從表1可以看到,統(tǒng)計(jì)圖的圖形樣式受屬性chart Type控制,只要在Author ware中使用SetSprite Property()函數(shù)改變chartType屬性的值,具體值對應(yīng)的圖形樣式見表1,圖形樣式就會隨之改變。
到此為止,一個(gè)動態(tài)的基于數(shù)據(jù)庫的統(tǒng)計(jì)圖就做出來了,效果很好。能夠根據(jù)實(shí)際需要?jiǎng)討B(tài)改變統(tǒng)計(jì)圖的樣式,用戶可根據(jù)自己的實(shí)際需要進(jìn)行界面布置,不需安裝ACCESS數(shù)據(jù)庫管理系統(tǒng)。以上方法在W indows7、W indowsXP和Authorware 7.0環(huán)境中調(diào)試實(shí)現(xiàn)。當(dāng)然在設(shè)計(jì)思想和技巧方面可能還存在一定的修改余地,有待在今后的工作實(shí)踐中進(jìn)行探索提高。
[1]李若瑾,王麗萍.Authorware 7.0實(shí)例教程[M].2版.北京:電子工業(yè)出版社,2010:1-5
[2]李偉.MSchart圖表控件在Visual Studio 2008中的應(yīng)用[J].電腦知識與技術(shù),2010,6(4):866-868
[3]劉勝.ActiveX控件技術(shù)在PDM系統(tǒng)三維圖檔管理中的應(yīng)用[J].工程圖學(xué)學(xué)報(bào),2009,30(1):143-147
[4]京輝熱點(diǎn)工作室.Author ware 5入門與提高[M].北京:人民郵電出版社,2000:276-280
[5]曾石連.巧用MsChart實(shí)現(xiàn)在線作圖[J].軟件技術(shù),2005,13(2):70-73
[6]張成才,王永信,劉丹丹,等.利用MSChart控件動態(tài)生成統(tǒng)計(jì)圖[J].鄭州大學(xué)學(xué)報(bào):工學(xué)版,2007,28(3):73-75
[7]郭新房,倪寶童,王健,等.Authorware 7.0多媒體制作基礎(chǔ)教程與案例實(shí)踐[M].北京:清華大學(xué)出版社,2007:265-266
[8]孫志雷.在Authorware中如何實(shí)現(xiàn)對數(shù)據(jù)庫的操作[J].電腦知識與技術(shù),2007,4(21):633-634
[9]李紅巖.基于數(shù)據(jù)庫的Authorware動態(tài)開發(fā)技術(shù)與應(yīng)用[J].中國醫(yī)學(xué)教育技術(shù),2008,22(3):294-296
[10]王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2006:114