PowerBuilder 6.0 採用 **PowerBar** 工具列為核心導航,整合多種 **Painter** (畫布/設計器) 於單一 MDI 視窗,支援專案式開發:
| Painter | 工具列圖示 | 用途 | 核心物件 |
|---|---|---|---|
| Application Painter | 應用程式圖示 | 全域設定、啟動腳本、系統變數 | Application Object |
| Window Painter | 視窗圖示 | 視覺化 UI 設計、控制項佈局、事件腳本 | Window Object |
| DataWindow Painter | 資料視窗圖示 | 資料呈現/輸入/報表設計、SQL 生成、樣式 | DataWindow Object |
| Menu Painter | 選單圖示 | 選單列/彈出選單設計、工具列關聯 | Menu Object |
| Function Painter | 函數圖示 | 全域/物件層級函數定義、過載、存取層級 | Function Object |
| Structure Painter | 結構圖示 | 使用者定義資料結構 (類似 C struct) | Structure Object |
| Library Painter | 程式庫圖示 | PBL 物件庫管理、匯入/匯出、遷移、版本控制 | Library (PBL) |
| Database Painter | 資料庫圖示 | 資料庫連線、表/視圖/索引管理、SQL 編輯器 | Database Profile |
| Project Painter | 專案圖示 | 編譯部署設定 (EXE/DLL/PBD)、資源檔、版本資訊 | Project Object |
| 分類 | 屬性/事件/函數 | 說明 |
|---|---|---|
| 身分識別 | Name、Icon、CompanyName、Version | EXE 中繼資料、啟動畫面品牌化 |
| 資料庫 | DBMS、DBParm、LogID、LogPass、AutoCommit | 預設交易物件 `SQLCA` 連線參數 |
| 介面 | WindowTitle、MenuBar、ToolBar、MDIFrame | 主視窗框架、選單列、工具列預設 |
| 執行 | Open、Close、Idle、SystemError、ConnectionBegin/End | 生命週期事件,核心邏輯掛載點 |
| 全域變數 | 實例變數、共享變數、常數 | 跨視窗/資料視窗共享狀態 |
| 外部函數 | Local External Functions、PBL 外部函數 | 呼叫 DLL/Windows API、COM 物件 |
-- Open 事件:系統啟動時執行
// 從 PB.INI 讀取資料庫連線參數
SQLCA.DBMS = ProfileString("PB.INI", "Database", "DBMS", "")
SQLCA.DBParm = ProfileString("PB.INI", "Database", "DBParm", "")
// 開啟登入視窗
Open(w_login)
// Close 事件:系統關閉前清理
DESTROY SQLCA // 釋放交易物件資源
-- SystemError 事件:全域例外處理
MessageBox("系統錯誤", "Error " + String(ErrorNumber) + ": " + ErrorText)
RETURN 1 // 1=繼續執行, 0=終止應用程式
`SQLCA` 為系統自動建立的預設交易物件 (全域變數),屬性對應資料庫連線參數:
-- 連線屬性
SQLCA.DBMS = "ODB" -- 資料庫介面 (ODB, OLE DB, JDBC, Sybase, Oracle...)
SQLCA.DBParm = "ConnectString='DSN=MyDSN;UID=sa;PWD=***'"
SQLCA.AutoCommit = FALSE -- 手動交易控制 (COMMIT/ROLLBACK)
SQLCA.LogID = "sa"
SQLCA.LogPass = "password"
SQLCA.ServerName = "MyServer"
SQLCA.Database = "MyDB"
-- 連線/斷線
CONNECT USING SQLCA;
DISCONNECT USING SQLCA;
**最佳實踐**:在 Application Open 事件集中初始化 `SQLCA`,所有視窗/資料視窗共用同一交易物件,確保交易一致性。
| 問題 | 原因 | 解決 |
|---|---|---|
| 變更 Application 物件後未生效 | 未重新編譯/部署,或執行時載入舊 PBD | Full Rebuild → 重新部署 EXE/PBD |
| 資料庫連線參數錯誤 | PB.INI 路徑錯誤、ProfileString 區段/鍵名拼寫 | 絕對路徑、檢查大小寫、用 MessageBox 除錯列印 |
| 視窗繼承關係混亂 | 未使用 Browser 檢視繼承鏈 | Browser → Inheritance 標籤,確認祖先/後代 |
| 部署 EXE 缺少 DLL | Project Painter 未勾選必要運行時檔案 | 勾選 "Deploy runtime files"、指定正確目標目錄 |
下一節 (2-7) 將示範完整應用程式執行流程:登入驗證、主視窗資料瀏覽/插入/刪除/更新、關閉應用程式。