資源描述:
《基于組件技術(shù)的multitimer的設(shè)計與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、基于組件技術(shù)的MultiTimer的設(shè)計與實現(xiàn)[日期:2006-05-20]來源:?作者:[字體:大中小]李琪謝建?摘要:本文提出了采用封裝擴充設(shè)計DelphiVCL控件Ttimer的方法,成功開發(fā)出一種新的多重復(fù)用計時器控件MultiTimer,解決了某型導(dǎo)彈發(fā)射虛擬仿真系統(tǒng)中用戶操作面板需要多個定時器觸發(fā)各種事件的問題。關(guān)鍵詞:delphiVCL虛擬仿真控件1、問題的提出我們在設(shè)計某個導(dǎo)彈操作平臺虛擬系統(tǒng)時,在計算機上模擬操作平臺面板的各種操作規(guī)程,在設(shè)計用戶界面中經(jīng)常用到3~5多個定時器。大家知道,一個定時器就要占用非常大的系
2、統(tǒng)資源,這使整個軟件系統(tǒng)運行速度和穩(wěn)定性都大大降低,為此,我們利用Delphi控件開發(fā)技術(shù)在現(xiàn)有的VCL控件基礎(chǔ)上設(shè)計了一種多重復(fù)用計時器控件MultiTimer,它占用系統(tǒng)資源只有一個定時器大小,但起到多個定時器的功能,下面就介紹這種定時器控件的設(shè)計方案。2、Delphi控件開發(fā)技術(shù)Delphi作為一種OOP開發(fā)環(huán)境,支持用戶繼承VCL類或新創(chuàng)建自定義類開發(fā)出符合自己要求的控件。Delphi提供了多種擴展控件的方法:(1)從Delphi自帶的控件中繼承并擴展。(2)直接編寫新的控件,并編譯安裝在Delphi的控件面板中。(3)安裝
3、外部程序提供的OCX控件。開發(fā)過程一般分為創(chuàng)建控件屬性、方法、事件、消息處理、異常處理和設(shè)計時控制方式等六步,完全重新設(shè)計一個新控件是不可取的,也是要花費大量時間,我們采用第一種方法從Delphi自帶的控件中繼承并擴展。Delphi對象有繼承的特性,這意味著我們可以在已有對象類型的基礎(chǔ)上創(chuàng)建新的對象,這個新對象將能夠繼承其祖先對象的所有事件、屬性及方法,并且在對衍生對象添加新過程方面有著十足的靈活性。在Delphi提供的控件中,有一個Timer定時器控件,位于system頁中,可以定時觸發(fā)事件執(zhí)行用戶代碼,在模擬系統(tǒng)中經(jīng)常使用這個控
4、件模擬各種流程的執(zhí)行情況,但是Timer控件只能起到一個定時的作用,如果想使用多個不同的定時器,就必須使用多個Timer控件,分別設(shè)置各種參數(shù),不僅非常不方便,而且浪費大量系統(tǒng)資源。于是我們利用類的繼承性和派生性創(chuàng)建一個新的控件,繼承Timer控件所有特性,并增加新的特性,給它加上多個計時功能。3、TmultiTimer類實現(xiàn)3.1屬性定義TmultiTimer類實現(xiàn)如圖1所示,它為TmultiTimer類繼承結(jié)構(gòu),其屬性定義如下表所示。屬性類型說明FEnabled1Boolean計數(shù)器1工作標(biāo)志FEnabled2Boolean計數(shù)
5、器2工作標(biāo)志FEnabled3Boolean計數(shù)器3工作標(biāo)志FNumInteger內(nèi)部區(qū)分計數(shù)器標(biāo)志FInterval2Integer計數(shù)器2定時倍數(shù)FInterval3Integer計數(shù)器3定時倍數(shù)FOnTimer2TNotifyEvent定義OnTimer2事件FOnTimer3TNotifyEvent定義OnTimer3事件圖1TMultiTimer類繼承結(jié)構(gòu)3.2方法事件定義procedureTimer;override;//重聲明Timer事件procedureTimer2;dynamic;//動態(tài)生成Timer2事件pr
6、ocedureTimer3;dynamic;//動態(tài)生成Timer3事件3.3重聲明構(gòu)造函數(shù)和析構(gòu)函數(shù)任何一個Delphi對象都至少有兩個最基本的方法,即控件設(shè)計都必須構(gòu)造函數(shù)(constructor)Create和析構(gòu)函數(shù)(destructor)Destroy來完成為新對象分配內(nèi)存和撤銷對象并釋放內(nèi)存工作。constructorCreate(AOwner:TComponent);override;destructorDestroy;override;3.4實現(xiàn)多重復(fù)用過程procedureTMultiTimer.Timer;beg
7、inifFEnabled1=TruetheninheritedTimer;;FNum:=FNum+1;ifFNum=1*Interval2*Interval3+1thenFNum:=1;if(FNummodInterval2=0)and(FEnabled2=True)thenTimer2;if(FNummodInterval3=0)and(FEnabled3=True)thenTimer3;end;3.5第N個計數(shù)器響應(yīng)過程procedureTMultiTimer.TimerN;beginifAssigned(FonTimerN)t
8、henFonTimerN(Self);end;3.6控件全部代碼:unitMultiTimer;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Form