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

Delphi 元件屬性開發基礎:從宣告、儲存到存取方法完整指南

     編輯:Delphi

19.2.2.1 建立屬性

1. 為什麼要建立屬性

屬性是元件最顯著的特徵,設計時可在物件檢視器直接操作,即時回饋。對使用者如同變數般讀寫;對編寫者則具備更強能力:

  • 設計時期設定,無需執行程式
  • 封裝實作細節
  • 觸發副作用(如事件、重繪)
  • 支援虛擬方法,衍生類別可多型實作

2. 屬性型別與物件檢視器呈現

屬性型別可為任意函數回傳型別。物件檢視器依型別決定編輯方式:

型別呈現方式
簡單型別數值、字元、字串直接編輯
列舉型別下拉式清單選擇
集合型別展開為項目清單,逐項 True/False
物件型別展開子屬性編輯(需繼承 TPersistent)
陣列型別需自訂屬性編輯器,無內建支援

亦可於註冊時指定專用編輯器。

3. 發布繼承屬性

繼承自抽象基類(如 TWinControl)的屬性多為 protected 或 public。若需設計時可見,於子類別 published 區重宣告屬性名即可提升存取層級:

type
  TSampleComponent = class(TWinControl)
  published
    property Ctl3D; { 原為 protected,現可於設計時存取 }
  end;

4. 定義元件屬性

⑴ 屬性宣告語法

需指定:屬性名稱、型別、讀/寫方法。至少置於 public 區供執行期存取;設計時編輯需置於 published。典型結構:

type
  TYourComponent = class(TComponent)
  private
    FCount: Integer;
    function GetCount: Integer;
    procedure SetCount(ACount: Integer);
  public
    property Count: Integer read GetCount write SetCount;
  end;

⑵ 內部資料儲存慣例

  • 資料儲存於物件私有欄位
  • 欄位名以 F 開頭(如 FWidth)
  • 宣告於 private 區
  • 衍生類別僅透過屬性存取,不直接操作欄位

⑶ 直接存取

最簡單方式:read/write 直接指向欄位。常見模式:read 直接存取,write 呼叫方法以觸發狀態更新。

property ReadOnly: Boolean read FReadOnly write FReadOnly;

⑷ 存取方法

讀方法:無參數函數,回傳屬性型別值,命名慣例 Get+屬性名。
寫方法:單參數程序,參數為新值,命名慣例 Set+屬性名。建議先比較新舊值,僅在不同才更新並觸發副作用:

procedure TMyComponent.SetCount(Value: Integer);
begin
  if Value <> FCount then
  begin
    FCount := Value;
    Update; { 觸發重繪或其他副作用 }
  end;
end;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved