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

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

2013-11-23 17:48:03  來源: Delphi編程 

  下面的代碼聲明了Pen和Brush的對象域

  type

  TSampleShape=class(TGraphicControl)

  private

  FPen: TPen;

  FBrush: TBrush;

  end;

  ⑵ 聲明訪問屬性

  可以通過聲明與Owned對象相同類型的屬性來提供對Owned對象的訪問能力這給使用部件的開發者提供在設計時或運行時訪問對象的途徑

  下面給Shape控制提供了訪問Pen和Brush的方法

  type

  TSampleShape=class(TGraphicControl)

  private

  procedure SetBrush(Value: TBrush)

  procedure SetPen(Value: TPen)

  published

  property Brush: TBrush read FBrush write SetBrush;

  property Pen: TPen read FPen write SetPen;

  end;

  然後在庫單元的implementation部分寫SetBrush和SetPen方法

  procedure TSampleShapeSetBrush(Value: TBrush)

  begin

  FBrushAssign(Value)

  end;

  procedure TSampleShapeSetPen(Value: TPen)

  begin

  FPenAssign(Value)

  end;

  ⑶ 初始化Owned對象

  部件中增加了的新對象必須在部件constructor中建立這樣用戶才能在運行時與對象交互相應地部件的destructor必須在撤消自身之前撤消Owned對象

  因為Shape控制中加入了Pen和Brush對象因此要在constructor中初始化它們在destructor中撤消它們

  ① 在Shape控制的constructor中創建Pen和Brush

  constructor TSampleShapeCreate(Aowner: TComponent)

  begin

  inherited Create(AOwner)

  Width := ;

  Height := ;

  FPen := TPenCreate;

  FBrush := TBrushCreate;

  end;

  ② 在部件對象的聲明中覆蓋destructor

  type

  TSampleShape=class(TGraphicControl)

  public

  construstorCreate(Aowner: TComponent) override;

  destructordestroy; override;

  end;

  ③ 在庫單元中的實現部分編寫新的destructor

  destructor TSampleShapedestroy;

  begin

  FPenFree;

  FBrushFree;

  inherited destroy;

  end;

  ④ 設置Owned對象的屬性

  處理Pen和Brush對象的最後一步是處理Pen和Brush發生改變時對Shape控制的重畫問題Pen和Brush對象都有OnChange事件因此能夠在Shape控制中聲明OnChange事件指向的事件處理過程

[]  []  []  []  


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