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 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()函式。

相關詞條

相關搜尋

熱門詞條

聯絡我們