亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pfc詳細教程.txt

?? PB常用技巧 PB常用技巧 PB常用技巧
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
關于PFC 

這一章介紹的是PFC的基礎,PB的首要概念,面向對象的內容,并附有一個PFC的 
組成圖。 

理解PFC: 
PFC是一組PowerBulider的對象,它可以由用戶自己定制,擴充。你可以象搭積木 
一樣使用它,使程序緊密的連接起來。PFC還包括許多有用的對象,例如:debug對 
象。 
PFC是由PowerBuilder提供的PB對象,并支持PowerScript 源代碼。它使用的是先 
進的PowerBuilder面向對象技術,其一個特征是面向服務設計。確使你的程序占 
用最少的計算機資源。 
PFC使用了許多先進的編碼技巧,你可以使用PowerBuilder的PowerScript編譯器 
來檢查對象,實例,事件,和繼承PFC父類的函數。 
這本書說的是PFC的概念(PFC是什么東西和你為什么使用它)還有使用信息(如何計 
劃.使用PFC) 
為了更詳細的了解PFC的對象,實例,事件,和繼承PFC父類的函數,請看PFC Object 
Reference 。 

理解PowerBuilder: 
使用PFC可以創建先進的面向對象式的PowerBuild類庫。要想掌握PFC和它的面向 
對象特征,首先需要了解PowerBuilder和它的面向對象特征。這一節將告訴你應 
該熟悉PowerBuilder的基本概念。 
PFC原是為建類庫準備的,但并不是不讓你用它創建應用程序。通過看PowerBuild 
er User's Guide可以完全了解的PowerBuilder的概念。 

PowerBuilder類庫和對象: 
PFC是作為PowerBuilder Libraries(PBLS)發行的。PBLs包括你用于寫程序的父類 
和派生類對象。在使用任何PFC對象之前,你一定要在你的應用程序庫的搜索路徑 
中把PFC類庫加進去。PowerBuilder在執行程序時通過搜索路徑找到程序所引用的 
對象。 

PB標準對象 用途 
Windows PowerBuilder應用程序和它的用戶之間的聯系界面。 
Menus 用戶在當前活動窗口用來搜索命令的表。 
DataWindow objects 用于接收,實時處理數據。 
User objects 由用戶自己定義的對象(一次定義可以重復使用)。 
User objects 有兩種類型: 
(一):Visual user objects (可視化用戶對象) 
一個可視化用戶對象是一個可以重復使用的可視化控制,或者是一批預先確定的可 
視化控制.PFC包括兩種可視化用戶對象類型. 
1.標準的可視化用戶對象類: 
PFC提供了一套豐富的標準的可視化用戶對象.每個PFC的標準的可視化用戶對象都 
相當于一個PowerBuilder的窗口控件.這些對象包括以PFC服務預想確定完全的綜 
合操作。 特別值得一提的是u_dw DataWindow 用戶對象,這是以PFC服務來提供 
廣泛的綜合功能。 
2.用戶自定義的可視化用戶對象 
PFC也提供了用戶自定義的可視化用戶對象,這些對象包括一組窗口控件,并提供 
先進的函數用在某些特別情況。 (PFC沒有使用外部用戶對象和VBX用戶對象,要 
想進 一步了解可視化用戶對象,請看"PowerBuilder User's Guide") 
(二):Class user objects(非可視用戶對象類) 
一個非可視用戶對象是一個用來實現非可視的處理時使用的控件。PFC包括兩種非 
可視用戶對象類型。 
1.標準的非可視用戶對象: 
標準的非可視用戶對象是繼承 PowerBuilder內嵌的系統對象而來。PFC提供了許 
多標準的非可視用戶對象,例如:處理事務,錯誤對象,和其他所有的擴展系統對 
象。 
2.用戶自定義的非可視用戶對象: 
用戶自定義的非可視用戶對象是繼承 PowerBuilder非可視對象類而來,它把數據 
和代碼進行封裝。這種類型的用戶對象允許你從SCRATCH定義一個對象。 
PFC用Class user objects來執行它的許多服務以及提供這些服務對象的函數。它 
也提供?reference variables(引用變量),何謂 rdference variables呢?即是 
一個對象指針。你可以用它來存取一個對象的實例變量,函數,事件。 

Functions(函數): 
PowerBuilder支持全局函數和對象函數。PFC通過user_object function執行它的 
處理。一個函數就是執行一些處理的PowerScript語句的集合,你可以傳遞數據或 
者是什么也不傳,它來返回一個值。 
詳細信息冊參考PFC Object Reference。 

Events and user events(事件和用戶事件): 
PowerBuilder的Windows,user objects,contols,都有一些預先設定的事件。PFC 
通過定義用戶事件為許多PFC 對象增加事件。事件可以接受數據和返回值。共有 
三種PFC 事件: 

事件類型 觸發時間 
PowerBuilder預先設定的事件 某個動作導致操作系統調用事件 
預先編好代碼的用戶事件 某個動作(例如選擇一個菜單)導致PFC觸發用戶事件 

空的用戶事件(可以加入代碼) 某個動作(例如選擇一個菜單)導致PFC觸發用 
戶事件 
除非另有說明,本書的event都指的是這三種。 

Function and events compared (函數和事件比較) 

函數和事件在許多方面都是相似的: 
(1)他們都可以接收數據,返回值; 
(2)他們都由PowerBuilder語句構成; 
(3)他們都可以被調用,觸發,傳遞。 
但他們還是有些不同的: 
使用特征 函數 事件 
調用一個不存在的 將會出現運行時錯誤 TriggerEvent返回-1 
覆蓋父類腳本 直接覆蓋父類腳本 可以擴展或者覆蓋 
訪問 可以是Public、Private、Protected 永遠是Public 
重載 可以重載 不可以重載 

面向對象式的設計 
面向對象的編程工具支持三個基本規則:inheritance(繼承),encapsulation 
(封裝),polymorphism(多態)。 

如何使用PFC擴展層: 
在PFC中沒有類庫完全適合你的需要,你可以代表性的修改PFC來滿足你的程序的 
需要。假如沒有PFC擴展層,就會出現一個問題:當PFC版本升級時,新版本的PF 
C恢復該這些修改,而你不得不用手工改變。 

一個特別的擴展層: 
PFC產生一個擴展層是通過繼承所有的層實現的。所有的擴展對象都在單獨的PBL 
S,這在PFC升級時不會影響。 

內容 祖先層 
Application and global services PFCAPPSRV.PBL 
DataWindow services PFCDWSRVPBL 
Visual and standard class user objects PFCMAIN.PBL 
Utility services PFCUTIL.PBL 
Window services PFCWNSRV.PBL 

祖先層的類庫中的對象包括所有的實例變量,事件,函數;擴展層的類庫中的對 
象是相應祖先層類庫中的對象的不可修改的子類。即使是繼承,也可以訪問祖先 
的實際變量,事件和函數。 
通過PowerBuilder Bowser來察看子類的對象的實際變量,事件和函數。 

使用擴展層有二個優點: 
1. 你可以增加一些點,部門,還有程序邏輯。 
2. 不會影響版本升級。 

舊版本對象: 
PFCOLD。PBL Library包含舊的對象。如果你有一個存在的PFC程序,你有可能需 
要把他加在你的library list. 

注意: 
你要通過修改擴展層的對象來定制PFC程序。千萬不要輕易修改祖先對象。你的程 
序中的對象要使用擴展層的對象并且繼承擴展層的窗口。 

迅速開始: 
在用PFC編程時,程序經常需要修改,存取,以及從擴展層中繼承對象。PFC裝置 
中有一套擴展庫(PFC Quickstart Libraries)。它包括擴展層的基本功能,使 
你的程序快速發展。 

PFC命名規則: 
PFC遵循以下命名規則: 
Level Name 
PFC層對象 用前綴pfc_ 
擴展層對象 和它的祖先有同樣的名字但沒有前綴pfc_ 

例如:DataWindow selection service object的祖先是pfc_n_cst_dwsrv,擴展層 
的子類是 
n_cst_dwsrv.Pfc_n_cst_dwsrv 包括所有服務的代碼。n_cst_dwsrv 是不可修改 
的子類(你可以在假如程序指定的實例變量和代碼。)。 

