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

Delphi 圖形元件開發實戰:形狀屬性枚舉設計與建構子/解構子覆寫模式

     編輯:Delphi

19.3.2.3 增加圖形能力:決定畫什麼與怎麼畫

圖形元件外觀由屬性組合決定。為 TSampleShape 增加 Shape 屬性支援六種幾何形狀:

步驟 1:宣告枚舉型別作為屬性類型

type
  TSampleShapeType = (sstRectangle, sstSquare, sstRoundRect,
                      sstRoundSquare, sstEllipse, sstCircle);
  TSampleShape = class(TGraphicControl)
  end;

枚舉提供設計期下拉選單、型別安全與程式碼可讀性。

步驟 2:宣告私有儲存欄位與存取屬性

type
  TSampleShape = class(TGraphicControl)
  private
    FShape: TSampleShapeType;
    procedure SetShape(Value: TSampleShapeType);
  published
    property Shape: TSampleShapeType read FShape write SetShape;
  end;

步驟 3:實作設定器——值變更時強制重繪

procedure TSampleShape.SetShape(Value: TSampleShapeType);
begin
  if FShape <> Value then
  begin
    FShape := Value;
    Invalidate(True);  // 標記客戶區失效,觸發 Paint
  end;
end;

守衛條件避免無意義重繪;Invalidate(True) 擦除背景並排程重繪。

建構子/解構子覆寫:初始化預設尺寸與資源

  1. 宣告覆寫: constructor Create(AOwner: TComponent); override; / destructor Destroy; override;
  2. 重新發布預設值: property Height default 65; property Width default 65; (設計期屬性檢視器顯示粗體預設值,DFM 不存儲預設值)。
  3. 實作建構子: inherited Create → 設定 Width/Height → 初始化 Owned 物件。
  4. 實作解構子: 釋放 Owned 物件 → inherited Destroy。

此模式為所有圖形/視覺元件開發的標準範本。

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