RegisterPropertyEditor 三種用法對應不同範圍:
TComponent 型別屬性註冊 TComponentProperty,後兩參數為 nil。Name 屬性註冊專屬編輯器。TMenu 的所有 TMenuItem 型別屬性註冊編輯器。事件連繫「發生的事」與「回應代碼」,本質為方法指標。從使用者視角,事件是關聯系統動作(如 OnClick)的名稱;從編寫者視角,事件提供讓使用者注入代碼的介面。
TControl.Click 呼叫 OnClick(Self)。FOnClick: TNotifyEvent,published 屬性映射該欄位,設計時可在物件檢視器設定。TNotifyEvent、TKeyPressEvent(含 var Key: Char 允許修改字元)。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 執行標準流程(含使用者事件),再加入自訂邏輯。順序影響使用者代碼執行時機。
四步驟:觸發條件 → 定義處理程序型別 → 宣告事件 → 呼叫事件。
使用者互動事件由 Windows 訊息觸發(如滑鼠按下 → WM_LBUTTONDOWN → DoMouseDown → MouseDown → OnMouseDown)。狀態變更事件可由屬性設定或內部邏輯觸發,擁有完全控制權。TControl 完整示範左鍵按下的處理鏈路。