PFC定義的用戶事件: 
PFC定義用戶實踐也用前綴pfc_prefix.這使得你的應用程序的用戶事件和PFC 的 
用戶事件更加容易。 

PFC文檔使用擴展層名字 
當指定一個服務對象時,PFC文檔總是用擴張層命名。例如:當論述基類窗口時這 
書指向w_master不是pfc_w_master.但要記住,w_master的實際變量,事件和可用 
函數實際上是在pfc_w_master定義的。 
PFC命名習慣詳細資料請看PFC Object Reference 

我們不難想到: 
PFC的對象繼承允許你在每一層假如擴展邏輯。例如:pfc_w_sheet是從w_master 
繼承的,w_master的實際變量,函數,你加在它的事件在它的子類窗口中都已存 
在。 

如何加擴展層 
擴展層通過PFC升級類有效的實現應用程序內部的重用和單個程序的重用。但是, 
在大部門或者是多部門合作時,一定要考慮好擴展的標準,方法,注意部門的規 
則和商業規律。 
如果你是在一個組織里使用PFC,你要考慮創建一個新層(包括這個組織的所有的 
變量函數,事件)。應用程序還是使用PFC擴展庫的對象,可是調用實例變量,事 
件,函數的祖先變了。 

PFC構成: 
PFC是由以下構成的: 
l 一套PBLS 
l 一個數據庫 
l Quickstart PBLS 
l 實例代碼 
l 一個簡單的應用程序 
Localized PFC(局部化的PFC) 
局部化的PFC 將會在PFC新版本公布后升級。 

The PFC PBLs 
PFC是分布在PBLS包含的祖先對象和PBLS擴展層包含的對象。每個祖先對象擴張層 
包含提供以下服務的對象 
Libraries Contents 
PFCAPSRV.PBLPFEAPSRV.PBL 應用程序管理器,應用程序服務對象和全局服務對象 
PFCMAIN.PBLPFEMAIN.PBL 標準可視化用戶對象,自定義可視化用戶對象,標準用 
戶對象類。 
PFCUTIL.PBLPFEUTIL.PBL 有用的對象和服務。 
PFCWNSRV.PBLPFEWNSRV.PBL 窗口服務,包括用戶對象和有用的窗口。 
PFCOLC.PBL 舊的用戶對象。(基層和擴展層的對象) 

使用library畫筆: 
使用library畫筆來看到PFC中所有對象 

PFC 數據庫 
PFC裝載了pfc.db本地數據庫。這個數據庫包括以下幾個表: 
Table Usage 
Messages 錯誤信息服務。 
Security_apps 安全服務。 
Security_groupings 安全服務。 
Security_info 安全服務。 
Security_template 安全服務。 
Security_users 安全服務。 
PFC本地數據庫是由開發者預先設定的,如果你要使用錯誤信息服務和安全服務一 
定要在你的數據庫中復制指定的表。連接”Deploying database tables” 

The PFC Quickstart PBLs 
使用PFC Quickstart libraries用來是程序配置和運行迅速。他們包括經過挑選 
的PFC擴展層對象的保護子集。 
做一個PFC Quickstart libraries備份,你就有了后援了。 

The PFC code example 
使用它是為了了解PFC的對象和服務。學習如何編碼并且實現PFC的基本功能。Th 
e PFC Quickstart有廣泛的參照和使用資料。 

The PFC sample application 
使用PEAT可以看到PFC的例子是如何進行工程預算和跟蹤系統的。


PFC編程基礎


概要: 
這一章闡述了 PFC 編程的基本技巧,同時也告訴了你如何開始運用 PFC 編寫應 
用程序。 


設置應用程序管理器 
首先建立一個PFC應用程序的第一步就是配置應用程序以及建立應用程序管理器- 
-n_cst_appmanager。應用程序管理器將替代原來的應用程序對象。原來在應用程 
序對象中編寫的腳本將全部改寫在應用程序管理器中。應用程序管理器中同時還 
通過實例變量、函數來維護應用程序的屬性。其中有框架窗口、應用程序與用戶 
的INI文件或注冊鍵以及幫助文件等。 

