文章來源:
http://www.itfensi.com/exploit/FoxPro/11702662832718_8.html
這一章主要介紹了什么是PFC的Services ,以及如何使用它們。
一、應用程序服務
PFC提供了以下各種應用程序Services :
DataWindow caching
Debugging
Error
Application preference
Most recently uesed object
Security
Transaction registration |
你必須通過n_cst_appmanager(應用程序管理器)來控制這些 Services (這些Services實際上是應用程序管理器的是數(shù)據(jù)成員)。應用程序管理器(application manager)通過調用成員函數(shù)來開啟與關閉Services 。由于它們在應用程序管理器的范圍內有效。而應用管理器是全局變量,因此你可以在你的應用程序的任何地方是使用應用程序Services 。
1. DataWindow caching service
概要:
Datawindow caching service為Datawindow提供了數(shù)據(jù)緩沖。它將數(shù)據(jù)保存在內存中,從而減少了程序訪問數(shù)據(jù)庫的頻率,加快了程序的執(zhí)行速度。 Datawindowcaching service支持如下的數(shù)據(jù)源:
l_ Datawindow對象,它的數(shù)據(jù)可以來自于數(shù)據(jù)庫表也可以來自存儲過程。
l_ SQL語句
l_ Datawindow控件
l_ DataStore對象
l_ 數(shù)組中的數(shù)據(jù)
l_ 文件
PFC使用Powerbuilder的Datastore來實現(xiàn)Datawindow caching service 。它對的對象是n_cst_dwcache 。
PFC的代碼實際只在父類對象中這本書講述的都是擴展類的對象,就像 n_cst_dwcache 。而實際上PFC的代碼全在父類的對象中(pfc_n_cst_dwcache)。
使用方法
使用DataWindow caching 可以將數(shù)據(jù)庫訪問頻率降到最低,可以加快程序運行速度。
2 開啟DataWindow caching
l_ 調用n_cst_appmanager的of_SetDWCache函數(shù)
gnv_app.of_SetDWCache(TRUE)
(1) 使用Datawindow caching :
(1). 調用of_Register函數(shù)進行數(shù)據(jù)緩存,同時依據(jù)不同的數(shù)據(jù)提供相應的參數(shù)。
l_ 緩存Datawindow對象從數(shù)據(jù)庫中檢索出的數(shù)據(jù)時:你需要傳遞標識符(identifier)、事務對象、Datawindow對象名、其他參數(shù)(如果存在的話)。
l_ 緩存SQL語句從數(shù)據(jù)庫中檢索出的數(shù)據(jù)時:你需要傳遞標識符(indentifier)、事務對象、SQL語句。
l_ 將數(shù)據(jù)緩存到數(shù)組中:傳遞標識符(identifier)、Datawindow對象名、數(shù)據(jù)。
l_ 緩存DataWindow控件中的數(shù)據(jù):傳遞標識符(identifier)、Datawindow控件。
l_ 緩存DataStore中的數(shù)據(jù):傳遞標識符(identifier)、DataStore對象。
l_ 緩存文件中的數(shù)據(jù):傳遞標識符(identifier)、文件名。
(2) 你可以使用函數(shù)of_IsRegistered(參數(shù)是對象本身),確定DataWindow對象是否已經在caching service中注冊了。
(3) 調用函數(shù)of_GetRegistered函數(shù)訪問已經緩存的數(shù)據(jù)。
Gnv_app.inv_dwcache.of_GetRegistered(攄_emplist敚琲ds_datastore)
Ids_datastore.ShareData(dw_emplist)
(4) 調用函數(shù)of_Refresh檢索已經緩存數(shù)據(jù)的DataWindow 。
(5). 調用函數(shù)of_UnRegister函數(shù)停止數(shù)據(jù)緩存服務。
(6) (可選)調用n_cst_appmanager的of_SetDWCache函數(shù)關閉DataWindow cachi ng service 。
gnv_app.of_SetDWCache(FALSE)
通常你沒必要顯示的關閉DataWindow caching service 。PFC在刪除對象n_cst_dwcache時會自動的關閉它。
2. Debugging service
概要:
Debugging service 在應用程序遇到錯誤時會自動顯示錯誤信息。PFC的消息路由當發(fā)現(xiàn)需要調用的事件不存在時便會使用Debugging service顯示出錯信息。
重要說明:PFC debugging service 只是一個開發(fā)工具。在用戶的應用程序中不要開啟它。
使用方法
使用debugging service 可以幫助你在PFC的開發(fā)過程中解決問題。
(1) 調用n_cst_appmanager的of_SetDebug函數(shù)開啟Debugging service 。
gnv_app.of_SetDebug(TRUE)
(2) PFC的對象首先檢測應用程序的debugging狀態(tài),然后在適當?shù)那闆r下顯示錯誤信息。
(3) (可選)調用n_cst_appmanager的 of_SetDebug函數(shù)關閉Debugging service。
gnv_app.of_SetDebug(FALSE)
多數(shù)情況下,你不需要顯示的關閉Debugging service 。
3. Application preference service
概要:
你可以利用Application preference service保存、恢復應用程序、用戶的信息到INI文件或WINDOWS的
注冊表中。保存和恢復應用程序設置有如下兩個好處:
l_ 延續(xù)性:保存應用程序的設置可以使得用戶在下次使用軟件時可以看到他上次關閉軟件的樣子。也就是說用戶不必每次使用軟件時都重新設置他的軟件
環(huán)境。
l_ 容易維護:你可以無須更改n_cst_appmanager的代碼的情況下更新應用程序的設置。
PFC通過用戶自定義對象n_cst_apppreference提供Application preference ser vice 。
這個Service保存應用程序的如下信息:
用戶鍵(User key)
MicroHelp
Help File
Version
Logo bitmap
Copyright notice
DDETimeOut property
DisplayName property
DWMessage Title property
MicrohelpDefault property
RightToLeft property
ToolbarFrameTitle property
ToolbarPopMenuText property
ToolbarSheetTitle property
ToolbarUserControl property
Application preference service 同時保存如下的用戶信息
ToolbarText property
ToolbarTips property
User ID |
保存、恢復設置
Application perference service 在應用程序開啟的時候會自動恢復應用程序在關閉時保存的設置。這些信息可以保存到
注冊表中(只限于Windows95和Windows NT)或者INI文件中。你可以按照如下說明:
l_ 保存到
注冊表中:調用函數(shù)of_SetUserKey ,指定你需要保存的鍵。
l_ 保存到INI文件中:調用函數(shù)of_SetUserINIFile ,指定用于保存信息的INI文件名。
使用步驟:
(1) 調用n_cst_appmanager的of_SetAppPref函數(shù)開啟Application preference s ervice 。
gnv_app.of_SetAppPref(TURE)
(2) 依據(jù)不同的執(zhí)行平臺采用不同的方式保存應用程序信息。下面的例子就是在應用程序的構造事件中保存應用程序的信息。同時假設你已經在 n_cst_appmanager中建立好了應用程序信息鍵、用戶信息鍵、應用程序INI文件、用戶INI文件。
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_ap
ppref.of_SetUserINIFile(this.of_GetUserINIFile())
END IF |
(3) 調用函數(shù)of_SetRestoreApp和of_SetRestoreUser函數(shù)設置需要保存信息的類型:
this.inv_apppref.of_SetRestoreApp(TRUE)
this.inv_apppref.of_SetRestoreUser(TURE) |
4. Most recentily used object service
概要
你可以使用Most recentily used object service(最近使用對象Service)將最經使用的對象、表單列在文件菜單下。默認情況下只允許顯示5個最經使用對象。
但是,你可以改變這個數(shù)量。
PFC 通過n_cst_mru用戶自定義對象提供MRU Service(Most recentily uesd ob ject service)。
MRU Service在應用程序啟動時會自動的將應用程序關閉時保存的最經使用過的對象信息加載到應用程序中。這些信息可以保存到
注冊表或者INI文件中。你可以通過如下的方式:
l_ 保存到
注冊表中:調用函數(shù)of_SetUserKey函數(shù)確定要保存到
注冊表中的MRU信息。
l_ 保存到INI文件中:調用函數(shù)of_SetUserINIFile函數(shù)指定用于保存MRU信息的INI文件。
l_ 你必須還要額外編寫代碼:
為了使用MRU Service ,你必須在你想啟用MRU Service的窗口的兩個事件中編寫代碼。
l_ pfc_MRUProcess :在窗口開啟時加載MRU信息。
l_ pfc_PreMRUSave :在窗口關閉時保存MRU信息。
與PFC菜單的結合
PFC的 m_master菜單的FILE菜單包括了五個MRU菜單項,你還可以自己添加。
如果你的應用程序沒有使用PFC的菜單,那么請以 m_master為模板建立你自己的M RU菜單項。
使用MRU Service步驟
(1) 調用n_cst_appmanager中的of_SetMRU函數(shù)開啟MRU Service 。
gnv_app.of_SetMRU(TRUE)
(2) 調用n_cst_appmanager的函數(shù)of_SetUserKey(盡適用于WIN95與WINNT)或of
_SetUserINIFile函數(shù)(使用于所有的平臺)確定需要保留的信息。下面的例子假設你已經為n_cst_appmanager建立好了的用戶鍵(保存到
注冊表)或者INI文件(保存到INI文件)。下面的代碼位于應用程序管理器(n_cst_appmanager)的構造事件。
IF this.of_IsRegistryAvailable() THEN
this.inv_mru.of_SetUserKey(this.of_GetUserKey())
ELSE
this.inv_mru.of_SetUserINIFile(this.of_GetUserINIFile())
END IF
(3) Register IDs with the MRU service by calling the n_cst_mru of_Regis
ter function. An ID is the identifier that the window will use to retr
ieve information out of the MRU service. This is an example of code yo
u can add to the pfc_PreOpen event of the MDI frame window:
IF IsValid(gnv_app.inv_mru) THEN gnv_app.inv_mru.of_Register("myapp")
END IF
(4) Extend the pfc_MRUProcess event in each window that uses exclusive
processing, adding code to open the sheet passing the necessary argume
nts (be sure to add similar code to the frame window if you want to sp
ecify exclusive items on the frame menu):
Window lw_frame, lw_window n_cst_menu lnv_menu n_cst_mruattrib lnv_mru
attrib // Check parameters. IF IsNull(ai_row) THEN Return -1 END IF
IF NOT IsValid(gnv_app.inv_mru) THEN Return -1 END IF // Retrieve row
from DataStore. gnv_app.inv_mru.of_GetItem & (ai_row, lnv_mruattri
b) // Get the MDI frame, if necessary. lnv_menu.of_GetMDIFrame(this.me
nuid, lw_frame) OpenSheet(lw_window, & lnv_mruattrib.is_classname,
lw_frame) Return 1
Performing other actions in the pfc_MRUProcess eventTo see other types
of processing you can perform in the pfc_MRUProcess event, see the co
mments in the pfc_w_master pfc_MRUProcess event.5Extend the pfc_PreMRU
Save event in each window that uses the MRU service. In this event, po
pulate the n_cst_mruattrib object with the id, classname, key, item, a
nd MicroHelp to be saved:
anv_mruattrib.is_id = "myapp" anv_mruattrib.is_classname = this.ClassN
ame() anv_mruattrib.is_menuitemname = this.Title anv_mruattrib.is_menu
itemkey = this.ClassName() anv_mruattrib.is_menuitemmhelp = & "O
pens " + this.Title Return 1 6Extend the pfc_MRURestore event in eac
h window that uses the MRU service. In this event, set the ID of the i
nformation you want to display on the menu:
If IsValid(gnv_app.inv_mru) Then Return gnv_app.inv_mru.of_Restore
("myapp", This) End If |
5. Error message service
概要
Error Message service提供了許多用于顯示、紀錄應用程序的錯誤信息。你既可以顯示PowerBuilder提供的標準的Message對話框,也可以顯示PFC 的W_Message對話框。兩種顯示效果都具有如下的功能:
l_ 消息日志:將消息紀錄到文件中,支持多種平臺。PFC會自動的將嚴重級別大于某個值的消息紀錄到文件中。
l_ 支持MAPI:通過Email發(fā)出錯誤警告。PFC會自動將嚴重級別大于某個值的消息作為
郵件發(fā)出。
l_ 消息數(shù)據(jù)庫:通過已經定義好的形式(可以是數(shù)據(jù)庫或文件)來存取消息。定義好了消息格式,使得消息有一種標準的形式、消息的重復減到最少、容易查詢。
l_ 參數(shù)替代:消息可以具有參數(shù),這樣它會依據(jù)程序運行而變化。
l_ 不顯示,直接紀錄:消息可以不顯示直接紀錄到日志中。
l_ 注釋與打印:用戶可以打印消息,甚至可以增加注釋。對消息日志用于
郵件時非常有用的。
l_ 自動關閉:w_message過了數(shù)秒后會自動關閉。
W_message 位圖
如果你使用w_message ,位圖在運行時必須有效。
用法
Error service可以處理應用程序所有的錯誤信息。如果你打算將錯誤信息保存到數(shù)據(jù)庫中,你可以使用PFC.DB中關于消息的幾個表,或使用消息管道將它傳到你的數(shù)據(jù)庫中。
使用Messages表
大多數(shù)情況下,你應該將Messages表復制到你的數(shù)據(jù)庫中。這個表已經包含了PFC的錯誤信息格式。
使用步驟:
(1) 調用n_cst_appmanager的of_SetError函數(shù)開啟error message service(創(chuàng)建n_cst_error實例),下面的代碼位于n_cst_appmanager的pfc_Open事件:
this.of_SetError(TRUE)
(2) 定義錯誤消息的源:
l_ 如果消息源是文件,調用如下函數(shù):
this.inv_error.of_SetPredefinedSource(揷:/eisapp/eiserr.txt?
l_ 如果消息源是數(shù)據(jù)庫,調用如下函數(shù):
this.inv_error.of_SetPredefinedSource (itr_error)
消息源:當你使用文件作為消息源時,文件中必須包括PFC.DB中Messages表中的所有數(shù)據(jù)。同時列必須由TAB鍵隔開。
PFC uses predefined messages in certain situations. If you enable the
error message service and receive message display errors, make sure th
e error message source has been established correctly. Additional user
-defined messages must conform to the format of the messages table (al
so used by the d_definedmessages DataWindow object). |
l_ (可選)設置日志文件名(調用函數(shù)of_SetLogFile參數(shù)為空字符串可以不進行日志紀錄):
this.inv_error.of_SetLogFile(擟:/pb6/errlog.txt敚?
l_ (可選)設置用戶ID(用于日志文件):
this.inv_error.of_SetUser(this.of_GetUserID())
l_ (可選)設置什么類型的消息需要自動紀錄:
this.inv_error.of_SetNotifySeverity(5)
this.inv_error.of_SetLogSeverity(4) |
l_ (可選)如果你的應用程序使用了錯誤自動通告功能。你需要設置當前用戶的Email、密碼。還可以設置其他的Email用戶與密碼。下面的例子展示了如何設置Email ID與Password 。
this.inv_error.of_SetNotifyConnection(ims_mailsess) this.inv_error.of
_SetNotifyWho(is_autonotify) |
說明:以上的代碼都可以在n_cst_appmanager的pfc_Open事件中。
l_ 在應用程序的錯誤檢測中,使用函數(shù)of_Message顯示對話框。同時你還可以將它紀錄到日志中。函數(shù)of_Message可以使用數(shù)據(jù)庫中的消息,也可以動態(tài)的指定消息。下面的例子就是使用數(shù)據(jù)庫中的消息:
gnv_app.inv_error.of_Message
使用參數(shù)表(只限于已定義的消息)
(1) 在消息表中定義如下的數(shù)據(jù)。%運行時將被替換:
EIS1030 Unable to find the file % in %
(2) 定義一個參數(shù)數(shù)組:
String ls_parms[]
ls_parms[1] = 揕ogfile.txt?
ls_parm[2] = 揷:/windows/system?
(3) 調用of_Message ,傳遞參數(shù):
gnv_app.inv_error.of_Message(擡IS1030敚琹s_parms)
PFC在顯示消息時使用數(shù)組中的第一個元素替換第一個% ,第二元素替換第二個%。
6. Security service
概要
PFC的安全機制可以處理許多你的應用程序安全性問題。它包括應用程序管理員組件、安全對象(security object)n_cst_security 。
用法:在使用Security service時,你必須要定義用戶組與用戶,然后分別與窗口、菜單、用戶對象、控件相關聯(lián),然后再編寫代碼。
使用步驟:
(1) 定義用戶、用戶組。參考第七章擯FC Utilities?
為你的窗口控件、菜單、用戶對象、其他控件定義安全屬性。
(2) 調用n_cst_appmanager的of_SetSecurity函數(shù)創(chuàng)建安全對象this.of_SetSecurity(TRUE)
(3) 為安全對象建立一個事務對象。
Itr_sec = Create n_tr
Connect using itr_sec;
(4) 調用函數(shù)of_InitSecurity初始化安全對象。
This.inv_security.of_InitSecurity(itr_sec.擡ISAPP敚琯nv_app.of_GetUserID()
(5) 以上的代碼全部在n_cst_appmanager的pfc_Open事件中編寫。
(6) 應用程序關閉時,斷開事務對象的連接、刪除事務對象。以下的例子在n_cst _appmanager的pfc_Close事件中。
Disconnect using itr_sec;
Destroy itr_sec
7. 在你需要使用安全對象的窗口的Open事件或pfc_PreOpen事件中調用函數(shù)of_SetSecurity()
IF NOT gnv_app.inv_security.of_SetSecurity(this) THEN
MessageBox("Security","Unable to set security")
Close(this)
End if |
說明:你可以在其他對象(Datawindow、可視用戶對象、菜單,所有你想實現(xiàn)安全機制的對象)。
7. Transaction registration service
概要
Transaction registration service可以追蹤你的應用程序中的事務對象的使用過程。這個服務只對基于n_tr的對象有效。PFC使用n_cst_trregistration 對象實現(xiàn)Transaction registration service 。
用法
當應用程序中使用多個事務對象時,你應該使用Transaction registration service跟蹤所有的事務對象。當你的應用程序關閉時,該對象將會自動刪除所有已注冊的事務對象。使用n_tr的函數(shù) of_SetAutoRollback設置ib_autorollback的值。如果ib_SetAutoRollback的值為False ,則事務對象關閉時將會自動提交。如果ib_SetAutoRollback的值為True ,則事務對象關閉時會自動回滾。
啟動 Transaction registration service
l_ 調用n_cst_appmanager的of_SetTrRegistration函數(shù) gnv_app.of_SetTrRegistration(True)當應用程序關閉時,應用程序會自動刪除 Trasaction registration service 。
注冊事務對象:
l_ 調用n_cst_trregistration的of_Register函數(shù) gnv_app.inv_trregistration.of_Register(SQLCA) 控制當事務對象正處于連接時被刪除時的行為l_ 調用n_tr的of_SetAutoRollback函數(shù)SQLCA.of_SetAutoRollback(True)如果你設置為True ,同時該對象正處于連接狀態(tài),當它被刪除時Service會回滾該事務。如果你設置為False ,Service回提交該事務。盡管如此,你應該顯示的提交或回滾、斷開連接。
2 Datawindow服務
概要
大部分的PowerBuilder的應用程序都大量的使用了Datawindow控件。PFC因此提供了功能強大的Datawindow Services 。大部分的Service使用時只需一點代碼或者根本不需要編碼。PFC的Datawindow Servies實際上都是由一個公共的父類對象(不可視用戶自定義對象)繼承而來。這個父類對象包括了許多Service的函數(shù)、事件、實例變量。同時么每個Datawindow Service還有自己的函數(shù)、事件、實例變量。
訪問Datawindow Services
為了使用DataWindow Services,你應該建立基于u_dw的Datawindow對象。U_dw對象包括:
l_ 用于開啟、關閉Datawindow Services的函數(shù)。
l_ 用于調用各種Services的函數(shù)、事件、實例變量的引用變量。
l_ 調用Datawindow Service的函數(shù)、事件的Precoded事件、用戶事件
l_ 可供你編寫代碼的空事件在你的應用程序中所有的DataWindow控件都必須是u_dw的子類。
開啟DataWindow Services
只開啟Datawindow控件需要的Servie ,這樣才能將應用程序的負荷將到最小。以下表格列出了所有的Datawindow Service ,以及對應的對象。
DataWindow Service 對應的對象
Datawindow service的基類 n_cst_dwsrv
Dropdown search service n_cst_dwsrv_dropdownsearch
Filters service n_cst_dwsrv_filter
Find andreplace service n_cst_dwsrv_find
Linkage service n_cst_dwsrv_linkage
Multitable update service n_cst_dwsrv_multitable
Print preview service n_cst_dwsrv_printpreview
DataWindow property service n_cst_dwsrv_property
Querymode service n_cst_dwsrv_querymode
Reporting service n_cst_dwsrv_report
Required column service n_cst_dwsrv_reqcolumn
DataWindow resize service n_cst_dwsrv_resize
Row management service n_cst_dwsrv_rowmanager
Row selection service n_cst_dwsrv_rowselection
Sort service n_cst_dwsrv_sort |
8. DataWindow Services 的父類
概要
DataWindow Services的父類包括了所有DataWindow Services需要的Instance變量、事件、函數(shù)。PFC使用n_cst_dwsrv實現(xiàn)DataWindow Services的父類。
DataStore Service:DataStore Service的對象是n_cst_dssrv
用法
你可以使用這些Service實現(xiàn)如下功能
l_ 獲取、設置DataWindow信息
l_ 修改、獲取DataWindow腳本函數(shù)
l_ 默認DataWindow service
父類函數(shù)在子類中有效
因為n_cst_dwsrv是所有DataWindow services的父類,因此所有在n_cst_dwsrv的函數(shù)在它的子類中都有效。
開啟Basic DataWindow service
l_ 調用u_dw的of_SetBase函數(shù)
dw_emplist.of_SetBase(TRUE)
當Datawindow被刪除時u_dw會自動刪除該Service 。
訪問DataWindow
l_ 調用n_cst_dwsrv中的函數(shù)
l_ 定義類型為n_cst_conversion的變量
n_cst_conversion inv_conversion
因為n_cst_conversion是自動實例化,因此不需要使用Create或者Destroy語句。
調用轉換服務的函數(shù):
l_ 調用函數(shù)
下面的例子假設inv_conversion是實例變量:
String ls_checked
Ls_checked = inv_conversion.of_String(cbx_confirmed.Enabled)
MessageBox
7 日期/時間服務
概要
PFC的日期/時間提供了許多用于計算日期、時間的函數(shù)。例如,你可以使用of_SecondsAfter函數(shù)計算兩個時間之間的秒數(shù)。它對應的對象是n_cst_datatime 。
對象 n_cst_datatime對象是自動實例化,因此你無須使用Create或Destroy語句。
使用說明:
你可以使用日期/時間服務進行有關日期/時間的計算。該服務提供了以下函數(shù):
l_ 將Julian日期轉換成Gregorian日期
l_ 將秒數(shù)轉換成小時
l_ 將秒數(shù)轉換成天數(shù)
l_ 將Gregorian日期轉換成Julian日期
l_ 計算兩日期之間的年數(shù)
l_ 計算兩日期之間的月份
l_ 計算兩日期之間的周數(shù)
l_ 計算兩日期之間的秒數(shù)
l_ 計算兩日期之間的毫秒
l_ 判斷日期是否有效
l_ 判斷某日是否是平日(非周日)。原文:Determine if a date falls on a weekday
l_ 判斷某日是否是周末
l_ Halt processing until a specified date/time
你可以將n_cst_datetime定義成全局變量、實例變量、局部變量。
日期/時間函數(shù)使用說明 變量類型
貫穿整個應用程序 全局變量或者n_cst_appmanager的實例變量
針對一個對象 該對象的實例變量
針對一段代碼 局部變量
開啟日期/時間服務:
l_ 定義類型為n_cst_datetime的變量
n_cst_datetime inv_datetime
類型n_cst_datetime是自動實例化的,因此無須使用 Create或Destroy語句調用日期/時間服務的函數(shù):
l_ 直接調用函數(shù)
下面的例子假設 inv_datetime是實例變量
Long ll_seconds,ll_days
Ll_seconds = Long(sle_seconds.Text)
Ll_days = inv_datetime.of_Days(ll_seconds)
MessageBox(擠ate/Time敚琒 tring(ll_seconds)+ ?seconds is equal t
o ?+ String(ll_days) + ?days。摚?
8 文件服務
概要
PFC的文件服務使得你的應用程序可以具備
文件管理器功能。例如,你可以使用f_FileRename函數(shù)改變文件名稱。文件服務支持多種
操作系統(tǒng),針對各種
操作系統(tǒng)該服務會自動的調用相應的外部函數(shù)。它對應的對象是n_cst_filesrv 。
使用說明:
通過文件服務你可以使用如下操作:
l_ Assembling a concatenated filename 。
l_ 建立、刪除目錄。
l_ 讀、寫、重命名、復制文件。適用于大于32765字節(jié)的文件。
l_ 訪問文件信息,包括日期、時間。
l_ 在一個目錄下創(chuàng)建、排序文件。
你可以將n_cst_filesrv定義成全局、實例、局部變量。
使用情況 變量類型
貫穿整個應用程序 全局變量或者n_cst_appmanager的實例變量針對一個對象 對象的實例變量針對一段代碼 局部變量由于PFC會根據(jù)特定的平臺創(chuàng)建n_cst_filesrv的子類。因此它沒有使用PB的自動實例化功能。你必須顯示的調用Destroy語句刪除該對象。
開啟文件服務:
1. 定義類型為n_cst_filesve的變量
n_cst_filesrv inv_filesrv
2. 調用全局函數(shù)f_set_filesrv:
f_SetFilesrv(inv_filesrv,TRUE)
該函數(shù)會自動的建立對象inv_filesrv 。
3. 使用完畢后刪除對象
Destroy inv_filesrv
調用文件服務的函數(shù):
l_ 直接調用函數(shù)
該例子調用函數(shù)of_FileRead訪問文件信息。該例子假設inv_filesrv是實例變量:
Integer li_return
String ls_file[]
li_return = inv_filesrv.of_FileRead(sle_filename.text, ls_file)
CHOOSE CASE li_return
CASE ?
MessageBox("Error", "Error accessing file")
CASE ELSE
// File processing goes here
END CHOOSE |
刪除該服務:
l_ 使用DESTROY語句
DESTROY inv_filesrv
9 INI文件服務
概要
PFC的INI文件服務提供了許多讀、寫INI文件的函數(shù)。它對應的對象是n_cst_ini file。
使用說明:
你可以使用INI文件做到如下:
l_ 檢索INI文件中的所有鍵
l_ 檢索INI文件中的所有段
l_ 刪除INI文件中的所有行
l_ 刪除INI文件中一行
l_ 刪除INI文件中一段
你可以同時使用ProfileInt、ProfileString、 SetProfileString訪問INI文件。
INI文件服務對大小寫不敏感。
開啟INI文件服務:
l_ 定義類型為n_cst_inifile的變量:
n_cst_inifile inv_ini_handler
該類型屬于自動實例化,因此你無須調用Create與Destroy 。
使用INI文件服務:
l_ 調用n_cst_inifile的對象函數(shù):
String ls_keys[]
Integer li_count, li_size
Li_size = inv_ini_handler.of_GetKeys(gnv_app.of_GetAppINIFile(),?
CustApp s_keys)
Lb_keys.Reset()
For li_count = 1 to li_size
Lb_keys.AddItem(ls_keys[li_count])
Next |
10 數(shù)字服務
概要
PFC的數(shù)字服務提供的函數(shù)使得你可以處理二進制數(shù)。例如,你可以使用of_GetB it函數(shù)判斷一位是開還是關。
使用說明:
你可以使用數(shù)字服務中的函數(shù)做到:
l_ 判斷一位是開還是關
l_ 將十進制轉換成二進制
l_ 將二進制轉換成十進制
與Window SDK共同使用該對象:Windows SDK中許多函數(shù)都使用位返回值。因此你需要使用函數(shù)f_GetBit。
你可以將n_cst_numerical定義成全局、實例、局部變量使用說明 變量類型貫穿整個應用程序 全局變量或者n_cst_appmanager的實例變量針對一個對象 對象的實例的變量針對一段腳本 局部變量開啟數(shù)字服務:
l_ 定義類型為n_cst_numerical的變量
n_cst_numerical inv_numerical
類型n_cst_numerical自動實例化,你無須使用Create或者Destroy語句。
調用數(shù)字服務(numerical service)函數(shù):
l_ 直接調用函數(shù)
下面的例子假設 inv_numerical是實例變量:
Long ll_base10
String ls_binary
Ll_base10 = Long(sle_base10.text)
Ls_binary = inv_numerical.of_Binary(ll_base10)
MessageBox("Numerical", String(ll_base10) + " base 10 is equal to " +
String(ll_base10) + " base 10 is equal to " + ls_binary + " in binary.
") |
11 平臺服務
概要
PFC的平臺服務提供的函數(shù)使到你的應用程序可以使用特定平臺的函數(shù)。你可以使用該服務實現(xiàn)支持多平臺的應用程序,而無須在你的應用程序中加入有關平臺檢測的代碼。例如,你可以調用函數(shù) of_GetFreeMemory確定現(xiàn)在所剩的內存大小。平臺服務此時便會依據(jù)不同的平臺調用相應的外部函數(shù)而完成工作。該服務對應的對象是 n_cst_platform以及不同平臺的相應的子類。
打印與頁面設置對話框:PFC的平臺服務會根據(jù)不同的平臺作相應的調整。
使用說明:
平臺服務提供的函數(shù)有:
l_ 確定可用內存空間
l_ 確定可用資源空間
l_ 確定某一字符串的高度、寬度,單位是PBUs
你可以將 n_cst_platform定義成全局變量、實例變量、局部變量使用說明 變量說明貫穿整個應用程序 全局變量、n_cst_appmanager的實例變量針對一個變量 對象的實例變量針對一段代碼 局部變量平臺服務沒有使用自動實例化功能,因此你必須顯示的刪除n_cst_platform 。
在Macintosh上:在 Macintosh上函數(shù)of_GetTextSize無法使用。
開啟平臺服務:
(1) 定義類型n_cst_platform的變量:
n_cst_platform inv_platform
(2) 調用f_SetPlatform全局函數(shù)
f_SetPlatform(inv_platform,TRUE)
函數(shù)f_SetPlatform會自動建立該對象。
調用平臺服務函數(shù):
l_ 直接調用函數(shù)
下面的例子調用函數(shù)of_GetFreememory在狀態(tài)欄處顯示可用內存的大小。
Long ll_free_monery
ll_free_memory = inv_platform.of_GetFreeMemory()
gnv_app.of_GetFrame(). SetMicroHelp(擣ree memory:?+ String(ll_
free_memory)) |
刪除服務
l 調用 Destroy 語句
Destroy inv_platform
未完。。。
posted on 2010-07-01 21:35
Ke 閱讀(1706)
評論(0) 編輯 收藏 所屬分類:
powerBuilder