創(chuàng)建自己的Dephi構(gòu)件_第1頁
創(chuàng)建自己的Dephi構(gòu)件_第2頁
創(chuàng)建自己的Dephi構(gòu)件_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

創(chuàng)建自己的Dephi構(gòu)件

可視化編程工具Dephi以強(qiáng)大的功能,眾多的優(yōu)越特性,深受廣大使用者的喜愛,但如何編寫自己的Dephi構(gòu)件對許多使用者來說比較陌生,因此,有必要掌握構(gòu)件的創(chuàng)建方法。一.構(gòu)件創(chuàng)建的步驟:1.使用NewComponent對話框開始創(chuàng)建選擇File|New彈出ObjectReposity,雙擊ObjectReposity的Component圖標(biāo),顯示NewComponent對話框開始創(chuàng)建。2.為構(gòu)件增加屬性Dephi中用關(guān)鍵字Property聲明屬性字段,屬性有read和write可選從句,其語法格式為:PropertyMyProperty:AtypeReadGetPropertywriteSetProperty;GetPropertySetProperty分別為讀寫屬性過程。3.為構(gòu)件增加方法在Dephi構(gòu)件創(chuàng)建中增加新的方法,需在interface區(qū)的private、protected以及public中的任一部分描述函數(shù)原型,若方法可能在以后被重載,則應(yīng)在尾部加上virtual或dynamic關(guān)鍵字,然后在implementation區(qū)定義方法的具體實(shí)現(xiàn)代碼。4.為構(gòu)件增加事件在Dephi中,事件也是使用關(guān)鍵字Property來聲明。其語法格式為:PropertyOnNewEvent:AeventTypereadFonNewEventwriteFonNewEvent;聲明事件后往往要將windows的消息傳遞與事件聯(lián)系起來才能真正實(shí)現(xiàn)事件驅(qū)動,因此,我們還要增加一種新的特殊類型的動態(tài)的“消息管理”方法,其語法格式為:ProcedureMsgPro(varMsg:Tmessage);messageAmsgIndex;其中,關(guān)鍵字Message聲明此為一個(gè)消息管理方法。AmsgIndex為一整數(shù)常數(shù),作windows消息動態(tài)索引,當(dāng)索引為AmsgIndex的消息傳遞至應(yīng)用程序時(shí)便會執(zhí)行MsgPro過程。5.測試構(gòu)件測試構(gòu)件,確信構(gòu)件是按設(shè)計(jì)編譯和起作用的。這是構(gòu)件開發(fā)中非常關(guān)鍵的一步,為測試構(gòu)件,要先寫一個(gè)用作測試的應(yīng)用程序,由于不能拉出構(gòu)件選項(xiàng)板窗口上的構(gòu)件,還必須人工創(chuàng)建一個(gè)構(gòu)件。6.將新構(gòu)件添加到構(gòu)件選項(xiàng)板當(dāng)構(gòu)件正常工作并令人感到滿意后,可添加到構(gòu)件選項(xiàng)板上,從主菜單選擇Component|InstallComponent顯示一個(gè)InstallComponent對話框,該對話框能夠添加構(gòu)件到程序包。二.構(gòu)件創(chuàng)建實(shí)例下面要開發(fā)的新構(gòu)TnewLabel是從TLabel類繼承來的,它與TLabel具有相似的焦點(diǎn)感應(yīng)能力:當(dāng)鼠標(biāo)移到Tlabel上時(shí),文字顏色發(fā)生改變;當(dāng)鼠標(biāo)離開時(shí),顏色恢復(fù)。它還將增加一個(gè)EnterTextColor屬性以及OnMouseLeave和OnMouseLeave事件。屬性EnterTextColor中可以輸入鼠標(biāo)進(jìn)入構(gòu)件時(shí)文字的顏色,OnMouseEnter、OnMouseLeave事件中則可輸入程序員自己的代碼來指定鼠標(biāo)進(jìn)入和離開構(gòu)件時(shí)的動作。1.選中Component菜單項(xiàng)中的NewComponent選項(xiàng),在AncestorType框填入Tlabel,在ClassName框中填入TnewLabel,在PalettePage框中填入Samples,在UnitFileName框中填入NewCom.pas,然后單擊按鈕CreateUnit就進(jìn)入到代碼編輯狀態(tài)。2.使用Tools菜單中ImageEditor來創(chuàng)建編輯文件NewCom.dcr,為TnewLabel類建立位圖。3.增加新屬性EnterTextColor,并為讀寫屬性增加私有方法SetEnterTextColor和私有變量FenterTextColor。加入如下的代碼:PrivateFenterTextColor:Tcolor;SetEnterTextColor(Acolor:Tcolor);PublishedPropertyEnterTextColor:TcolorReadFenterTextColorWriteSetEnterTextColor(Acolor);…ImplementationProcedureTnewLabel.SetEnterTextColor(Acolor:Tcolor);BeginFEnterTextColor:=Acolor;End;4.增加保護(hù)方法MouseEnter、MouseLeave、CM_MouseEnter和CM_MouseLeave加入如下的代碼:protectedProcedureMouseEnter;virtual;ProcedureMouseLeave;virtual;ProcedureCM_MouseEnter(varmsg:Tmessage);MessageCM_MouseEnter;ProcedureCM_MouseLeave(varmsg:Tmessage);MessageCM_MouseLeave;…ImPlementationProcedureMouseEnter;BeginIfassigned(FonMouseEnter)thenFonMouseEnter(self);End;ProcedureCM_MouseEnter(varmsg:Tmessage);BeginInherited;MouseEnter;End;5.增加事件OnMouseEnter和OnMouseLeave加入如下的代碼:PrivateFonMouseEnter,F(xiàn)onMouseLeave:TnotifyEvent;PublishedOnMouseEnter:TnotifyEventReadFonMouseEnterwriteFonMouseEnter;OnMouseLeave:TnotifyEventReadFonMouseLeaveWriteFonMouseLeave;6.MouseLeaveCM_MouseLeave的實(shí)現(xiàn)代碼與MouseEnterCM_MouseEnter的類似。Dephi為所有消息提供缺省處理。在寫消息句柄時(shí)應(yīng)禁止缺省處理,因此在CM_MouseEnter和CM_MouseLeave過程中調(diào)用了inherited。重載構(gòu)造和析構(gòu)方法的代碼如下:PublicConstructorCreate(Aowner:Tcomponent);override;DestructorDestroy;override;……ImplementationConstructorCreate(Aowner:Tcomponent);BeginInheritedCreate(Aowner);FleaveTextColor:=Font.Color;FenterTextColor:=Font.Color;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論