注意: 
使用分開的物理文件 
每個獨立的應用程序都必須擁有自己獨立的一套文件。你不可以共享父類文件, 
也就是那些以PFC開頭的文件。這是由PFC的內部繼承關系而決定的。 
例如,假設應用程序1與應用程序2都擁有它們自己的一套擴展的PFC庫文件,但 
是它們共享父類文件(PFC庫文件)。這時應用程序1在自己的PFE(PFC擴展庫) 
的w_master中增加了一個函數名為of_SetData。這樣這個函數將在w_master的所 
有子類中都有效,這些子類是pfc_w_main,pfc_w_frame,pfc_w_sheet 等。而這 
些對象恰恰在這兩個應用程序共享的父類文件(PFC庫文件)中。這樣當應用程序 
2重新生成應用程序時(regenerate)由于應用程序2的PFE文件中沒有of_SetDat 
a函數。這樣w_master的所有子類中的關于of_SetData函數的指針都將被刪除。這 
樣當應用程序1運行時將會導致運行時錯誤與編譯錯誤。 


具體步驟 

1. 打開應用程序畫筆。 

2. 定義庫文件列表。 
PFCAPSRV.PBL 
PFCDWSRV.PBL 
PFCMAIN.PBL 
PFCUTIL.PBL 
PFCWNSRV.PBL 
PFEAPSRV.PBL 
PFEDWSRV.PBL 
PFEMAIN.PBL 
PFEUTIL.PBL 
PFEWNSRC.PBL 
PFCOLD.PBL(如果你的應用程序是使用老版本的PFC庫那么請增加該文件到庫列表 
中) 

3. 在應用程序畫筆中打開腳本畫筆,定義n_cst_appmanager類型的全局變量gnv 
_app。 
n_cst_appmanger gnv_app 
這個變量名必須是gnv_app,因為PFC的對象、函數、事件都需要這個n_cst_appm 
anager或它的子類的全局變量—gnv_app。 

4. 增加如下代碼到應用程序對象的OPEN事件中。它的用途是創建n_cst_appmana 
ger、調用pfc_Open事件。 
gnv_app = Create n_cst_appmanager 
gnv_app.Event pfc_Open(commandline) 

5. 增加如下代碼到應用程序對象的CLOSE事件中。 
gnv_app.Event pfc_Close() 
Destroy gnv_app 

6. 增加如下代碼到應用程序對象的SystemError事件中。調用pfc_SystemError事 
件。 
gnv_app.Event pfc_SystemError() 

7. 關閉應用程序畫筆,保存所作的修改。 

8. 打開用戶自定義對象畫筆。在PFEAPSRV.PBL中找到n_cst_appmanager并打開, 
或者是它的子類。 

9. 在n_cst_appmanager的構造事件(Constructor Event)中調用它的函數來初 
始化關于軟件版本號、公司、和INI文件的實例變量。 

10. 在 n_cst_appmanager的pfc_Open事件中打開你所想要的應用程序Service 。 

你所想打開的Service 調用函數 
Application preference of_SetAppPreference 
DataWindow caching of_SetDWCache 
Error of_SetError 
Most recently used object of_SetMRU 
Transaction registration of_SetSecurity 
Debug of_SetDebug 

11. 在pfc_Open事件中增加打開你的初始窗口的代碼,例如框架窗口(Frame Wi 
ndow)或者調用顯示快閃窗口的of_Splash()函數。 

12. (可選)增加代碼到pfc_PreAbout,pfc_PreLogonDlg,pfc_PreSplash事件 
中,用于定制關于對話框(About box)、登錄對話框(Logon box)、快閃窗口 
(splash screen)。 

13. (可選)增加代碼到pfc_idle,pfc_ConnectionBegin,pfc_ConnectionEnd 
事件中。 
l_ 在應用程序對象的idle事件中調用pfc_idle事件。 
l_ 在應用程序對象的ConnectionBegin事件中調用pfc_ConnectionBegin事件。 

l_ 在應用程序對象的 ConnectionEnd事件中調用pfc_ConnectionEnd事件。 

14. 保存n_cst_appmanager 

