如鵬網(wǎng) 大學(xué)生計(jì)算機(jī)學(xué)習(xí)社區(qū)

          CowNew開(kāi)源團(tuán)隊(duì)

          http://www.cownew.com 郵件請(qǐng)聯(lián)系 about521 at 163.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            363 隨筆 :: 2 文章 :: 808 評(píng)論 :: 0 Trackbacks
          ?

          二、控件開(kāi)發(fā)縱覽

          ? 通過(guò)開(kāi)發(fā)上邊這個(gè)控件,我們已經(jīng)對(duì)Delphi控件開(kāi)發(fā)有了基本的認(rèn)識(shí)。下面我們將系統(tǒng)的講述一下控件開(kāi)發(fā)的知識(shí)。

          制作控件第一件事就是選擇適當(dāng)?shù)?Delphi對(duì)象類(lèi)型作為父對(duì)象,以派生新的對(duì)象。子對(duì)象可以繼承父對(duì)象的全部非 private部件,但不能擺脫不需要的部件。因此,所選父對(duì)象應(yīng)盡可能多地包含子對(duì)象所需的屬性、事件和方法,但不應(yīng)包含子對(duì)象不需要的東西。Delphi必須從Tcomponent或Tcomponent的子類(lèi)派生。TComponent是所有 Delphi控件的基點(diǎn),但若直接從 TComponent 派生新控件,很多東西就需要自己從頭做起。一般只有非可視控件才直接從 TComponent派生。 Delphi提供了若干專(zhuān)門(mén)用于制作控件(可視控件)的對(duì)象類(lèi)型,都是從 TControl和 TWinControl派生而來(lái)。

          TControl的子類(lèi)型用于非窗口式控件, TWinControl的子類(lèi)型則用于窗口式控件。除非特殊需要,一般不直接從 TControl和TWinControl派生新控件,而是從其子類(lèi)型派生。這樣可以充分利用原有的屬性、事件和方法,減少很多工作量。在這些控件類(lèi)型中,非通用的屬性、事件和方法都聲明為 protected。這樣可以禁止控件用戶(hù)訪問(wèn),又能被子類(lèi)型繼承和修改。在新控件中,可以簡(jiǎn)單地把繼承來(lái)的屬性和事件重新聲明為 published,使控件用戶(hù)能在設(shè)計(jì)期通過(guò)對(duì)象編輯窗口訪問(wèn),也可以進(jìn)而修改屬性的默認(rèn)值和讀寫(xiě)方式,或是重載( override)事件處理子過(guò)程和其他控件方法,以修改其中的程序代碼。重聲明可以放寬訪問(wèn)權(quán)限,但不能相反,例如,不可能把 published屬性重聲明為 private或 protected。

          ?Delphi控件也是Delphi的類(lèi),所有的控件都有特定的結(jié)構(gòu)。一般控件包括三大組成部分:屬性、方法和事件,下面先介紹初學(xué)控件開(kāi)發(fā)的最難懂的屬性部分,其他部分我們將在以后章節(jié)為大家介紹。

          屬性主要部分就是屬性的讀寫(xiě)方法(或讀寫(xiě)字段)。前面的例子用的是讀寫(xiě)字段,也就是對(duì)屬性的讀寫(xiě)都通過(guò)對(duì)字段的讀寫(xiě)來(lái)完成。下面為大家講解一下讀寫(xiě)方法的使用方法:

          TmyComponent = class(TComponent)

          Private

          ? Fcount: Integer;

          ? Procedure SetCount(Avalue: Integer);

          Pulbished

          ? Property Count: Integer read Fcount write SetCount;

          End;

          這個(gè)例子中當(dāng)執(zhí)行MyComponent1.Count := 1;這樣的代碼時(shí),將會(huì)導(dǎo)致SetCount方法執(zhí)行,并且參數(shù)Avalue被指定為1;當(dāng)執(zhí)行 I := MyComponent1.Count;方法時(shí),會(huì)將 Fcount的值返回給I。

          屬性的聲明語(yǔ)法允許屬性聲明的Read和Write部分用訪問(wèn)方法取代對(duì)象私有數(shù)據(jù)域。屬性的讀方法是不帶參數(shù)的函數(shù),返回同屬性相同類(lèi)型的值。通常讀方法以Get開(kāi)頭。屬性的寫(xiě)方法總是帶一個(gè)參數(shù)的過(guò)程。寫(xiě)方法常常以Set開(kāi)頭。

          思考題:

          1、? 如何為控件添加屬性?

          2、? TwinControl類(lèi)派生的控件的特點(diǎn)是什么?

          posted on 2005-10-21 23:24 CowNew開(kāi)源團(tuán)隊(duì) 閱讀(2849) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: Delphi控件開(kāi)發(fā)淺入深出(二) 2008-01-13 08:34 lob
          學(xué)習(xí)ing  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 资阳市| 牟定县| 文成县| 宁武县| 平南县| 崇明县| 山东省| 临颍县| 伊通| 凌源市| 澄迈县| 冕宁县| 达尔| 曲周县| 曲靖市| 丹棱县| 石棉县| 湘潭市| 翁牛特旗| 博兴县| 余姚市| 安多县| 普兰店市| 宜君县| 吉安县| 湟源县| 武平县| 噶尔县| 宜阳县| 武威市| 婺源县| 保山市| 濮阳市| 武清区| 肥城市| 丹巴县| 岗巴县| 石楼县| 西乌珠穆沁旗| 东乌| 西藏|