熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:Delphi自定義部件開發(四)[2]

2022-06-13   來源: Delphi編程 

  ⑵ 聲明屬性

  當聲明一個屬性時通常需要聲明私有域來保存屬性值然後描述讀寫屬性值的方法

  對於Shape控制將聲明一個域保存當前形狀然後聲明一個屬性通過方法調用來讀寫域值

  type

  TSampleShape=class(TGrahpicControl)

  private

  FShape: TSampleShapeType;

  procedure SetShape(value: TSampleShapeType)

  published

  property Shape: TSampleShapeType read FShape write SetShape;

  end;

  現在只剩下SetShape的實現部分了

  ⑶ 編寫實現方法

  下面是SetShape的實現

  procedure TSampleShapeSetShape(value: TSampleShapeType)

  begin

  if FShape<>value then

  begin

  FShape := value;

  Invalidate(True) { 強制新形狀的重畫 }

  end;

  end;

   覆蓋constructor和destructor

  為了改變缺省屬性值和初始化部件擁有的對象需要覆蓋繼承的constructor和destructor方法

  圖形控制的缺省大小是相同的因此需要改變Width和Height屬性

  本例中Shape控制的大小的初始設置為邊長個象素點

  ⑴ 在部件聲明中增加覆蓋constructor

  type

  TSampleShape=class(TGraphicControl)

  public

  constructor Create(Aowner: TComponent) override;

  end;

  ⑵ 用新的缺省值重新聲明屬性Height和width

  type

  TSampleShape=class(TGrahicControl)

  published

  property Height default ;

  property Width default ;

  end;

  ⑶ 在庫單元的實現部分編寫新的constructor

  constructor TSampleShapeCreate(Aowner: TComponent)

  begin

  inherited Create(AOwner)

  width := ;

  Height := ;

  end;

   公布Pen和Brush

  在缺省情況下一個Canvas具有一個細的黑筆和實心的白刷為了使用戶在使用Shape控制時能改變Canvas的這些性質必須能在設計時提供這些對象然後在畫時使用這些對象這樣附屬的Pen或Brush被稱為Owned對象

  管理Owned對象需要下列三步

  ● 聲明對象域

  ● 聲明訪問屬性

  ● 初始化Owned對象

  ⑴ 聲明Owned對象域

  擁有的每一個對象必須有對象域的聲明該域在部件存在時總指向Owned對象通常部件在constructor中創建它在destructor中撤消它

  Owned對象的域總是定義為私有的如果要使用戶或其它部件訪問該域通常要提供訪問屬性

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25110.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.