前言
本文整理自早期翻譯筆記,涵蓋 ActnList、Classes、Clipbrd 三個核心單元的常用函數/過程/變數。雖年代久遠,但這些 API 在維護舊專案、理解 VCL 內部機制時仍具參考價值。筆者水平有限,請以官方文檔為準。
一、ActnList 單元:動作清單管理
| 名稱 | 類型 | 用途 |
CreateAction | Function | 建立指定類型的 Action,顯示在 Action List 編輯器中 |
EnumRegisteredActions | Procedure | 列舉已註冊的 Action 類別 |
RegisterAction | Procedure | 註冊自訂 Action 類別 |
UnRegisterAction | Procedure | 取消註冊 Action 類別 |
二、Classes 單元:核心工具函數大全
幾何結構輔助
| 函數 | 參數/回傳 | 說明 |
Point(X, Y) | → TPoint | 由座標快速建立點結構 |
Rect(Left, Top, Right, Bottom) | → TRect | 由四邊建立矩形 |
Bounds(ALeft, ATop, AWidth, AHeight) | → TRect | 由左上角寬高建立矩形 |
類別註冊與 RTTI
| 名稱 | 類型 | 用途 |
RegisterClass(cls) | Procedure | 註冊 TPersistent 衍生類,使其可被流式存取、識別 |
RegisterClasses([cls1, cls2]) | Procedure | 批次註冊類別陣列 |
UnregisterClass(cls) | Procedure | 取消註冊單一類別 |
GetClass('ClassName') | → TPersistentClass | 依名稱取得已註冊類別引用 |
FindClass('ClassName') | → TPersistentClass | 同上,若不存在回傳 nil |
元件/資源流式操作
| 名稱 | 說明 |
ReadComponentRes(ResName) | 從資源讀取元件及屬性 |
WriteComponentResFile(FileName, Component) | 將元件及屬性寫入資源檔 |
ObjectBinaryToText(Stream) | 二進位物件流轉文字 |
ObjectTextToBinary(Stream) | 文字物件流轉二進位 |
ObjectResourceToText / ObjectTextToResource | 資源與文字互轉 |
集合與比較
CollectionsEqual(Col1, Col2):比較兩個 TCollection 內容是否相等。
CurrentGroup:當前註冊群組變數(設計時期使用)。
FindGlobalComponent:取得最上層容器元件(如 Application)。
LineStart(P):回傳下一行起始字元指標。
整數常數與非 ActiveX 註冊
RegisterIntegerConsts、RegisterNoIcon、RegisterNonActiveX、UnregisterModuleClasses:進階設計時期註冊控制。
三、Clipbrd 單元:剪貼簿封裝
| 名稱 | 類型 | 說明 |
Clipboard | Function | 回傳全域 TClipboard 實例 |
SetClipboard(NewClipboard) | Procedure | 替換全域剪貼簿物件(罕用) |
常用模式:Clipboard()->AsText := 'Hello'; / s := Clipboard()->AsText;
四、使用建議
- 優先使用 IDE 代碼完成(Ctrl+Space)查看最新簽名,勿死記硬背。
- 涉及流式存取(
Read/WriteComponentRes*)時,確保類別已 RegisterClass 且具 published 屬性。
- 幾何函數(
Point/Rect/Bounds)屬內聯小函數,大量呼叫無效能負擔。
- 跨模組(BPL/DLL)共享類別時,務必在雙方同步呼叫
RegisterClass,否則 RTTI 失效。