TApplication 是每個 Delphi VCL 專案的全域單例物件,封裝應用程式層級的行為與資訊。善用其屬性、方法與事件,能實作許多專業級功能。本文精選十大常見實用場景,附完整程式碼範例。
if not Application.Active then
ShowMessage('目前視窗非作用中,未獲焦點');
Active 為 Boolean,True 表示擁有輸入焦點。
ShowMessage('執行檔路徑: ' + Application.ExeName);
// 範例輸出: C:\MyApp\Bin\MyProgram.exe
Form1.Caption := '主視窗標題'; // 視窗標題列顯示
Application.Title := '我的應用程式'; // 任務列/最小化按鈕顯示
兩者獨立設定,符合 Windows UI 規範。
var
MainForm: TForm;
begin
MainForm := Application.MainForm; // 回傳 TForm 實例
if Assigned(MainForm) then
MainForm.WindowState := wsMaximized;
end;
var
Res: Integer;
begin
Res := Application.MessageBox('需要存檔嗎?', '提示訊息', MB_OKCANCEL or MB_ICONQUESTION);
case Res of
IDOK: ; // 使用者按確定
IDCANCEL: ; // 使用者按取消
end;
end;
常用旗標組合:MB_OK/MB_OKCANCEL/MB_YESNO/MB_RETRYCANCEL、MB_ICONINFORMATION/MB_ICONWARNING/MB_ICONERROR/MB_ICONQUESTION、MB_DEFBUTTON1~MB_DEFBUTTON4。
| 返回值常數 | 數值 | 對應按鈕 |
|---|---|---|
| IDOK | 1 | 確定 |
| IDCANCEL | 2 | 取消 |
| IDABORT | 3 | 中止 |
| IDRETRY | 4 | 重試 |
| IDIGNORE | 5 | 忽略 |
| IDYES | 6 | 是 |
| IDNO | 7 | 否 |
Application.Minimize; // 等同主視窗最小化
Application.Restore; // 從最小化還原
適用於托盤圖示雙擊還原、啟動參數檢查單一實例還原等情境。
Application.HelpFile := 'MyHelp.chm'; // 或 .hlp
Application.HelpJump('GettingStarted'); // 跳轉主題 ID
HelpJump 參數為說明檔內部主題識別字串。
var
Form3: TForm3;
begin
Application.CreateForm(TForm3, Form3); // 建立並註冊至 Application
Form3.ShowModal;
// 結束時自動釋放(若在專案選項啟用自動建立,則無需手動 CreateForm)
end;
動態建立可減少啟動記憶體佔用,按需載入大型表單。
Application.Terminate; // 發送 WM_QUIT,觸發正常關閉流程
優於 Close 或 Halt:會依序觸發 OnCloseQuery、OnClose、OnDestroy,確保資源釋放。
Application.Terminate; // 正常終止
// 若主執行緒已掛死,Terminate 無效,需外部程式呼叫 TerminateProcess
注意:Application.Destroy非公開方法,切勿直接呼叫。Terminate是唯一正規關閉入口。
// 專案原始碼 .dpr 或主表單 OnCreate 中
Application.OnIdle := AppIdleHandler; // 閒置時處理背景工作
Application.OnMessage := AppMessageHandler; // 全域訊息攔截
Application.OnException := AppExceptionHandler; // 未捕捉例外統一處理
TApplication 是 Delphi 應用程式的中樞神經,掌握其十大核心用法,能解決焦點偵測、路徑取得、標題管理、訊息方塊國際化、視窗狀態控制、說明整合、動態表單、優雅關閉等 90% 以上的應用層需求。建議將常用封裝為輔助單元,提升團隊開發一致性。