999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

題庫管理系統中OLE技術對WORD的控制實現

2009-04-29 00:00:00
電腦知識與技術 2009年36期

摘要:介紹了在Delphi環境下基于OLE技術和WORD對象模型實現通用題庫中試題和試卷編輯、瀏覽的基本原理,并在此基礎上給出了具體的實現過程。

關鍵詞:題庫系統;Delphi;OLE;WORD

中圖分類號:TP311 文獻標識碼:A文章編號:1009-3044(2009)36-10187-03

Implementation of Word Document in Examination Paper Management System Based on OLE

XIE Jun

(Armedpolice Command College, Hangzhou 310023, China)

Abstract: In this paper, a principle is presented to solve that how to display and edit examination papers based on OLE technology and word object model in the Delphi environment, and it is implemented by using Delphi.

Key words: examination paper system; delphi; OLE; word

眾所周知,一個題庫管理系統除了具有各種管理功能之外,一定會包含如何解決題目輸入以及試卷的排版輸出等問題。解決試題輸入輸出的方法通常有兩種,其一是完全由自己編寫代碼完成,另一種則是調用具備此功能的現有程序完成。顯然,后者是應該是首選。由于最后生成的試卷絕大部分都是WORD格式的,所以通常題目的輸入編輯器和試卷輸出均通過微軟的word程序去完成。本文介紹的便是利用OLE技術實現對WORD的控制。

1 OLE技術和word對象

OLE(對象鏈接與嵌套,Object Linking and Embedding)是Microsoft公司同計算機界合作并發展起來的產品規范,目前已發展成為Microsoft公司面向對象策略的基石。許多大的WINDOWS應用程序都是圍繞它設計的。從用戶的角度講,OLE是一種能使它們共享不同應用程序信息資源的技術,用戶能夠構造聲、文、圖、像、影于一體的復合文檔,可以很容易地集成應用程序。從開發的角度看,OLE是一個可解決許多難題的技術。WINDOWS開發者面臨的最大的難題之一是讓應用程序之間的相互通信,在過去,沒有一個工業標準,而OLE所做的正是標準化這些協議。

OLE包含三個概念。即對象、鏈接和嵌入。對象是應用程序間共享的數據,對象可以是幾乎所有的信息類型,如文字、位圖、矢量圖,甚至于聲音注解和錄像剪輯等。鏈接是指在程序設計中把兩個或多個分別編寫、匯編或編譯過的程序集合成單一的實體的處理方法。嵌入是指應用程序所創建的對象包含在另一個應用程序之中。OLE是一組服務功能,它提供了一種用源于不同應用程序的信息創建復合文檔的強有力方法。實現OLE交換數據需要一個OLE服務器(Server)和一個包容器(Container,有時也稱客戶),服務器是指能產生并編輯OLE對象的應用程序,而客戶是一個可以將OLE對象鏈接或嵌入其程序中的應用程序。其工作原理是服務端公開一些對象功能,客戶端程序可以通過OLE的機制去驅動服務端程序包含的對象功能,這里的服務端和客戶端可以是在同一臺計算機上,也可以在同一個網絡上的不同計算機上。其結構如圖1所示。

Word對象模型是指Word中各種對象之間的相互關系。在Word中,文檔、對話框、文本框、圖形、圖表甚至Word本身都是對象。同時,這些對象都有自己的屬性和方法,并且可以通過OLE技術來訪問和控制。因此,用戶可以通過編程來訪問這些已有的對象,操控他們的屬性和方法,以完成所期望的功能。

以基于Word對象模型的試題庫軟件為例,Word是OLE服務器,Word提供的項目是OLE對象,試題庫軟件是容器。

2 對WORD的控制實現

要實現以Word 為OLE 服務器的試題庫客戶程序,需要用一種程序語言來設計完成,這種語言不但要能支持OLE 技術,而且要有完善的數據庫功能以及能方便地控制Word 進行發送指令。Borland 公司的Delphi是最佳的選擇,它具有豐富而強大的可視組件,對數據庫、OLE、Word 都能完美地支持。

