我在學習的程序中沒有在哪本書上看到過關于nvo,的詳細介紹,可能因為我看的書都比較初級吧.但在瀏覽我們公司所用的代碼時發現了一堆nvo的應用,我看不懂,也不知道這東西該怎么宣告,怎么呼叫.希望能得到這方面的知識,系統一點最好,或者能給推薦相關的書籍.另外,structure , uo ,ole 這些東西我都感到很頭疼.盼大蝦們不惜賜教,幫我理理思路,簡單介紹一下.謝謝,另外我看咱們論壇里人家求貼,都喊高分求貼的,雖然我沒多少分,我想順便問一下,怎么給人家分表示謝意?
uj5u.com熱心網友回復:
nvo=nonvisualobject 是PB 的custom class 一般是自行撰寫的功能舉例
pb擴充函式集
經過三天時間整理出每個函式的具體功能及作用,此函式集是PB開發不可缺少的好資料,值得收藏!
函式說明:
PowerBuilder 擴充函式集 提供了二十多個PB沒有提供的函式,主要是以用戶物件 (User Object)
方式封裝了一些API函式及用C語言開發的幾個外部函式。開發環境為PB 6.5和VC6。
PowerBuilder 擴充函式集
nvo_public_funtion 物件
一、應用相關函式
檢測應用是否已經運行 : uf_Application_IsRunning
取應用所在的路徑 : uf_Application_GetLocation
取應用的檔案名 : uf_Application_GetFileName
二、磁盤驅動器相關函式
取有效的盤符 : uf_Disk_GetAvailable
取指定驅動器的型別 : uf_Disk_GetType
取光驅盤符 : uf_Disk_GetCDRom
取指定磁盤的卷標 : uf_Disk_GetVolumeName
取指定磁盤的序列號 : uf_Disk_GetSerialNumber ('c:\') 僅C:盤有效
取指定磁盤的剩余空間 : uf_Disk_GetFreeSpace
判斷指定的盤符是否有效 : uf_Disk_IsAvailable
三、目錄相關函式
創建目錄 : uf_Directory_Create
洗掉目錄 : uf_Directory_Remove
判斷目錄是否有效 : uf_Directory_IsAvailable
取當前目錄 : uf_Directory_GetCurrent
取Windows目錄 : uf_Directory_GetWindows
取System目錄 : uf_Directory_GetSystem
取臨時目錄 : uf_Directory_GetTemp
取WIN.INI檔案目錄:uf_getwinini
四、檔案相關函式
拷貝檔案 : uf_File_Copy
洗掉檔案 : uf_File_Delete
移動檔案 : uf_File_Move
檔案更名 : uf_File_Rename
判斷檔案是否有效 : uf_File_IsAvailable
取檔案時間 : uf_File_GetDateTime
取檔案屬性 : uf_File_GetAttributes
設定檔案屬性 : uf_File_SetAttributes
五、字串相關函式
全部替換 : uf_String_ReplaceAll
右起查找 : uf_String_RightPos
六、其它函式
列印紙型設定 : uf_Printer_SetPaperSize
獲取默認列印機:uf_getdefaultprinter
設定默認列印機:uf_setdefaultprinter
取列印機的紙張資訊:UF_papersize
獲取中文字串的首字母拼音:uf_getfirstletter
取系統登錄用戶名 : uf_System_GetLogonName
設定視窗居中 : uf_Window_Center
設定系統日期時間 : uf_System_SetDateTime
檢測 IP 地址是否有效 : uf_Network_Ping
一、應用相關函式
boolean uf_Application_IsRunning()
檢測應用是否已經運行
引數 : 無
回傳值 : boolean
已經運行 : TRUE
沒有運行 : FALSE
string uf_Application_GetLocation()
取應用所在的路徑
引數 : 無
回傳值 : string
成功 : 應用所在的路徑
失敗 : NULL (空值)
string uf_Application_GetFileName()
取應用的檔案名
引數 : 無
回傳值 : string
成功 : 應用的檔案名
失敗 : NULL (空值)
二、磁盤驅動器相關函式
string uf_Disk_GetAvailable()
取有效的盤符
引數 : 無
回傳值 : string
包含有效盤符的字串
string uf_Disk_GetType(string as_RootPathName)
取指定驅動器的型別
引數 :
string as_RootPathName : 盤符或包含盤符的目錄名
回傳值 : string
回傳值 :
成功 :
REMOVABLE : 可移動設備
FIXED : 硬碟
REMOTE : 網路映射盤
CDROM : 光驅
RAMDISK : 記憶體虛擬盤
失敗 : NULL(空值)
string uf_Disk_GetCDRom()
取光驅盤符
引數 : 無
回傳值 : string
包含光驅盤符的字串.如果沒有找到光驅,回傳空串(不是NULL);如果系統中安裝了多個光驅,回傳包括多個光驅盤符的字串,如"FG"表示F盤和G盤都是光驅
string uf_Disk_GetVolumeName(string as_RootPathName)
取指定磁盤的卷標
引數 :
string as_RootPathName : 盤符或包含盤符的目錄名
回傳值 : string
成功 : 磁盤卷標
失敗 : NULL(空值)
string uf_Disk_GetSerialNumber(string as_RootPathName)
取指定磁盤的序列號
引數 :
string as_RootPathName : 盤符或包含盤符的目錄名
回傳值 : string
成功 : 磁盤序列號
失敗 : NULL(空值)
real uf_Disk_GetFreeSpace(string as_RootPathName)
取指定磁盤的剩余空間
引數 :
string as_RootPathName : 盤符或包含盤符的目錄名
回傳值 : real
成功 : 磁盤剩余空間
失敗 : -1
unsignedlong uf_Disk_IsAvailable(string as_RootPathName)
判斷指定的盤符是否有效
引數 :
string as_RootPathName : 盤符或包含盤符的目錄名
回傳值 : boolean
有效 : TRUE
無效 : FALSE
uj5u.com熱心網友回復:
nvo ole uo 這些都屬于PB設計規范命名規則簡單舉例
3.3物件及控制元件的命名規范
3.3.1物件命名規范:
Application應用 ZD_xxxx_ Window 視窗 w_xxxx_ Menu選單 m_xxxx_
UserObject用戶物件 u_xxxx_
Structure結構 s_xxxx_
Pipeline 管道 p_xxxx_
query 查詢 q_xxxx_
Project 專案 Proj_xxxx_
3.3.3函式的命名規范
Global Function全域函式 gf_xxxx_
Window Function視窗函式 wf_xxxx_
Menu Function 選單函式 mf_xxxx_
User Object Function 用戶物件函式 uf_xxxx_
Global External Function全域外部函式 gef_xxxx_
Local External Function區域外部函式 lef_xxxx_
3.3.4控制元件命名規范:
CheckButton cb_
CommandButton cb_
DataWindow dw_
DropDownListBox ddlb_
DropDownPictureListBox ddplb_
Eidt Mask em_
Graph gr_
GroupBox gb_
HScrollBar hsb_
ListBox lb_
line ln_
ListView lv_
MultiLineEdit mle_
OLE object ole_
Oval oval_
PictureButton pb_
PictureListBox plb_
RadioButton rb_
Recentangle r_
RoundRecentangle rr_
RichTextEdit rte_
Static Text st_
SingleLineEdit sle_
Tab tab_
TreeView tv
UserObject uo_
VScrollBar vsb_
說明:若以上述物件為基礎設計標準的用戶定義物件,則前綴前加 'u'。
uj5u.com熱心網友回復:
貴公司多半使用了PFCPFC是一組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的例子是如何進行工程預算和跟蹤系統的。
uj5u.com熱心網友回復:
nvo_XXX aaaa.fun()..........
uj5u.com熱心網友回復:
nvo 和 uo 區別不是很大 ,nvo 沒有界面的,一般是函式的一個集合 ,uo一般是可視的你可以看成 java中的類
uj5u.com熱心網友回復:
太強了!言語無法表達我此刻感激的心情!太感嘆了,咱兩名字就差一字,技術的差距怎么就這么大內!轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/97932.html
標籤:腳本語言
上一篇:PB匯入XML資料問題
下一篇:PB7 程式的XP界面
