教程鏈接:https://wenku.baidu.com/view/9730d1c7aa00b52acec7ca05.html?re=view&rec_flag=default&sxts=1565141830016
14章用戶自定義對象:
1、何為用戶對象:用戶對象是封裝了一組相關代碼和屬性、完成特定功能的可重用對象,用戶對象一般用於完成通用功能,
當應用程序需要某種反復使用的特性時應當定義用戶對象。
2、用戶對象作用:
①擴展系統原有對象的功能,增加新的使用方法;
②創建高度可重用的自定義部件,在一個或多個應用程序中反復使用,縮減開發和維護世界,提供開發效率;
③將其它語言開發的代碼嵌入Powerbuilder應用程序中。
3、用戶對象優勢:
①避免了在應用程序中不同地方編寫功能相同或相近代碼的麻煩,提高了應用程序的可維護性
②用戶對象可以將一組總之一起使用的可視控件組合在一起,構成一個完成特定功能的控件,應用程序可以在需要的地方隨時使用它
③用戶對象提供了構造具有一致外觀的可視控件的方法
④用戶對象能夠將相關功能封裝在一起
⑤用戶對象允許開發人員擴展某些PowerBuiler系統對象(如事務對象)的功能。
4、用戶對象分類:
(1)可視用戶對象(Visual User Object),如按鈕、編輯框等具備可視的外觀,主要完成應用程序與用戶自己的信息交流
①標准可視用戶對象(Standard Visual User Object)
②定制可視用戶對象(Custom Visual User Object)
③外部可視用戶對象(External Visual User Object)
(2)類用戶對象(Class User Object),沒有屏幕表現形式,主要用於封裝和完成一定的業務邏輯。
①標准類用戶對象
②定制類用戶對象
類用戶對象沒有可視成分,使用時需要在代碼中創建它的一個實例,具體步驟:
①說明類用戶對象類型的變量,使用CREATE語句創建該對象的一個實例。
②在變量的整個作用域中,代碼都能訪問該對象的屬性、事件、函數,就像使用系統預定義對象那樣(如事務處理對象SQLCA)
③不再使用該對象時,使用DESTROY語句刪除該對象,以釋放它所占的內存。
例:u_datastore myhds //聲明u_datastore 類型的變量 myds
myds=CREATE u_datastore //創建用戶對象實例myds
myds_DataObject='d_user_search' //將數據窗口對象與類用戶對象聯系起來
myds.SetTransObject(SQLCA) //設置類用戶對象使用的事務對象
ret=myds.Retrieve(math) //檢索數據
... //應用程序所需的其它處理
DESTROY myds //使用后刪除用戶對象,釋放內存
用戶對象的命名通常以“u_”為前綴,用戶對象控件或實例的命名通常以“uo_” 為前綴。
4.1.1、標准可視用戶對象 Standard Visual
是對PB現有控件的擴充,在現有控件基本功能的基礎上增加了應用程序需要的功能。繼承了原始控件的各種特征,包括屬性、事件和函數。
調用觸發事件或函數的語句:
系統事件是枚舉類型:Clicked!, 用戶自定義事件是字符串:"u_key"
4.1.2、定制可視用戶對象 Custom Visual
是將多個控件及可是用戶對象組合成一個整體,完成一定的功能和操作。
可視用戶對象中控件的大小、位置等屬性不能在窗口上改變,只能在定制可視用戶對象畫板中進行修改。
使用窗口中的代碼控制定制可視用戶對象中的控件時,語法為:用戶對象名+控件名+屬性或函數,例子:uo_1.cb_ok.text="確定" 為對象uo_1的控件cb_ok的text屬性賦值
4.1.3、外部可視用戶對象 External Visual
實際上就是在PB應用程序中使用其它語言編寫的第三方控件。
4.2.1 標准類用戶對象
繼承一個內部系統對象的所有特征,在此基礎上進行功能修改(類似標准可視用戶對象)
類用戶對象沒有可視成分,使用時需要在代碼中創建它的一個實例,具體步驟:
①說明類用戶對象類型的變量,使用CREATE語句創建該對象的一個實例。
②在變量的整個作用域中,代碼都能訪問該對象的屬性、事件、函數,就像使用系統預定義對象那樣(如事務處理對象SQLCA)
③不再使用該對象時,使用DESTROY語句刪除該對象,以釋放它所占的內存。
例:u_datastore myhds //聲明u_datastore 類型的變量 myds
myds=CREATE u_datastore //創建用戶對象實例myds
myds_DataObject='d_user_search' //將數據窗口對象與類用戶對象聯系起來
myds.SetTransObject(SQLCA) //設置類用戶對象使用的事務對象
ret=myds.Retrieve(math) //檢索數據
... //應用程序所需的其它處理
DESTROY myds //使用后刪除用戶對象,釋放內存
4.2.2 定制類用戶對象
定制類用戶對象是用戶自己設計的對象,用於封裝不需要可視特性的處理過程。這些對象並不繼承自某個PB對象或控件,完全由用戶通過自定義實例變量、函數、事件來實現。
定制用戶可視對象只有兩個系統預定義事件:Constructor 和Destructor。
刪除用戶對象只能在"Library" 工作區才能實現。
調用觸發事件或函數的語句:
Object_name.[Trigger|Post][Static|Dynamic] EVENT event_name([para_list])
object_name.TriggerEvent(event_name)
object_name.PostEvent(event_name)
系統事件是枚舉類型:Clicked!, 用戶自定義事件是字符串:"u_key"