如何顯示快閃窗口 
非常簡單,只需在pfc_Open事件中,在打開第一個窗口的代碼之前寫上如下代碼 
this.of_Splash(1) 
Open(w_tut_frame)(根據不同的應用程序有不同的變化!) 

如何顯示登錄窗口 
1. 在框架窗口的Open事件中調用of_LogonDlg函數: 
Integer li_return 
li_return = gnv_app.of_LogonDlg( ) 
IF li_return = 1 THEN 
this.SetMicroHelp("Logon successful") 
ELSE 
MessageBox("Logon", "Logon failed") 
Close(this) 
End If 
Of_LogonDlg函數將顯示w_logon對話框,同時還會提示輸入用戶名、密碼,當用 
戶點擊OK按鈕時還會觸發n_cst_appmanager的pfc_Logon事件。 
同樣,你也可以在n_cst_appmanager的pfc_Open事件中的打開框架窗口之后立即 
調用Of_LogonDlg函數。但是絕對不要在Of_Splash之后立即調用Of_LogonDlg 。 


2. 在n_cst_appmanager的pfc_logon事件中編寫登錄到數據庫的代碼。這個例子 
假設有一個INI文件,它包含了所有的需要登錄到數據庫的信息,除了用戶名、密 
碼以外。同時還假設你已將SQLCA的默認類型改為n_tr(PFC制定的書屋對象類型 
)。 
Integer li_returnString ls_inifile, ls_userid, ls_password 
ls_inifile = gnv_app.of_GetAppIniFile() 
IF SQLCA.of_Init(ls_inifile,"Database") = -1 THEN 
Return -1 
END IF 
// as_userid and as_password are arguments 
// to the pfc_Logon event 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
fc2成人免费人成在线观看播放 | 国产中文字幕精品| 欧美日韩1234| 无码av免费一区二区三区试看 | 91精品麻豆日日躁夜夜躁| 亚洲电影你懂得| 日韩午夜三级在线| 国精产品一区一区三区mba视频 | 高清av一区二区| 欧美国产精品久久| 91视频免费观看| 亚洲国产精品视频| 日韩免费视频一区二区| 国产成人欧美日韩在线电影| 中文字幕亚洲电影| 8v天堂国产在线一区二区| 黄色精品一二区| 国产精品久久久久久久浪潮网站| 色视频成人在线观看免| 日本怡春院一区二区| 亚洲国产精品高清| 欧美日韩午夜影院| 国产成人高清在线| 一区二区三区毛片| 欧美精品一区二区精品网| 丁香激情综合五月| 亚洲午夜一区二区| 久久久www成人免费毛片麻豆| av一区二区不卡| 蜜臀精品一区二区三区在线观看 | 中文字幕在线播放不卡一区| 欧美日韩一区二区电影| 国产精品69毛片高清亚洲| 亚洲精品欧美综合四区| 精品毛片乱码1区2区3区| 色婷婷综合久久久久中文一区二区| 日韩电影在线观看网站| 中文字幕一区二区三区蜜月| 欧美一区二区三区免费视频| 99久久精品99国产精品| 免费av成人在线| 一区二区在线观看视频 | 在线观看网站黄不卡| 国产剧情在线观看一区二区| 亚洲国产乱码最新视频| 国产精品国产三级国产三级人妇 | 国产网红主播福利一区二区| 欧美视频一区二区三区在线观看| 床上的激情91.| 蜜臀久久久99精品久久久久久| 亚洲精品v日韩精品| 久久精品欧美日韩精品| 日韩欧美在线123| 欧美专区亚洲专区| 色综合天天综合网天天狠天天| 国产一区二区三区四| 日产精品久久久久久久性色| 一区二区三区中文在线| 国产精品二区一区二区aⅴ污介绍| 精品国免费一区二区三区| 欧美日韩情趣电影| 日本道色综合久久| 93久久精品日日躁夜夜躁欧美| 国产精品一区二区免费不卡| 免费成人你懂的| 日本中文字幕一区二区视频| 亚洲成人综合在线| 亚洲国产欧美日韩另类综合 | 欧美中文字幕一区二区三区| av网站一区二区三区| 国产成人午夜电影网| 国产成人综合网站| 国产成人在线视频播放| 国产自产2019最新不卡| 狠狠色综合播放一区二区| 日本aⅴ精品一区二区三区 | 国产在线国偷精品产拍免费yy| 日本欧美韩国一区三区| 日本成人在线网站| 日韩二区三区四区| 久久精品av麻豆的观看方式| 麻豆成人久久精品二区三区小说| 蜜乳av一区二区| 久久疯狂做爰流白浆xx| 国产在线视视频有精品| 国产精品18久久久久久vr| 精品无码三级在线观看视频| 国产一区二区毛片| 成人精品小蝌蚪| 色哦色哦哦色天天综合| 欧美日韩精品免费观看视频| 欧美猛男超大videosgay| 91精品国产入口在线| 亚洲精品在线网站| 国产亚洲成av人在线观看导航| 国产精品视频免费| 亚洲一区在线观看免费 | 开心九九激情九九欧美日韩精美视频电影| 免费看日韩精品| 国产一区不卡视频| 94色蜜桃网一区二区三区| 欧美系列一区二区| 欧美α欧美αv大片| 国产精品免费av| 亚洲韩国精品一区| 激情综合色播激情啊| 成人黄动漫网站免费app| 日本道色综合久久| 日韩亚洲欧美成人一区| 欧美激情自拍偷拍| 亚洲一区二区三区四区在线| 久久99国产精品久久| 国产成人欧美日韩在线电影| 91福利国产成人精品照片| 日韩亚洲国产中文字幕欧美| 国产精品色婷婷久久58| 亚洲第一久久影院| 国产盗摄精品一区二区三区在线| 91国产视频在线观看| 日韩网站在线看片你懂的| 国产精品入口麻豆九色| 亚洲午夜激情网站| 国产91精品久久久久久久网曝门| 91免费看片在线观看| 日韩女优制服丝袜电影| 亚洲免费观看在线视频| 久久99精品久久久| 色老汉一区二区三区| 久久久精品人体av艺术| 午夜精品福利视频网站| av色综合久久天堂av综合| 日韩免费高清av| 亚洲国产综合色| 波多野结衣91| 26uuu亚洲综合色| 日韩精品电影一区亚洲| av在线不卡电影| 国产日韩一级二级三级| 日韩精品电影在线观看| 欧美在线观看18| 国产精品你懂的在线欣赏| 精品一区精品二区高清| 欧美男男青年gay1069videost| 亚洲视频资源在线| 国产成人在线色| 精品理论电影在线| 天天影视网天天综合色在线播放| 99久久久精品免费观看国产蜜| 久久这里只有精品视频网| 日韩电影在线免费| 欧洲亚洲精品在线| 亚洲免费观看在线观看| 99久久久免费精品国产一区二区| 久久免费午夜影院| 久久99久久99精品免视看婷婷 | 成av人片一区二区| 国产三区在线成人av| 美女网站一区二区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲欧洲日本在线| 99国产精品国产精品毛片| 国产欧美日韩激情| 国产精品一区二区果冻传媒| 精品久久久久久最新网址| 蜜臀精品一区二区三区在线观看| 91精品国产高清一区二区三区| 亚洲高清久久久| 欧美色图在线观看| 一区二区三区日韩在线观看| 日本韩国欧美三级| 亚洲综合色婷婷| 精品视频在线视频| 偷偷要91色婷婷| 欧美一区二区网站| 久久成人av少妇免费| 精品久久人人做人人爽| 国产成人午夜高潮毛片| 国产精品久久久久影院色老大| 成人av综合一区| 伊人色综合久久天天| 欧美日韩一本到| 免费看欧美女人艹b| 亚洲精品一区二区三区影院| 国产黄色91视频| 国产精品久久久久精k8| 在线观看网站黄不卡| 日本不卡在线视频| 久久毛片高清国产| 97精品电影院| 日韩精品一区第一页| 337p粉嫩大胆色噜噜噜噜亚洲| 懂色av一区二区夜夜嗨| 亚洲欧美偷拍三级| 欧美精品99久久久**| 国产在线国偷精品产拍免费yy| 国产精品伦理在线| 欧美日韩免费观看一区二区三区| 美女爽到高潮91| 最新高清无码专区| 56国语精品自产拍在线观看|