在本系統中需要調用Ms Word作為試題編輯器和試卷的排版輸出工具。通過OLE方式調用Word工作非常方便,程序員可以像調用內部對象一樣調用Word對象來完成工作。調用word工作的關鍵是理解Idispatch接口的工作模式,為了讓其他應用程序可以方便調用word提供的功能,word實現了一個Idispatch接口。用戶可以通過Windows提供的COM方式獲取該接口。用戶可以通過Windows API CreateOleObject('word.basic')來獲取一個Idispatch接口??刂苭ord的所有命令可以直接在Ms word中得到。

下面就通用題庫系統中,在Delphi環境下實現對word的控制程序中的題庫管理模塊和卷庫管理模塊部分作一描述。

2.1 題庫管理模塊

主要任務是試題庫的建立和維護??梢酝瓿?在科目的對應章節上新增、修改、刪除試題;實現試題的導入導出功能;實現題型編輯的功能;實現查找特定試題的功能以便修改試題。

考慮到試題的形式是多種多樣的,系統必須考慮試題中可能有非文本部分。系統應該提供某種機制使用戶可以方便的輸入這樣的試題(含有圖片的試題)?;谶@個原因,再考慮到試題信息磁盤占用量,把試題和答案分成兩種方式(純文本方式和word文件形式的試題)。同時系統應該提供一種機制使用戶可以用較方便的方式輸入那些已經存為word文件形式的試題。

如圖2為涉及word控制的題庫系統中的題庫維護模塊界面。

其中輸入/導入試題部分涉及word控制的代碼實現為:

//輸入試題

procedure TfrmQuestionM.btnWriteQdClick(Sender: TObject);

begin

if TableQuestionData.FieldByName('QdType').AsString='Text' then

begin

DBMQd.Visible:=not DBMQd.Visible;

DBMAnswer.Visible:=1;

if DBMQd.Visible then DBMQd.SetFocus;

exit;

end;

if not StartWordApp then exit;

Msword.appshow;

wordQdIsInput:=1;

if TableQuestionData.FieldByName('WordQd').IsNull then

begin

MsWord.FileNew;

MsWord.filesaveas(OldWordQdFileName);

end

else

begin

TBlobField(TableQuestionData.FieldByName('wordQd')).SaveToFile(OldWordQdFileName);

Msword.FileOpen(OldWordQdFileName);

end;

end;

//導入試題

procedure TfrmQuestionM.btnInputQdClick(Sender: TObject);

var

FileStream:TFileStream;

begin

if not RBWordQd.Checked then

begin

messagebox(handle,'您定義的試題形式不是word文件形式','錯誤信息',mb_Ok);

exit;

end;

if opendialog1.Execute then

begin

FileStream:=TFileStream.Create(opendialog1.FileName,fmOpenRead);

FileStream.Position:=0;TBlobField(TableQuestionData.FieldByName('wordqd')).LoadFromStream(filestream);

FileStream.Free;

wordQdIsInput:=true;

end;

end;

2.2 卷庫管理模塊

實現的功能之一是自動化出卷。即根據用戶對科目考核的具體要求,在試題庫中抽取符合要求的題目組成試卷,對試卷及其答案進行自動排版并輸出到ms word中供用戶進行手工再排版,再根據實際情況調整試題,最后完成試卷的排版輸出。

如圖3為涉及word控制的題庫系統中的卷庫維護模塊界面。

其中排版打印部分涉及word控制的代碼實現為:

//以下代碼用于試卷的打印輸出

procedure TfrmPaperM.BitBtnPrintClick(Sender: TObject);

var

Tempdir,TempFileName:string;

strtemp:string;

chineseIndex:array of string;

i,j:integer;

begin

frmWait.Show;

