快速入門
一、新建套用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 95及WindowsNT中返回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()函式。