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

Delphi 元件開發:屬性編輯器註冊與自訂事件完整實作指南

     編輯:Delphi

屬性編輯器的三種註冊模式

RegisterPropertyEditor 三種用法對應不同範圍:

  1. 通用型別編輯器:針對所有 TComponent 型別屬性註冊 TComponentProperty,後兩參數為 nil。
  2. 特定元件特定屬性:針對所有元件的 Name 屬性註冊專屬編輯器。
  3. 特定元件特定型別屬性:針對 TMenu 的所有 TMenuItem 型別屬性註冊編輯器。

19.2.2.2 建立事件

1. 什麼是事件

事件連繫「發生的事」與「回應代碼」,本質為方法指標。從使用者視角,事件是關聯系統動作(如 OnClick)的名稱;從編寫者視角,事件提供讓使用者注入代碼的介面。

事件四大特性

  • 方法指標:隱含物件實例指標,TControl.Click 呼叫 OnClick(Self)。
  • 屬性形式:私有欄位 FOnClick: TNotifyEvent,published 屬性映射該欄位,設計時可在物件檢視器設定。
  • 處理程序型別:皆為程序,參數須完全匹配。標準型別如 TNotifyEvent、TKeyPressEvent(含 var Key: Char 允許修改字元)。
  • 可選性:元件不可依賴使用者處理程序;空處理程序應等同無處理程序。

2. 實現標準事件

標準事件分類

  • 所有控制項共用:OnClick、OnDblClick、OnMouseDown/Up/Move、OnDragDrop/Over/EndDrag(定義於 TControl)。
  • 視窗控制項專屬:OnEnter/Exit、OnKeyDown/Press/Up(定義於 TWinControl)。

發布標準事件

祖先類別中為 protected,子類別在 published 重宣告屬性名即可公開,繼承原有實作:

type
  TMyControl = class(TCustomControl)
  published
    property OnClick;
  end;

修改標準事件行為

覆寫對應動態方法(如 Click),先呼叫 inherited 執行標準流程(含使用者事件),再加入自訂邏輯。順序影響使用者代碼執行時機。

3. 定義自訂事件

四步驟:觸發條件 → 定義處理程序型別 → 宣告事件 → 呼叫事件。

觸發機制

使用者互動事件由 Windows 訊息觸發(如滑鼠按下 → WM_LBUTTONDOWN → DoMouseDown → MouseDown → OnMouseDown)。狀態變更事件可由屬性設定或內部邏輯觸發,擁有完全控制權。TControl 完整示範左鍵按下的處理鏈路。

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