QryTitle.Close;

QryTitle.ParamByName('currentpid').AsString:=QryPaper.fieldByName('paperid').AsString;

QryTitle.Open;

TempDir:=ExtractFileDir(application.ExeName)+'\\wordfile\\試卷\\';

try

msword.FileCloseAll

except

try

msword:=CreateOleObject('word.basic');

except

frmWait.Close;

messageBox(handle,'運行word失敗','警告',MB_Ok);

exit;

end;

end;

msword.FileOpen(TempDir+'試卷.doc');

msword.filesaveas(tempdir+'打印試卷.doc');

//試卷名稱、科目、格式(略)

3 結束語

在通用題庫的試題編輯和試卷生成的瀏覽、打印等過程中,應用OLE技術對實現WORD的控制實現是目前設計題庫管理系統的一種較好的選擇。既省卻了試題、試卷編輯程序的開發之辛苦,而且利用MS WORD所提供的功能,可以方便、有效地解決文本編輯中的所有問題,故值得選擇。

參考文獻:

[1] 謝俊.通用題庫管理系統的設計與實現[J].計算機時代,2008(3).

[2] 王芳.用Delphi實現試題庫出卷系統Word文檔考卷的輸出[J].牡丹江醫學院學報,2006,27(4).

主站蜘蛛池模板: 国产一二三区视频| 无码内射中文字幕岛国片| 国产精品女同一区三区五区 | 久久精品国产电影| 18禁黄无遮挡免费动漫网站| 99久久精品久久久久久婷婷| 欧美精品v| 综合天天色| 91精品久久久久久无码人妻| 在线不卡免费视频| 超碰91免费人妻| 日韩欧美中文亚洲高清在线| 理论片一区| 永久在线精品免费视频观看| 久久精品国产999大香线焦| AV天堂资源福利在线观看| 色噜噜在线观看| 免费在线成人网| 超碰aⅴ人人做人人爽欧美| 亚洲Av综合日韩精品久久久| 成人午夜视频在线| 国产成人艳妇AA视频在线| 亚洲无码久久久久| 天天躁夜夜躁狠狠躁躁88| 欧美精品啪啪| 婷婷午夜影院| 啪啪啪亚洲无码| 国产综合在线观看视频| 色综合中文字幕| 亚洲av无码片一区二区三区| 婷婷色一区二区三区| 久草美女视频| 57pao国产成视频免费播放| 九九九精品成人免费视频7| 青青极品在线| 亚洲精品人成网线在线| 国产第四页| 99热这里只有精品免费国产| 成人午夜久久| 国产va视频| 人妻精品全国免费视频| A级毛片高清免费视频就| 精品人妻无码中字系列| 亚洲精品无码专区在线观看| 综合五月天网| 欧美爱爱网| 91精品网站| 欧美国产综合色视频| 国产自在自线午夜精品视频| 亚洲欧美一区二区三区图片| 欧美成人影院亚洲综合图| 欧美第九页| www亚洲精品| 久久久久国色AV免费观看性色| 精品国产电影久久九九| 搞黄网站免费观看| 五月婷婷精品| 波多野结衣二区| 人禽伦免费交视频网页播放| 国产精品区视频中文字幕| 国产97色在线| 国模在线视频一区二区三区| 在线日本国产成人免费的| 国产超薄肉色丝袜网站| 高清不卡毛片| 日韩视频精品在线| 欧美一区二区丝袜高跟鞋| 国产高清国内精品福利| 亚洲第一黄片大全| 国产精品极品美女自在线| 国产午夜福利在线小视频| 波多野结衣久久高清免费| 欧美精品v日韩精品v国产精品| 亚洲一区色| 久久黄色视频影| 精品中文字幕一区在线| 国产精品视频系列专区| 国产自在线拍| 亚洲一级毛片免费观看| 日韩在线观看网站| 日韩精品无码免费一区二区三区| 久久福利网|