首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 自訂元件核心技巧:Owned 物件 (Pen/Brush) 生命週期管理與屬性發布模式

     編輯:Delphi

19.3.2.3 發布 Pen 與 Brush:三步驟標準化流程

畫布預設細黑筆/實心白刷,為了讓設計者自訂外觀,必須將 TPen/TBrush 作為 Owned 物件 發布。標準三步驟:

1. 宣告私有物件欄位

type
  TSampleShape = class(TGraphicControl)
  private
    FPen: TPen;
    FBrush: TBrush;
  end;

欄位全程持有物件參考,建構子建立、解構子釋放。

2. 宣告存取屬性(委派模式)

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;

關鍵實作:指派而非替換——FBrush.Assign(Value) 複製屬性值,保持物件身分不變,避免事件綁定失效與記憶體洩漏。

procedure TSampleShape.SetBrush(Value: TBrush);
begin
  FBrush.Assign(Value);
end;

3. 生命週期管理:建構子建立、解構子銷毀

constructor TSampleShape.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Width := 65; Height := 65;
  FPen := TPen.Create;
  FBrush := TBrush.Create;
end;

destructor TSampleShape.Destroy;
begin
  FPen.Free;
  FBrush.Free;
  inherited Destroy;
end;

鐵律: 解構子先釋放 Owned 物件,再呼叫 inherited Destroy;宣告時必須 override 覆寫虛擬解構子。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved