PFC

PowerBuilder基礎類庫

PFC(Powerbuilder Foundation Class,Powerbuilder基礎類庫)是PowerBuilder提供的一個類庫。

它提供了一些常用的函數和功能,有非常友好的用戶界面,用PFC作為您的開發工具,可以節省您很多的時間。在使用PFC時,要記住,您的所有的控制項和對象都要使用PFC提供的,或是從PFC對象繼承過來的。

快速入門


一、新建應用Aplication;
二、在應用中包含下列庫文件:
PFCAPSRV.PBL
PFCDWSRV.PBL
PFCMAIN.PBL
PFCUTIL.PBL
PFCWNSRV.PBL
PFEAPSRV.PBL
PFEDWSRV.PBL
PFEMAIN.PBL
PFEUTIL.PBL
PFEWNSRV.PBL
可以在powerbuilder的pfc例子程序中拷貝。
三、在應用程序畫筆中,定義一個全局變數gnv_app,類型為n_cst_appmanager
n_cst_appmanager gnv_app
變數名稱一定要為gnv_app,PFC中的對象、函數、事件要求一個類型為n_cst_appmanager或從它繼承過來的類型的名稱為gnv_app的變數。
四、在應用程序畫筆的腳本中,在OPEN事件中,建立這個全局變數,並且調用pfc_Open(commandline)事件
gnv_app = CREATE n_cst_appmanager
gnv_app.Event pfc_open(commandline)
五、在應用程序畫筆的CLOSE腳本中,調用pfc_Close事件,並且刪除gnv_app變數
gnv_app.Event pfc_Close()
DESTROY gnv_app
六、在PFEAPSRV.PBL庫文件中,找到並打開n_cst_appmanager用戶對象,在n_cst_appmanager構造事件中,調用n_cst_appmanager的函數來初始化有關版本、公司名稱和INI文件的實例變數。
在n_cst_appmanager的pfc_Open事件中,調用n_cst_appmanaer的函數來打開你想要的應用服務,然後,調用of_Splash函數顯示一個Splash屏幕,然後,打開你的程序的最開始的窗口。

類型


主要分為以下幾種類別:
Application services
Window services
DataWindow services
File services
Data/Time services
String-handling services
Platform services
Menu Services
Resize services
INI file services
Numerical services
SQL parsing services
Conversion services

詳細解說


Services及對象詳細解說
一.n_cst_AppManager應用程序類
1.類的詳細定義
A.繼承關係:
pfc_n_base : n_base : pfc_n_cst_appmanager : n_cst_appmanager
B.事件
事件ID 事件說明
Constructor 初始化一些實例變數
Destructor 消毀用戶自定義對象
pfc_Exit 執行結束程序時的清理工作
pfc_Logon 在w_logon中的OK按鈕中調用,返回1表示成功,-1表示失敗
pfc_Open 相當於應用中的Open事件,可在此打開gnv_app中的多個服務
pfc_PreAbout 在函數of_About()中調用,用來控制w_about窗口
pfc_PreLogonDlg 在函數of_LogonDlg()中調用,用來控制w_Logon窗口
pfc_PreSplash 在函數of_Splash()中調用,用來控制splash屏幕
pfc_SystemError 當有系統錯誤發生時調用
pfc_Close 關閉應用時調用
pfc_ConnectionBegin 與其它應用連接時調用
pfc_ConnectionEnd 斷開其它應用的連接時調用
pfc_Idle 應用空閑時調用
C.函數
函數名稱 功能說明
of_About() 根據所設信息顯示w_About窗口,返回1表示成功,-1表示失敗
of_GetAppIniFile() 返回is_AppIniFile的值
of_GetAppProperties(未知) 未知
of_GetAppKey() 取得is_AppKey的值
of_GetCopyright() 返回is_Copyright的值
of_GetFrame() 返回當前的w_Frame類型的窗口對象
of_GetHelpFile() 返回在線幫助文件名
of_GetLogo() 返回is_Logo的值,為一BMP文件名
of_GetMicrohelp() 返回微幫助是否能使用,能使用時返回TRUE,否則返回FALSE
of_GetUserid() 取得用戶名(is_UserId)
of_GetUserIniFile() 取得用戶配置文件名,即is_UserIniFile
of_GetUserKey() 返回is_UserKey的值
of_GetVersion() 取得程序的版本號,即is_Version
of_IsRegistryAvailable() 確定註冊表是否可用,在Windows 95WindowsNT中返回TRUE,否則返回FALSE
of_LogonDlg() 顯示w_Logon窗口,並且調用pfc_Logon事件;返回1時表示成功,0表示取消,-1表示失敗
of_SetAppIniFile(iniFileName) 設置is_AppIniFile的值
of_SetAppKey(RegistryKey) 設置is_AppKey的值
of_SetAppPreference(Boolean) 設置application preference service是否可用,1表示成功,-1表示失敗;可通過inv_apppref變數來實現相關功能
of_SetCopyright(Copyright Information) 設置is_Copyright的值
of_SetDebug(Boolean) 設置Debugging Service是否可用,1表示成功,-1表示失敗;可通過inv_Debug來實現相關功能
of_SetDwCache(Boolean) 設置Data Caching Service功能,1表示成功,-1表示失敗;可通過inv_dwCache來實現相關功能
of_SetError(Boolean) 設置Error Service功能,1表示成功,-1表示失敗;可通過inv_Error來實現相關功能
of_SetFrame(FrameWindow) 標記Frame窗口到iw_Frame變數,可在w_Frame類型的窗口的active事件中調用以設置當前激活Frame窗口
of_SetHelpFile(helpFileName) 設置幫助文件文件名,即is_HelpFile
of_SetLogo(LogoBMPFileName) 設置應用程序標誌圖標,即is_Logo
of_SetMicrohelp(Boolean) 設置微幫助是否可用
of_SetMRU(Boolean) 設置Most Recently User Object Service是否可用,通過inv_MRU來實現相關功能
of_SetSecurity(Boolean) 設置Security Service是否可用,通過inv_Security來實現相關功能
of_SetTrRegistration(Boolean) 設置Transaction Registration Service是否可用,通過inv_TrRegisrration來實現相關功能
of_SetUserId(UserId) 設置用戶名,即is_userId
of_SetUserIniFile(IniFileName) 設置用戶配置文件名,即is_UserIniFile
of_SetUserKey(RegistryKey) 設置用戶註冊鍵名,即is_UserKey
of_SetVersion(VersionInformation) 設置應用程序版本信息,即is_Version
of_Splash(Second) 顯示Splash屏幕,參數為顯示時間
2.用法
聲名一類型為n_cst_AppManager的全局變數gnv_app
在應用的Open事件中建立此全局變數gnv_app = CREATE n_cst_AppManager
在應用的Open事件中調用pfc_Open()事件gnv_app.EVENT pfc_Open(CommandLine)
在應用的Close事件中調用pfc_Close()事件gnv_app.EVENT pfc_Close()
在應用的Close事件中銷毀gnv_app變數DESTROY gnv_app
在應用的ConnectionBegin事件中調用pfc_ConnectionBegin事件RETURN gnv_app.EVENT pfc_ConnectionBegin(userId,password,ConnectionString)
在應用的ConnectionEnd事件中調用pfc_ConnectionEnd事件gnv_app.EVENT pfc_connectionEnd()
在應用的Idle事件中調用pfc_Idle事件gnv_app.EVENT pfc_Idle()
在應用的SystemError事件中調用pfc_SystemError事件gnv_app.EVENT pfc_SystemError()
在n_cst_AppManager類的Construction事件中,調用下列函數設置相關的信息of_SetAppIniFile,of_SetAppKey,of_SetUserKey,of_SetUserIniFile,of_SethelpFile,
of_SetVirsion,of_SetCopyright,of_SetLogo,of_SetMicrohelp
在n_cst_AppManager類的Construction事件中,調用下列函數設置應用程序服務是否可能
of_SetAppPreference(TRUE)
of_SetDebug(TRUE)
of_SetDwCache(TRUE)
of_SetMRU(TRUE)
of_SetError(TRUE)
of_SetTrRegistration(TRUE)
of_SetSecurity(TRUE)
在n_cst_Appmanager類的pfc_PreLogonDlg事件中設置登錄次數anv_LogonAttrib.ii_LogonAttempts = 3
在n_cst_AppManager類的pfc_Logon事件中判斷登錄是否正確,正確返回SUCCESS否則返回FAILURE
在n_cst_Appmanager類的pfc_Open事件中設置相應服務的各自特性
在n_cst_Appmanager類的pfc_Open事件中打開最初始的應用程序窗口。
二.n_cst_AppPreference首選項服務類
應用程序服務類通過INI文件或是註冊表來保存應用或是用戶的一些信息,並可以在適當的時候(比如程序啟動時)自動恢復所有保存了的信息項。這樣,用戶的使用程序時,可以直接進入上次進入時的環境,而不需要重新設置。
1.類的繼承關係:pfc_n_base : n_base : pfc_n_cst_apppreference : n_cst_appPreference
2.類的成員函數(詳細的調用說明請見PB的在線幫助):
of_IsRestoreApp() 確定是否已經恢復應用的信息
of_IsRestoreUser() 確定是否已經恢復用戶的信息
of_Restore() 從INI文件或是註冊表中恢復應用及用戶的設置信息
of_RestoreApp() 從INI文件或是註冊表中恢復應用的設置信息
of_RestoreUser() 從INI文件或是註冊表中恢復用戶的設置信息
of_Save() 將應用及用戶的設置信息保存到INI文件或是註冊表中
of_SaveApp() 將應用的設置信息保存到INI文件或是註冊表中
of_SaveUser() 將用戶的設置信息保存到INI文件或是註冊表中
of_SetAppIniFile() 設置應用信息保存的INI文件名
of_SetAppKey() 設置應用保存的註冊表的鍵名
of_SetRequestor() 通過本類關聯到應用程序類
of_SetRestoreApp() 設置是否對應用信息進行處理(保存和恢復)
of_SetRestoreUser() 設置是否對用戶信息進行處理(保存和恢復)
of_SetUserIniFile() 設置用戶信息保存的INI文件名
of_SetUserKey() 設置用戶信息保存的註冊表鍵名
3.事件:
pfc_Close 在關閉程序時調用
pfc_Open 在打開程序時調用
4.用法:
可以對下列信息進行保存和恢復:
User key
MicroHelp
Help file
Version
Logo bitmap
Copyright notice
DDETimeOut property
DisplayName property
DWMessageTitle property
MicrohelpDefault property
RightToLeft property
ToolbarFrameTitle property
ToolbarPopMenuText property
ToolbarSheetTitle property
ToolbarUserControl property
ToolbarText property
ToolbarTips property
User ID
在應用程序類的構造事件中,調用this.of_SetAppPreference(TRUE)
設置好本類的參數
IF this.of_IsRegistryAvailable() THEN
this.inv_apppref.of_SetAppKey &
(this.of_GetAppKey())
this.inv_apppref.of_SetUserKey &
(this.of_GetUserKey())
ELSE
this.inv_apppref.of_SetAppINIFile &
(this.of_GetAppINIFile())
this.inv_apppref.of_SetUserINIFile &
(this.of_GetUserINIFile())
END IF
設置要保存的信息
this.inv_apppref.of_SetRestoreApp(TRUE)
this.inv_apppref.of_SetRestoreUser(TRUE)
然後在適當的時候調用其它函數完成相應的功能。
三.n_cst_debug調試服務類
調試服務類主要應用於對使用PFC編程的應用程序的調試,可在程序中打開和關閉調試窗口,打開調試服務,PFC的有關信息會在調試窗口中顯示;也可自已在適當的地方加入調試語名,以在調試窗口中顯示所需要了解的信息,來了解程序的運行,幫助查找錯誤。
繼承關係:pfc_n_base : n_base : pfc_n_cst_debug : n_cst_debug
調試服務所提供的函數
of_ClearLog() 清除所有以前的調試信息
of_GetAlwaysOnTop() 返回w_debugLog窗口是否總在最前面
of_IsLogOpen()返回w_debugLog窗口是否打開
of_Message()發送一條信息到調試服務日誌中
of_OpenLog()打開w_debugLog窗口
of_PrintLog()列印調試服務日誌信息
of_SetAlwaysOnTop()設置w_DebugLog窗口總在最前面
of_SetDWProperty()設置是否顯示數據窗口的屬性窗口
of_SetSQLSpy()開始或結束SQL的監視
事件
constructor構造事件
destructor析構事件
用法
在pfc_Open()事件中,調用:gnv_app.of_SetDebug(TRUE) //打開調試服務
在pfc_Open()事件中,調用:gnv_app.inv_Debug.of_SetSQLSpy(TRUE) //打開SQL監視
在pfc_Open()事件中,調用:gnv_app.inv_Debug.of_SetDWProperty(TRUE) //打開數據窗口屬性窗口
在pfc_Open()事件中,調用:gnv_app.inv_Debug.of_OpenLog(TRUE) //打開日誌窗口
在需要的時候調用gnv_app.inv_Debug.of_Message()函數來發送信息
說明:pfc_Open()事件是指n_cst_AppManager類中的pfc_Open()事件,其實,這些代碼也可在其它地方執行,只不過放在這兒比較方便而已。
四.n_tr調試服務類
n_tr是PFC提供的用於數據事務處理的一個用戶自定義對象,所有使用PFC的應用中的事務對象應該都使用此對象,它集成了SQL Spy,在應用中可對此應用進行擴展,例如將返回的信自漢化等等。
繼承關係:pfc_n_tr : n_tr
函數(具體參數請看幫助):
of_Begin()一個空的函數,你可以加入一些代碼來實現特殊的BEGIN TRANSACTION
of_Commit()提交事務
of_Connect()連接資料庫
of_CopyTo()以當前事務對象為樣板建立另一個事務對象
of_Disconnect()斷開與資料庫的連接
of_DistinctValues()取得一個列中所有不同的數據放在數組中
of_End()一個空的函數,幫助實現特殊的END TRANSACTION
of_Execute()執行一條SQL語句
of_GetAutoRollback()取得AutoRollback的狀態
of_GetName()取得由SetName設置的名稱(事務註冊類調用)
of_GetSqlState()取得由資料庫返回的狀態字元串
of_GetTrace()取得跟蹤狀態
of_Init()初始化事務對象
of_IsConnected()測試事務對象是否與資料庫連接
of_MessageBox()顯示一條信息
of_Rollback()回退事務
of_SetAutoRollback()設置自動回退屬性
of_SetName()設置事務對象的名稱
of_SetTrace()設置跟蹤屬性
of_SetUser()設置連接資料庫時的用戶名及口令
用法:
1.如果事務對象不是SQLCA,則建立:
itr_security = CREATE n_tr
否則將SQLCA的類型設置為n_tr
2.如果用到事務登錄服務,則登錄所有事務對象:
gnv_app.inv_trregistration.of_Register(SQLCA)
// Assumes an itr_security instance variable
gnv_app.inv_trregistration.of_Register(itr_security)
// Assumes an itr_security instance variable
SQLCA.of_SetName("SQLCA")
itr_security.of_SetName("Security")
3.設置好AutoRollback屬性:
SQLCA.of_SetAutoRollback(TRUE)
itr_security.of_SetAutoRollback(FALSE)
4.在必要的時候調用相關的函數
說明:事務對象的屬性可以一次性從一個INI文件或是註冊表主鍵中讀出,請看of_Init()函數。